C#基础之SQL Server(5)数据库的设计
(一)数据库设计的基本步骤
1) 数据库设计的重要性
- 节省数据的存储空间;
- 能够保证数据的完整性,方便进行数据库应用程序的开发;
2)基本步骤:
<1> 需求分析:
- 通过调研,了解客户的实际需求;
- 总结分析客户所需要的管理系统, 究竟要处理哪些数据;
![]()
<2> 标识对象(实体)并设计对象的属性
- 对象(实体)将来映射为数据库中的数据表;
- 对象的属性,映射为数据表的字段;
- 对象应该具有唯一的标识(ID);
![]()
<3> 确定对象之间的映射关系:
- 对象之间通过外键映射关系,减少数据冗余;
- 对象之间的映射关系是通过对象唯一标识建立的;
- 常见的对象映射关系有一对一和一对多或者多对多;
![]()
(二)数据库的设计的检验与模型设计
1)数据库设计合理性检验:
- 表结构设计的合理性是数据库设计的关键;
- 能够避免数据冗余;
- 能够解决数据库操作异常;
![]()
注意:不能存在重复性的数据;
2)数据库三范式原则
- 范式:是具有最小冗余的表结构;
- 应用三范式原则,保证各个数据结构设计的合理性;
![]()
<1> 第一范式(1st NF)
- 第一范式:目标是确保每列的原子性(即不可再分的最小数据单元)
- 第一范式一般都能满足;
- 常见的第一范式不满足情况:地址、姓名(有时候需要分开);
<2> 第二范式(2nd NF)【重点】
- 第二范式:要求每个表只描述 一个实体的属性;
例如:
<3> 第三范式(3rd NF)
- 第三范式:要求实体各属性之间不能具有直接的依赖关系;
- 满足条件:如果一个关系满足2NF,处理主键列之外,其他列之间都不具有直接的依赖关系,则满足第三范式;
注意:使用第二、第三范式的时候,为了保证实体之间存在必要的关系,往往需要将独立的实体和当前实体通过外键关联;
结果:
- 规范化以后,使用Viso 软件创建数据库模型,之后按照数据库模型,实现数据库:
3)三范式与数据库性能
<1> 第三范式的应用后数据库的变化
- 使得实体被最大限度的分割成为若干小实体;
- 实体增多,同时实体之间的关系变得复杂,数据分布在多个表中;
- 数据的查询和同价变得复杂,多表连接查询会适当减低查询性能;
<2> 为满足某种商业目标,数据库性能比规范数据库更重要
- 在给定的表中添加额外的字段,可大量减少需要从中搜索信息所需时间;
- 比如,在高考成绩中插入“成绩总分”列,方便查询;
<3> 进行规范化的同时,还需要综合考虑数据库的性能
- 三范式与数据库的性能要根据实际要求权衡;
- 根据实际需要增加或减少冗余;