- 2
- 0
- 约5.68千字
- 约 36页
- 2020-01-13 发布于湖北
- 举报
数据库建模实践指南(1) 本章导读 数据库设计既是信息系统建设必备的基础,又是软件工程实践的主要内容,所以计算机及软件专业方向的大学生、研究生和软件工程师,都要特别重视数据库设计。 数据库设计虽然是一个理论问题,但更主要的是一个实践问题。 本章的特点是,将数据库设计的理论与实践紧密相结合,并通过案例,说明数据库设计中需要解决的各种问题。 本章对读者的要求 数据库设计规范化理论及其反思 1972年,E.F.Codd博士提出了规范化理论来指导数据库的设计,从而开辟了数据库史上新的一页。规范化是通过一系列的测试,来检查设计的关系是否符合某一范式的要求。 后来越来越多的范式被提出。一个范式是在另一个范式之上再做进一步的约束而形成的。 但是,很少有人对这些范式及研究范式的人提出过疑问、进行过反思。 范式 第一范式(First Normal Form,1NF):表的每个列包含且只包含一个值。 第二范式(Second Normal Form,2NF):一个第一范式的表中,每个非主键列都可以从主键列得到(完全依赖于主键)。 第三范式(Third Normal Form,3NF):一个第二范式表中的所有非主键列的值,能且只能从主键列中得到(不得传递)。 第三范式已经解决了大部分日常使用中会出现的操作异常,剩下的是那些不常出现的操作问题,要解决这些问题,需要更高的范式进行约束。 数据库规范化设计的优点 规范化设计为数据库提供了许多的好处: ???????大大改进数据库的整体组织;??减少了数据冗余 ???????增强了数据的一致性;?????? ? ?增加数据库设计的灵活性 能减少从用户、开发人员到数据库管理员的工作量,使他们能把更多的精力投入到其他工作中。 数据冗余的有效控制,能简化数据结构,节省数据的存储空间,数据的不一致性也大大改善,同时也减轻应用程序为了维护数据的一致性而所花费的代价。在进行业务扩充与改造时,数据库的修改也变得相对容易。 数据库规范化设计的缺点 对数据库设计进行一定程度的规范化,的确能优化数据库的操作,但不必要的规范化却会带来不必要的麻烦,降低性能,例如多表联合查询的查询速度要比单表查询慢,有时为了处理事务与数据查询,规范化的数据库比非规范化的数据库要占用更多的CPU,内存和I/O等等。 规范化的目的,只是为了提升数据库的性能。当发现规范化后反而造成了不必要的开销,从而降低了数据库的性能,此时,你应该退一步,相应降低范式的级别,才会看到海阔天空的世界。 关系数据库规范化设计理论的反思 反思1:让数据库规范化设计的理论,从数学家的书本中或课堂上解放出来,变成软件分析师或设计师的强大设计武器。 解放方法:就是要通俗理解各级范式。所谓通俗理解,就是从工程应用上去理解,从数据库设计上去理解,而不要从抽象的数学上(函数依赖、多值依赖、连接依赖等)去理解。 关系数据库规范化设计理论的反思 反思2:数据库规范化设计理论的目标或实质,就是要在数据库设计中实现“三化”,即“属性原子化、主键原子化、实体原子化”,或者说是“列原子化、键原子化、表原子化”。其中,最难的是“实体原子化”,第三范式以上的各级范式,实质上都是为了解决“实体原子化”的问题。 关系数据库规范化设计理论的反思 反思3:要辩证地看待“三化”思想。在实际设计中,为了提高数据库的运行性能,有时要进行一定程度的反规范化设计,即适当增加冗余,达到以空间换时间的目的。这就叫做理论联系实际、实事求是。 理解了这三个反思,就能将深奥的数据库规范化设计理论,变成通俗易懂的数据库设计实践指南,就能成为一个企业派的数据库分析与设计专家。 关系数据库规范化设计理论的实质 通过上述讨论,得出如下定理。 关系数据库规范化设计理论的实质,就是在数据库设计中实现属性原子化、主键原子化、实体原子化。 由此可见,从软件工程师的角度来看,关系数据库规范化设计的理论,归根到底就是一句话:“属性原子化、主键原子化、实体原子化,再加上适当的数据冗余”,即“三个原子化加上适当的冗余”。 只要记住这句话,软件工程师在关系数据库设计中就不会迷失方向。 数据库设计评价 2.功能评价 (1)描述事务 要求将每个事务的需求描述存档,检查模型是否提供了事务处理所需要的所有信息(实体,关系和其他属性)。例如图书馆信息管理系统,现在要求查询读者当前所借阅图书的列表,这就要求数据库中存有读者信息,借阅信息并且这两个实体间要有联系才能完成这样一个操作。 (2) 使用事务路径 需要设计人员对业务相当的熟悉,熟悉整个业务的流程,包括一些细节的东西,然后在脑海中模拟程序的执行路径,预测得到在执行的过程中需要使用数据库中的哪些元素,这对设计人员有较高的要求。 数据库设
原创力文档

文档评论(0)