zoukankan      html  css  js  c++  java
  • 数据库设计的几点建议

    数据库设计的几点建议:

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

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

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

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

  • 相关阅读:
    倒计时显示
    Global.asax实现屏蔽ip和图片防盗链
    同一账号不能同时登陆
    javascript中defer的作用
    javascript焦点图
    asp.net自定义分页
    GridVew linkbutton点击时获取点击行label的绑定值
    内存对齐
    深入.NET托管堆(Managed Heap)
    内存对齐1
  • 原文地址:https://www.cnblogs.com/luoht/p/1699002.html
Copyright © 2011-2022 走看看