数据库设计的几点建议

数据库设计的几点建议:

1. 表必须拥有标识符。这是基本规则,每个表应该拥有唯一的行标识符,以及可让表的记录和记录间有所区别的列或列的集合。每个表都应该拥有一个标识符列,而且每条记录的标识符的值都是唯一的,此行标识符称为主键。

2. 表应该只存储单一实例类型的数据。若在表中存储太多信息,可能导致无法对数据库进行有效、可靠的管理。举例来说,在SQL Server2005的范例数据库AdventureWorks中,销售订单和客户信息存储在单独的表中。若将销售订单和客户信息放在同一表中,这种设计可能会导致一些问题。例如,每笔销售订单可能需要重复加入和存储客户信息(姓名和地址),这需要使用额外的数据库存储空间。此外如果客户地址变更,每笔销售订单的信息也需要随之变更。而且,如果从SalesOrderHeader表移除客户的最后一笔销售订单,就有可能会遗失该客户的所有信息。

3. 不要过度使用允许Null值的列。Null值代表没有值,虽然在表中可以定义允许Null值的列,在某些特定状况中,允许Null值可能很有用,但是要谨慎使用它。因为Null值需要特殊处理,并且会增加数据操作的复杂度。当表中包含了许多允许Null值的列,并且没有存储任何数据值时,建议考虑将这些列存储到另一张表内,在连接至主表。这让主表在设计上变得简单,并且仍然可以处理存储此信息时的突发事件。

4. 避免在列中存储多值,或是有多个特性相同的列。如果要在一个列中存储多个数据,或是一行有多个特性相同的列(例如TelephoneNumber1和TelephoneNumber2),就可以考虑将重复的数据放在其他表内,并且连接会主表,举例来说,AdventureWorks数据库有一个存储产品信息的Production.Product表,一个厂商信息Purchasing.Vendor表以及一个Purchasing.ProductVendor表。第三个表只存储产品的标识符和产品厂商的标识符。此种设计可让有一个以上供货商的产品,不需要修改表的定义,也不需要为单一厂商的产品分配多余的存储空间

clip_image002

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-630632/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16436858/viewspace-630632/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值