数据库规范化:优化关系数据库设计 (关系数据库的规范化)

随着信息化时代的到来,数据库已成为企业信息管理的重要基础设施。对于一个大型企业来说,数据库中包含海量的数据,只有以合理化的方式对其进行管理,才能有效提高企业运作效率。数据库的规范化是实现合理化管理的重要手段之一,它可以提高数据的一致性和可维护性,减少数据冗余和错误。

站在用户的角度思考问题,与客户深入沟通,找到细河网站设计与细河网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖细河地区。

概述

数据规范化是指通过一系列的规则和操作,将一个不规范的数据库设计转化为规范化的数据库设计,以达到简化数据结构的目的。数据规范化的基本原则为:每个记录只包含一个实体的信息;每个属性只包含一个数据项的信息;记录之间的重复信息以关联方式处理。通过数据规范化的处理,可以将原本复杂的数据结构变得简单,易于理解和维护。

与此同时,规范化还可以避免冗余数据的出现,从而减少存储空间的占用。例如,一个订单表中包含了许多客户信息,如果不进行规范化处理,每个订单记录都会包含相同的客户信息,导致数据冗余,浪费存储空间。但是,如果将客户信息依照规范化原则单独设立一个客户表,订单表只记录每个订单对应的客户ID,则可以避免数据冗余、提高数据一致性。

规范化原则

数据规范化有三个基本原则:之一范式、第二范式和第三范式。此外还有BC范式和第四范式等进阶范式。

1. 之一范式(1NF)

之一范式要求数据库每个数据项都是不可分的原子值,即在每个数据项中不能包含多个数据值。例如,如果一个数据项是“姓名+地址”,则不符合之一范式。需要将其拆分成“姓名”和“地址”两个单独的数据项,才能符合之一范式要求。

2. 第二范式(2NF)

第二范式要求数据库中的每个记录必须都能被唯一地识别。具体来说,要求数据表中的每个非关键字段都与一个唯一的主键相关联。如果一个非关键字段只与部分主键相关联,则需要将其与其他数据一起移到新的表中,使其成为一个新的表的主键。

3. 第三范式(3NF)

第三范式要求数据库中的每个字段都与主键相关,而不仅仅是与某些字段相关。换句话说,每个字段都必须直接依赖于主键,而不依赖于其他非关键字段。如果存在某个字段依赖于其他非关键字段,需要将其移到新的数据表中,使其符合第三范式的要求。

BC范式

BC范式是指在第三范式基础上,进一步消除非主属性对主属性的传递函数依赖,并且消除一个关系模式中的多值依赖。例如,一个学生表中既包含学生姓名,又包含学生所在的班级和年级信息。班级和年级都可以通过学生的姓名唯一确定,因此在BC范式中,应该将其分开成三个数据表:学生表、班级表和年级表。

第四范式

第四范式是指在BC范式基础上,消除多对多关系中的冗余数据。例如,一个订单表与用户表存在多对多的关系,一个用户可以下多个订单,一个订单也可以被多个用户下单。在第三范式中,需要将用户信息和订单信息分开存储,因此需要在第四范式中再将订单和用户的关系拆分成一个新的关系表,避免冗余数据的产生。

总而言之,通过数据规范化的处理,可以使数据结构更加简单直观、易于理解和维护,并且可以避免大量的数据冗余和错误。但需要注意的是,数据规范化虽然非常重要,但是并不能解决所有的数据管理问题,需要根据实际情况进行调整和补充。

结论

数据库规范化是企业信息管理的重要手段。通过规范化可以提高数据一致性和可维护性,减少数据冗余和错误,做到信息共享和高效利用。但是,规范化设计并不是一劳永逸的,需要视情况不断调整,以满足企业发展的需求。掌握数据规范化的原则,对于数据库设计、开发和维护都有很大的参考价值。

相关问题拓展阅读:

  • 数据库规范化三个范式应用实例

数据库规范化三个范式应用实例

规范化为什么重要?目前很多的数据库由于种种原因还没有被规范化。本文中解释了其中一些原因,并用不同形式的范式(normal form)规范化了一个保险公司的理赔表。在这个过程中表的改变以及添加的一些附加表使数据库效率更高、错误更少、更容易维护。

数据库的规范化是优化表的结构和把数据组织到表中的实践,这样做数据才能更明确。规范化使你能够改变业务规则、需求和数据而不需要重新构造整个系统。

  通过改变存储数据的方式–仅仅改变一丁点–并改变访问这些信息的程序,你就可以消除很多错误或垃圾数据出现的机会并减轻更新信息所必要的工作量。

  公司现实存在的一个问题可以用一句话概括”我们一般都这样做”。我们一般像采用那种方式存储信息;我们一般允许人们把任何信息写入 ;我们一般采用那种方式编程。这通常是一件坏事,特别是对于年轻的和正在学习的公司来说。但是,当有新的系统和更好的完成任务的途径的时候,有时”采用那种方式任务完成得很好”这句话可能需要重新探讨和修改。规范化数据就是公司常常采用的有益的方式之一。

  尽管对于COBOL程序(例如任何COBOL程序员都熟悉的文件布局)使用数据来说,把它们(数据)存储在关系数据库中与存储在平面文件中很相似,但是存储在平面文件中的方法并不是完成任务的必要的的途径,特别是由于你不了解两者之间的差别或害怕改变,而简单地把过去的观念带入到现在的方式。

  注意:Dictionary.com是这样定义规范化的:”使其标准,特别使导致它符合某种标准或规范。”或”某种标准的强制接受”。Webopedia认为规范化是”在关系数据库设计中,组织数据以最小化冗余的过程。规范化通常包括把一个数据库分成两个或多个表并定义表之间的关系。其目标是隔离数据,这样添加、删除和修改某个字段只需要在一个表中进行,接着可以通过定义的关系传递到数据库中剩余的表中”。我更喜欢这个定义。

  术语

  在你了解现实世界中的一个保险公司的例子之前,你需要了解一些在讨论中会用到的术语。处理数据库的时候,特别是在处理规范化问题的时候,下面一部分讲到的一组新的关键字很有作用:

  · 关系(Relation):从本质上说,关系是一个包含行和列的二维表或数组。

  · 关联(Relationship):关联是不同表之间的数据彼此联系的方法。关联同时存在于形成不同实体的数据项之间和表实体本身之间,构成了数据库规范化的基本核心问题。数据关联有三种基本的类型,对它们有所了解是很重要的:

   一对一(1:1):一对一关联意味着任何给定的每个(而不是大多数)实例严密地与另一个实体的一个实例对应。每个人只有一个正确的指纹就是的。每个号码准确地与一个付帐的独立私人客户对应(不是公司)。美国的每个人都只有一个社会保障号码。

   一对多(1:M):一对多关联意味着给定实体的一个实例可以可以与另一个实体的零个实例、一个实例或者多个实例关联。每个人可能没有小孩、有一个小孩或多个小孩。每个人可能没有汽车、有一辆汽车或多辆汽车。

 

   多对多(M:N):多对多关联(给定实体的零个、一个或多个实例与另一个实体的零个、一个或多个实例关联)是一种直接模拟很复杂的关联,它经常被分解为多个1:M关联。由于多个家庭混合在一起,一个或多个小孩可能没有父母亲(孤儿)、一个父母(单亲家庭),多于一个父母(两个仍然在一起或者离婚的两个父母、或者离婚了又复婚了的父母)。房屋或财产可以给一个人或多个人,而这些人(一个或多个)在遗嘱上可能又一个或多个房屋或财产。

  · 属性(Attribute):属性被认为是程序或数据库中的某些组件的可以修改的特性或特征,它可以被设置为不同值或者关系或表中的列。

  · Tuple:Tuple是关系数据库或非关系数据库中的排序了的一组值或值属性:关系中的一行。

  · 删除异常:删除异常指由于其它数据故意的删除而导致的数据矛盾或未预料到的数据(信息)丢失。

  · 插入异常:插入异常指由于数据的缺少或缺乏导致没有能力把信息添加到数据库。

  · 更新异常:更新异常指由于数据冗余或者冗余数据的不完整更新造成的数据矛盾。

  · 关系的分解:关系的分解指把一个关系分解成多个关系,从而使关系符合更高的范式。

  · 数据冗余:数据冗余指数据库中没有必要的数据重复。

  · 数据完整性:数据完整性指数据库中数据的一致性。保证数据完整性很重要,只有这样用户才知道他们依赖的数据是正确的、他们查询的结果以及程序才是精确的和符合期望的。

  · 原子值:原子值是一个值,它既不是能被进一步拆分的一组值,也不是一个重复的组。每个列都有一个完整的值,但是只有一个值–这个值不能被分解为多个部分,它要么被数据库使用,要么被使用数据库的用户访问的信息。

  · 参考完整性规则:参考完整性规则指存储在非空的外部健中的值必须是某种关系中的关键数据项。

  · 外部健:外部健是一个关系中的一组属性(一个或多个列),它同时也是某种(相同的或其它的)关系中的主键。它是关系之间的逻辑链接。参考自己关系的外部健称为递归外部健。

  · 功能依赖:功能依赖意味着一行中某个属性的值由该行中另一个属性的值决定。这通常出现在主键(使某行的信息片断)与该行的其它信息之间。城市和州的组合依赖于Zip(邮政)代码,即使给定的一个州中有很多Zip代码与某个城市关联。美国的每个合法的人员身份依赖于他的社会保障号码。

  · 决定性:功能依赖左边的属性决定行中其它属性的值(Zip代码决定了城市和州;社会保障号码决定了人的身份;执照号码和州决定了汽车的拥有者)。

  · 实体完整性规则:实体完整性规则指某一行的关键属性可能为空(如果你在某个城市就有一个Zip代码;如果你有一辆汽车就有一个执照号码)。

  · 约束:约束是一种规则,它限定了数据库中的值。号码必须是数字的;美元数量必须是数字的;state必须是合法的州或省;country必须是合法的国家;日期不能是2月31号。

  现在你已经知道了很多相关的术语了,我们可以看看相关术语中规范会的意义了。下面的例子并不是典型的雇员―经理―部门示例,也不是学生―教授―课程提供示例。我将演示一个假设的保险公司的数据库。数据库中的表比本示例中用到的要复杂得多,但是与人们遇到的比较相近。

  图1显示了理赔(claim)表的非规范化定义。尽管在某个保险公司的数据库中的表比它多得多,但是这些表为我们提供了一些背景,通过它我们可以看到规范化和其分支。请记住每个章节中的示例都只有部分列,这样就简化了示例并使你轻易地看到发生变化的东西。

CLAIM_NUM、 OCCURANCE_NUM 、 CLAIM_STATUS、 ACCDNT_YR、 ACCDNT_DT、 REPORTED_DT、 ENTERED_DT、 CLAIM_DT1、 CLAIM_DT2、 CLAIM_DT3 、 CLAIM_DT4、 CLAIM_DT4 、 CLAIM_DT5 、 CLAIM_DT6 、 CLAIM_DT7、 CLAIM_DT8 、 CLAIM_DT9 、 CLAIM_DT10、 CLOSED_DT 、 DEATH_DT、 ASSIGNED_DT、 ADTER_CD 、ADJUSTER_NAME 、 AGENT_CD 、 AWARD_CD 、 CAUSE_CD 、 CAUSE_DESC、 LOCATION 、 SITE 、 COVERAGE_CD 、 COVERAGE_DESC、 DED_RECOV、 DEDUCTIBLE_REMAIN 、 PAID_1 、 RESERVED_1 、 PAID_2 、 RESERVED_2 、 PAID_3 、 RESERVED_3 、 PAID_4 、 RESERVED_4 、 PAID_5 、 RESERVED_5 、 PAID_6 、 RESERVED_6 、 PAID_7 、 RESERVED_7 、 PAID_8 、 RESERVED_8、 PAID_9 、 RESERVED_9 、 PAID_10 、 RESERVED_10 、 LEGAL_FLG、 KEY1、 KEY2、 KEY3、 KEY4、 KEY5、 KEY6、 KEY7、 KEY8、 KEY9、 KEY10、 SEVERITY_CD 、 POLICY_NUM 、 PAYMENT_NUM 、 SSN、 STATE、 ACTVY_DT、 ENTRY_DT、 ADMIN_CD、ADMIN_DESC、 REOPEN_DT、 INSURED_NAME、 INSURED_ADDRESS、 INSURED_PHONE、 INSURED_CITY、 INSURED_STATE、 INSURED_ZIP、 CLAIMANT_NAME、 CLAIMANT_ADDRESS、 CLAIMANT_CITY、 CLAIMANT_STATE、 CLAIMANT_ZIP、 CLAIMANT_PHONE、 SPECIAL_DT_1 、 SPECIAL_DT_2、 SPECIAL_DT_3、 SPECIAL_DT_4 、 SPECIAL_DT_5、 SPECIAL_DT_6 、 SPECIAL_DT_7 、SPECIAL_DT_8 、SPECIAL_DT_9 、 SPECIAL_DT_10 、 GROSS_PD、 POLICY_ID

关于关系数据库的规范化的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

成都网站营销推广找创新互联,全国分站站群网站搭建更好做SEO营销。
创新互联(www.cdcxhl.com)四川成都IDC基础服务商,价格厚道。提供成都服务器托管租用、绵阳服务器租用托管、重庆服务器托管租用、贵阳服务器机房服务器托管租用。

当前标题:数据库规范化:优化关系数据库设计 (关系数据库的规范化)
本文链接:http://www.gawzjz.com/qtweb/news13/170813.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联