欢迎来到天天文库
浏览记录
ID:12632641
大小:51.50 KB
页数:6页
时间:2018-07-18
《如何设计数据库表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、关系型数据库理论可能是20世纪60年代和70年代存储系统先锋的救星,但是从那是开始它就成了许多数据开发人员的毒药,就是因为现代数据库系统发展得如此之好,以至于它将其关系型支柱对开发人员隐藏了。设计良好的关系型数据库很容易使用、很灵活,并且能够保护数据的有效性。而设计不良的数据相反仍然能够发挥相当的作用,但是最终可能会导致数据的无效、错误或者丢失。 开发人员有一些专用的规则,叫做范式(normalforms),他们根据这些规则来创建设计良好的数据库。在这里,我将通过创建一个用于保存书籍信息的简单数据库来探讨一下范式。 确定实体和元素
2、 设计数据库的第一步是做你的家庭作业并确定你所需要的实体。实体是数据一种类型的概念集。通常只从一两个实体开始,再随着你数据的规范化而增加列表。对于我们的示例数据库,它看上去就好像我们只需要一个实体——书。 在确定了所需要实体的清单之后,你下一步就需要为每个实体创建数据元素(也就是说,你需要保存的信息)的清单。收集这样的信息有多种途径,但是最有效的可能就是依赖你的用户了。向你的用户询问他们日常工作的情况,要求查看当前完成他们工作所需要的各种表格和报告。例如,订单上可能会列出你创建销售应用程序所需要的许多数据元素。 我们的书籍实体没有书
3、面表格和报告可用,但是下列元素清单将有助于我们开始设计这个数据库: {Title,Author,ISBN,Price,Publisher,Category} 很重要的一点是,要注意,把我们这里要用的实体移动到元素的过程并不能适用于所有状况。你所需要的实体不会总是像我们书籍示例那样清楚,所以你可能要从数据元素的一长串清单开始,在后面你会根据实体来划分元素。 正规化的头几步 一旦有了实体清单(表格)和数据元素(字段),你就准备好让关系型数据库理论运作了。这个理论的主要推动力是规范化——删除任何重复的组和冗余的数据,并把它们放到
4、两个或者更多相关表里的过程。你并不是一定需要拥有一个以上的表格,但是你的数据简单到只需要一个表格的机会并不多。 你应该小心地检查数据(这些数据会出现在多条记录里)和依赖性错误的实体和元素清单,并把已损坏的字段移动到不同的表格里。例如,你可能列出同一个作者的多本书,并在数据库里重复了作者的名字。当你认为会一次又一次地看到相同的数据值时,你就应该考虑把这个字段移动到另一个表格里了。 要记住,在这一点上,你只是在操作潜在表格的列表,而不应该真正地创建这个表格:现在还是要用笔和纸来列表。 范式简介 数据库规范化的过程非常著名,所
5、以有正式的规则来保证规范化数据库的建设。这些规则有七条,叫做范式,而在大多数情况下头四条就够用了: 第一范式(1NF)——这条规则有几个要求,包括:无多值项目(multivalueditem)和重复组(repeatinggroup);每个字段都是原子型的(atomic),也就是说每个字段必须包含可能的最小数据元素;以及表格含有关键字(key)。 第二范式(2NF)——表格必须按照1NF来规范化。所有的字段必须引用(或者描述)主键值。如果主键基于一个以上的字段,那么每个nonkey字段必须取决于复杂键(complexkey),而不仅仅是
6、一个没有键的字段。不支持主键的nonkey字段应该被移动到另一个表格里去。 第三范式(3NF)——表格必须符合1NF和2NF的要求。所有的字段都必须相互独立。任何描述nonkey字段的字段都必须被移动到另一个表格里。 Boyce-Codd范式(BCNF)——一定不能存在依赖于nonkey的字段。这条规则实际上是3NF的一个子规则,用于捕捉可能会通过进程的依赖性。这一点相当的抽象,一开始是很难应用的。 以上的规则很精确,但是技术定义以及规范化的规则能够被简化成下面几点: 每个字段必须尽量小。 每个字段只能包含一个数据项目。
7、每条记录都必须是唯一的。 注意重复的条目。 每个字段都必须完全支持主键,而且只支持主键。 下一步该做什么? 应用这些规范化规则,尤其是1NF的几个要求,将会是个很需要技巧的过程。正如你会在下面内容里看到的,我会开始真正地把范式应用到实力数据库上,在进行了其他规范化的步骤之后,你就会重新回到1NF。关系型数据库的理论最早可以追溯到E.F.Codd博士1970年的论文《大型共享数据库的数据关系模型》,在这篇文章里,他总结出了七条抽象的规则,叫做范式(normalform),用来帮助创建设计良好的数据库。这七条规则的前四条——第一范式(
8、FirstNormalForm,1NF)、第二范式(2NF)、第三范式(3NF)和Boyce-Codd范式(BCNF)——在大多数情况下已经够用了。 这些范式是非
此文档下载收益归作者所有