数据库设计规范化的五个要求的内容.docVIP

数据库设计规范化的五个要求的内容.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通常情况下, 可以从两个方面来判断数据库是否设计的比较规。 一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少。 若符合这两个条件, 则可以说明这个数据库的规化水平 还是比较高的。 当然这是两个泛泛而谈的指标。 为了达到数据库设计规化的要求, 一般来说,需要符合以下五个要求。 要求一:表中应该避免可为空的列 虽然表中允许空列,但是,空字段是一种比较特殊的数据类型。数据库在处理的时候, 需要进行特殊的处理。 如此的话, 就会增加数据库处理记录的复杂性。 当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多。 所以,虽然在数据库表设计的时候,允许表中具有空字段,但是,我们应该尽量避免。 若确实需要的话, 我们可以通过一些折中的方式, 来处理这些空字段, 让其对数据库性能的影响降低到最少。 一是通过设置默认值的形式, 来避免空字段的产生。 如在一个人事管理系统中, 有时候字段可能允许为空。 因为不是每个人都可以记住自己的。 而在员工报到的时候, 可能没有带在身边。所以,字段往往不能及时提供。为此,字段可以允许为空,以满足这些特殊情况的 需要。但是,在数据库设计的时候,则可以做一些处理。如当用户没有输入容的时候,则把这个字段的默认值设置为 0 或者为 N/A 。以避免空字段的产生。 二是若一表中, 允许为空的列比较多,接近表全部列数的三分之一。而且,这些列在大部分情况下,都是可有可无的。若数据库管理员遇到这种情况,笔者建议另外建立一副表, 以保存这些列。 然后通过关键字把主表跟这副表关联起来。 将数据存储在两个独立的表中使得主表的设计更为简单,同时也能够满足存储空值信息的需要。 要求二:表不应该有重复的值或者列 如现在有一个进销存管理系统, 这个系统中有一产品基本信息表中。 这个产品开发有时 候可以是一个人完成, 而有时候又需要多个人合作才能够完成。 所以,在产品基本信息表产 品开发者这个字段中,有时候可能需要填入多个开发者的名字。 如进销存管理中, 还需要对客户的联系人进行管理。 有时候, 企业可能只知道客户一个 采购员的。 但是在必要的情况下,企业需要对客户的采购代表、仓库人员、 财务人员共同进 行管理。因为在订单上,可能需要填入采购代表的名字 ;可是在出货单上,则需要填入仓库 管理人员的名字等等。 为了解决这个问题, 有多种实现方式。但是, 若设计不合理的话在,则会导致重复的值 或者列。如我们也可以这么设计,把客户信息、联系人都放入同一表中。为了解决多个联系 人的问题,可以设置第一联系人、第一联系人、第二联系人、第二联系人等等。若还有第三 联系人、第四联系人等等,则往往还需要加入更多的字段。 可是这么设计的话, 会产生一系列的问题。 如客户的采购员流动性比较大, 在一年换了 六个采购员。 此时,在系统中该如何管理呢 ?难道就建立六个联系人字段 ?这不但会导致空字 段的增加,还需要频繁的更改数据库表结构。明显,这么做是不合理的。也有人说,可以直 接修改采购员的名字呀。可是这么处理的话,会把原先采购订单上采购员的名字也改变了。 因为采购单上客户采购员信息在数据库中存储的不是采购员的名字, 而只是采购员对应的一 个编号。 在编号不改而名字改变了的情况下, 采购订单上显示的就是更改后的名字。 这不利 于时候的追踪。 所以,在数据库设计的时候要尽量避免这种重复的值或者列的产生。 笔者建议, 若数据 库管理员遇到这种情况, 可以改变一下策略。 如把客户联系人另外设置一表。 然后通过客户 ID 把供应商信息表跟客户联系人信息表连接起来。也就是说,尽量将重复的值放置到一独 立的表中进行管理。然后通过视图或者其他手段把这些独立的表联系起来。 要求三:表中记录应该有一个唯一的标识符 在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个 ID 号来唯一的标 识行记录,而不要通过名字、编号等字段来对纪录进行区分。每个表都应该有一个 ID 列, 任何两个记录都不可以共享同一个 ID 值。另外,这个 ID 值最好有数据库来进行自动管理, 而不要把这个任务给前台应用程序。否则的话,很容易产生 ID 值不统一的情况。 另外,在数据库设计的时候,最好还能够加入行号。如在销售订单管理中, ID 号是用 户不能够维护的。但是, 行号用户就可以维护。如在销售订单的行中, 用户可以通过调整行 号的大小来对订单行进行排序。通常情况下, ID 列是以 1 为单位递进的。但是,行号就要 以 10 为单位累进。如此,正常情况下,行号就以 10、20、30 依次扩展下去。若此时用户需 要把行号为 30 的纪录调到第一行显示。此时,用户在不能够更改 ID 列的情况下,可以更改 行号来实现。如可以把行号改为 1,在排序时就可以按行号来进行排序。如此的话,原

文档评论(0)

183****6506 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档