8.4 通过拆表和整理数据实现规范化
既然表已经准备好了,那么只需要把带有用户界面并且能够读写数据的应用程序做出来,就大功告成了。可实际上却并非如此,如果就这样使用这张表,那么在数据库的运行过程有可能会产生一些问题。DBMS既然已经提供了用于手工输入数据的工具,那么我们就先试着录入几条测试数据看看(如图8.6所示)
图8.6 用一张表时产生的问题
(维士忌一词的错误写法)
产生了两个问题。第一个问题是用户不得不多次录入相同的数据,就像第一条和第二条记录中的数据“日经次郎、东京都千代田区、03-2222-2222”。录入重复数据不仅使应用程序的操作变得繁琐,更浪费了存储空间。另一个问题是录入的名称不同指代的却是相同的商品,就像第三条记录中,应该输入“威士忌”却错误地输入了“维士忌”,如果让计算机来处理,这种情况就会被识别为不同的商品。也就是说,如果仅使用一张表,就会和应用卡片型数据库(每条记录对应一张卡片)时面临相同的问题。
为了解决这类问题,在设计关系型数据库时,还要进行“规范化”。所谓规范化,就是将一张大表分割成多张小表,然后再在小表之间建立关系,以此来达到整理数据库结构的目的。通过规范化,可以形成结构更加优良的数据库。DBMS提供了可视化的工具,用户仅仅通过简单的操作就可以进行规范化(如图8.7所示)
图8.7 经过规范化处理的酒铺数据库
规范化的要点是在一个数据库中要避免重复存储相同的数据。因此在本例中,把酒铺的数据分为“商品表”、“顾客表”和“销售记录表”三张表,然后再在它们之间建立关系(用被细线连接起来的短杠表示)。通过这样的处理,既省去了多次重复录入相同的顾客姓名、住址、电话号码的麻烦,又能防止把相同的商品名称输入成不同名称的错误。如图8.8所示,酒铺的数据被分别存储到了三张表中。表格的最后一行只是表示在这里可以输入下一条记录,并非实际存在着这样一条记录
图8.8 将数据分别存储到三张表中
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论