设计数据库
设计一个数据库主要包含几个步骤如下:
1.了解系统,建立模型,建立对象关系模型
标识符,关系字段
2.规范化
表的逻辑设计(表的关系)是优化关系数据库的核心
作用:合理的规范化会提高性能,,SQL Server 查询优化器可有效地在表间选择快速、有效的联接
- 使排序和创建索引更加迅速。
- 聚集索引的数目更大。有关详细信息,请参阅聚集索引设计指南。
- 索引更窄、更紧凑。
- 每个表的索引更少。这可提高 INSERT、UPDATE 和 DELETE 语句的性能。
- 空值更少,出现不一致的机会更少。这可增加数据库的紧凑性。
* 若逻辑数据库已经形成,再优化的方法是 将大表有选择性地进行规范化处理成若干小表。
3.获得设计良好的数据库
- 唯一标识符;
- 表应只存储单一类型实体的数据; (否则浪费数据空间,容易丢失数据)
- 表应避免可为空的列。 如果null 多,尽可能将null 列放到另一张表中。 因为 会对可空列进行特殊处理,会加大数据库复杂性
- 表不应有重复的值或列。 如telehpone1,telephone2
4.数据完整性 (实体,域完整性,引用完整性,用户自定义完整性)
实体完整性 通过 UNIQUE 索引、UNIQUE 约束或 PRIMARY KEY 约束,强制表的标识符列或主键的完整性
域完整性 列的取值范围或者类型。 可以强制域完整性限制类型(通过使用数据类型)、限制格式(通过使用 CHECK 约束和规则)或限制可能值的范围(通过使用 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则)。
引用完整性 通过 FOREIGN KEY 和 CHECK 约束,来约束表之间的关系。 (如果某列值发生变化,那么得保证引用此列值的所有相关数据都得发生变化)
用户定义完整性
5.对数据库对象使用扩展属性 (比如规定某字段所需要的格式。 对象比别分为0,1,2)
扩展属性可以用于:
- 指定表、视图或列的标题。这样,应用程序便可以在显示该表、该视图或该列的信息的用户界面中使用同一标题。
- 为列指定输入掩码,以便应用程序可以在运行 Transact-SQL 语句之前验证数据。例如,可以在扩展属性中指定邮政编码或电话号码列的所需格式。
- 指定数据在列中的显示格式规则。
- 记录应用程序可显示给用户的特定数据库对象的描述。例如,这些描述可用在数据字典应用程序或报表中。
- 指定某列显示的大小和窗口位置。
另: MSSQL 对表名的大小写敏感
6. 估计数据库的大小
估计表的大小
定义估计用于存储表和相关索引中的数据的空间量所需的步骤和计算。
估计堆的大小
定义估计用于存储堆中的数据的空间量所需的步骤和计算。堆是没有聚集索引的表。
估计聚集索引的大小
定义估计用于存储聚集索引中的数据的空间量所需的步骤和计算。
估计非聚集索引的大小
定义估计用于存储非聚集索引中的数据的空间量所需的步骤和计算。