loading请求处理中...

如何实现数据库设计规范化?_mysql数据库设计学习部分内容

2021-12-01 06:24:10 阅读 11650次 标签: sql数据库数据库设计 作者: a454466904
    在数据库设计和操作保护数据库时,要害的步骤即是要保证数据准确地分布到数据库的表中。 运用准确的数据结构,不只便于对数据库进行相应的存取操作,并且能够极大地简化应用程序的其他内容(查询、窗体、报表、代码等)。准确进行表设计的正式称号即是"数据库规范化"。后边咱们将来说说如何实现数据库设计规范化?它的要求都有什么?

如何实现数据库设计规范化?_mysql数据库设计学习部分内容


    一:表中应该避免可为空的列;
    虽然表中允许空列,但是,空字段是一种比较特殊的数据类型。数据库在处理的时候,需要进行特殊的处理。如此的话,就会增加数据库处理记录的复杂性。当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多。
  所以,虽然在数据库表设计的时候,允许表中具有空字段,但是,我们应该尽量避免。若确实需要的话,我们可以通过一些折中的方式,来处理这些空字段,让其对数据库性能的影响降低到最少。
    二:表不应该有重复的值或者列;
    如现在有一个进销存管理系统,这个系统中有一张产品基本信息表中。这个产品开发有时候可以是一个人完成,而有时候又需要多个人合作才能够完成。所以,在产品基本信息表产品开发者这个字段中,有时候可能需要填入多个开发者的名字。
  如进销存管理中,还需要对客户的联系人进行管理。有时候,企业可能只知道客户一个采购员的姓名。但是在必要的情况下,企业需要对客户的采购代表、仓库人员、财务人员共同进行管理。因为在订单上,可能需要填入采购代表的名字,可是在出货单上,则需要填入仓库管理人员的名字等等。
  为了解决这个问题,有多种实现方式。但是,若设计不合理的话,则会导致重复的值或者列。如我们也可以这么设计,把客户信息、联系人都放入同一张表中。为了解决多个联系人的问题,可以设置第一联系人、第一联系人电话、第二联系人、第二联系人电话等等。若还有第三联系人、第四联系人等等,则往往还需要加入更多的字段。
    所以,在数据库设计的时候要尽量避免这种重复的值或者列的产生。笔者建议,若数据库管理员遇到这种情况,可以改变一下策略。如把客户联系人另外设置一张表。
    三: 表中记录应该有一个唯一的标识符 
  在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个ID号来 唯一的标识行记录,而不要通过名字、编号等字段来对纪录进行区分。每个表都应该有一个ID列,任何两个记录都不可以共享同一个ID值。另外,这个ID值最 好有数据库来进行自动管理,而不要把这个任务给前台应用程序。否则的话,很容易产生ID值不统一的情况。
  另外,在数据库设计的时候,最好还能 够加入行号。如在销售订单管理中,ID号是用户不能够维护的。但是,行号用户就可以维护。如在销售订单的行中,用户可以通过调整行号的大小来对订单行进行 排序。通常情况下,ID列是以1为单位递进的。但是,行号就要以10为单位累进。如此,正常情况下,行号就以10、20、30依次扩展下去。若此时用户需 要把行号为30的纪录调到第一行显示。此时,用户在不能够更改ID列的情况下,可以更改行号来实现。如可以把行号改为1,在排序时就可以按行号来进行排 序。如此的话,原来行号为30的纪录现在行号变为了1,就可以在第一行中显示。这是在实际应用程序设计中对ID列的一个有效补充。这个内容在教科书上是没 有的。需要在实际应用程序设计中,才会掌握到这个技巧。
    四:数据库对象要有统一的前缀名 
  一个比较复杂的应用系统,其对应的数据库表往往以千计。若让数据库管理员看到对象名就了解这个数据库对象所起的作用,恐怕会比较困难。而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到所需要的数据库对象而头疼。
   为此,笔者建立,在开发数据库之前,最好能够花一定的时间,去制定一个数据库对象的前缀命名规范。如笔者在数据库程序设计时,喜欢跟前台应用程序协商,确定 合理的命名规范。笔者最常用的是根据前台应用程序的模块来定义后台数据库对象前缀名。如跟物料管理模块相关的表可以用M为前缀;而以订单管理相关的,则可 以利用C作为前缀。具体采用什么前缀可以以用户的爱好而定义。但是,需要注意的是,这个命名规范应该在数据库管理员与前台应用程序开发者之间达成共识,并 且严格按照这个命名规范来定义对象名。
  其次,表、视图、函数等最好也有统一的前缀。如视图可以用V为前缀,而函数则可以利用F为前缀。如此数据库管理员无论是在日常管理还是对象引用的时候,都能够在最短的时间内找到自己所需要的对象。
    五:尽量只存储单一实体类型的数据 
  这里将的实体类型跟数据类型不是一回事,要注意区分。这里讲的实体类型 是指所需要描述对象的本身。笔者举一个例子,估计大家就可以明白其中的内容了。如现在有一个图书馆里系统,有图书基本信息、作者信息两个实体对象。若用户 要把这两个实体对象信息放在同一张表中也是可以的。如可以把表设计成图书名字、图书作者等等。可是如此设计的话,会给后续的维护带来不少的麻烦。
  如当后续有图书出书时,则需要为每次出书的图书添加作者信息,这无疑会添加额定的存储空间,也会添加记载的长度。并且若作者的状况有所改动,如住址改动 了以后,则还需要去更改每本书的记载。若这个作者的图书从数据库中全部删去以后,这个作者的信息也就化为乌有了。很明显,这不契合数据库设计规范化的需 求。
 遇到这种状况时,笔者主张能够把上面这张表分解成三种独立的表,分别为图书基本信息表、作者基本信息表、图书与作者对应表等等。如此设计以后,以上遇到的一切问题就都引刃而解了。
     一品威客网汇聚了数百万专业的综合性网站资讯型网站团购网站电子商务网站宣传展示型网站手机WAP网站程序功能开发数据库设计接口开发服务器系统等优秀威客人才,只要您在网站发布任务需求,就能够吸引众多威客给您献上最好的创意服务。

推荐更多与“如何实现数据库设计规范化?_mysql数据库设计学习部分内容”相关推荐:

 java网站开发 | 外贸网站建设 | vs2010网站开发 | 手机wap网站开发 | 企业制作wap网站

 网站开发流程 | 团购网站开发 | 数据库设计方法 | 商城jsp网站开发 | wap网站开发教程

 手机网站制作 | 网站开发框架 | 微信3g网站开发 | 数据库设计注意点|  数据库设计原则




 

数据库设计公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答

 
数据库设计相关任务
DESIGN TASK 更多
为APP设计一款logo

¥1200 已有192人投标

车辆服务公司logo设计

¥1600 已有120人投标

生活用纸外包装设计

¥1000 已有5人投标

卡通防蚊喷雾详情页设计+主图

¥1000 已有0人投标

电动车充电桩设计

¥3000 已有1人投标

3D图设计

¥100 已有1人投标