第5讲 需求分析阶段-规范化.ppt
《第5讲 需求分析阶段-规范化.ppt》由会员分享,可在线阅读,更多相关《第5讲 需求分析阶段-规范化.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统设计数据库系统设计需求分析阶段规范化需求分析阶段规范化概述概述 虽然一个数据模型有效地沟通了数据库需求,但它不一定就代表了一虽然一个数据模型有效地沟通了数据库需求,但它不一定就代表了一虽然一个数据模型有效地沟通了数据库需求,但它不一定就代表了一虽然一个数据模型有效地沟通了数据库需求,但它不一定就代表了一个个个个好的好的好的好的数据库设计,其中的某些结构特征可能会降低模型的灵活性和数据库设计,其中的某些结构特征可能会降低模型的灵活性和数据库设计,其中的某些结构特征可能会降低模型的灵活性和数据库设计,其中的某些结构特征可能会降低模型的灵活性和扩展性,或者产生不必要的冗余。所以,我们必须为
2、数据库设计和实扩展性,或者产生不必要的冗余。所以,我们必须为数据库设计和实扩展性,或者产生不必要的冗余。所以,我们必须为数据库设计和实扩展性,或者产生不必要的冗余。所以,我们必须为数据库设计和实现准备好具有完整属性的数据模型。现准备好具有完整属性的数据模型。现准备好具有完整属性的数据模型。现准备好具有完整属性的数据模型。好的数据模型的标准好的数据模型的标准好的数据模型的标准好的数据模型的标准 好的数据模型是简单的好的数据模型是简单的好的数据模型是简单的好的数据模型是简单的。好的数据模型基本上是无冗余的好的数据模型基本上是无冗余的好的数据模型基本上是无冗余的好的数据模型基本上是无冗余的。好的数据
3、模型应该是灵活的而且对未来的需求具有可适应性好的数据模型应该是灵活的而且对未来的需求具有可适应性好的数据模型应该是灵活的而且对未来的需求具有可适应性好的数据模型应该是灵活的而且对未来的需求具有可适应性。概述概述考虑以下的实体定义:考虑以下的实体定义:考虑以下的实体定义:考虑以下的实体定义:course registration=course registration course registration=course registration number(PKnumber(PK)+)+course registration date+course registration date+stu
4、dent id student id number(FKnumber(FK)+)+student name+student name+student major+student major+一个或多个一个或多个一个或多个一个或多个course numbercourse number概述概述好的数据模型是简单的好的数据模型是简单的好的数据模型是简单的好的数据模型是简单的。作为一条通用规则,描述任何实体的数据属性应该仅作为一条通用规则,描述任何实体的数据属性应该仅作为一条通用规则,描述任何实体的数据属性应该仅作为一条通用规则,描述任何实体的数据属性应该仅仅描述那个实体。仅描述那个实体。仅描述那个实
5、体。仅描述那个实体。属性属性属性属性student namestudent name和和和和student majorstudent major真的描述了真的描述了真的描述了真的描述了course registrationcourse registration(课程注册)的一个实例吗?(课程注册)的一个实例吗?(课程注册)的一个实例吗?(课程注册)的一个实例吗?或者它们仅仅描述了一个不同的实体,即或者它们仅仅描述了一个不同的实体,即或者它们仅仅描述了一个不同的实体,即或者它们仅仅描述了一个不同的实体,即student?student?同样的理由可以应用到属性同样的理由可以应用到属性同样的理由可
6、以应用到属性同样的理由可以应用到属性student id numberstudent id number上。上。上。上。经过进一步考察,经过进一步考察,经过进一步考察,经过进一步考察,student id numberstudent id number属性仍是需要的,属性仍是需要的,属性仍是需要的,属性仍是需要的,它用来它用来它用来它用来“指出指出指出指出”对应的对应的对应的对应的studentstudent实体实例。实体实例。实体实例。实体实例。概述概述好的数据模型是简单的。好的数据模型是简单的。好的数据模型是简单的。好的数据模型是简单的。简单性的另一个方面是这样陈述的:简单性的另一个方面是
7、这样陈述的:简单性的另一个方面是这样陈述的:简单性的另一个方面是这样陈述的:一个实体实例的每个属性只能有一个值。一个实体实例的每个属性只能有一个值。一个实体实例的每个属性只能有一个值。一个实体实例的每个属性只能有一个值。再看前的例子:再看前的例子:再看前的例子:再看前的例子:对应一个对应一个对应一个对应一个course registrationcourse registration实体,属性实体,属性实体,属性实体,属性course course numbernumber可以多个有值供学生选择。可以多个有值供学生选择。可以多个有值供学生选择。可以多个有值供学生选择。概述概述好的数据模型基本上是
8、无冗余的。好的数据模型基本上是无冗余的。好的数据模型基本上是无冗余的。好的数据模型基本上是无冗余的。这意味着每个数据属性(除了外键)最多在一个实体这意味着每个数据属性(除了外键)最多在一个实体这意味着每个数据属性(除了外键)最多在一个实体这意味着每个数据属性(除了外键)最多在一个实体中描述中描述中描述中描述。在前面的例子中,发现属性在前面的例子中,发现属性在前面的例子中,发现属性在前面的例子中,发现属性student namestudent name和和和和student student majormajor实际上描述一个实际上描述一个实际上描述一个实际上描述一个studentstudent实
9、体并不困难。故合乎实体并不困难。故合乎实体并不困难。故合乎实体并不困难。故合乎逻辑的选择将是添加逻辑的选择将是添加逻辑的选择将是添加逻辑的选择将是添加studentstudent实体。实体。实体。实体。在数据模型中还可能存在更细微的冗余,例如,相同在数据模型中还可能存在更细微的冗余,例如,相同在数据模型中还可能存在更细微的冗余,例如,相同在数据模型中还可能存在更细微的冗余,例如,相同的属性可能以不同的名称(同义词)被多次记录。的属性可能以不同的名称(同义词)被多次记录。的属性可能以不同的名称(同义词)被多次记录。的属性可能以不同的名称(同义词)被多次记录。概述概述好的数据模型应该是灵活的而且对
10、未来的需求具好的数据模型应该是灵活的而且对未来的需求具好的数据模型应该是灵活的而且对未来的需求具好的数据模型应该是灵活的而且对未来的需求具有可适应性。有可适应性。有可适应性。有可适应性。没有这条评价准则,我们往往会设计仅实现目前业务没有这条评价准则,我们往往会设计仅实现目前业务没有这条评价准则,我们往往会设计仅实现目前业务没有这条评价准则,我们往往会设计仅实现目前业务需求的数据库。需求的数据库。需求的数据库。需求的数据库。然后,当一个新的需求产生时,我们若不重写许多或然后,当一个新的需求产生时,我们若不重写许多或然后,当一个新的需求产生时,我们若不重写许多或然后,当一个新的需求产生时,我们若不
11、重写许多或者所有使用那些数据库的程序就无法方便地修改数据者所有使用那些数据库的程序就无法方便地修改数据者所有使用那些数据库的程序就无法方便地修改数据者所有使用那些数据库的程序就无法方便地修改数据库。库。库。库。虽然我们不能改变这个现实虽然我们不能改变这个现实虽然我们不能改变这个现实虽然我们不能改变这个现实-大多数项目都是应用驱大多数项目都是应用驱大多数项目都是应用驱大多数项目都是应用驱动的,但是我们可以使数据模型做到尽可能地与应用动的,但是我们可以使数据模型做到尽可能地与应用动的,但是我们可以使数据模型做到尽可能地与应用动的,但是我们可以使数据模型做到尽可能地与应用无关,以鼓励采用不影响当前程
12、序扩展或修改的数据无关,以鼓励采用不影响当前程序扩展或修改的数据无关,以鼓励采用不影响当前程序扩展或修改的数据无关,以鼓励采用不影响当前程序扩展或修改的数据库结构。库结构。库结构。库结构。概述概述 数据分析数据分析数据分析数据分析:是为将数据模型实现成数据库而改进数据模型是为将数据模型实现成数据库而改进数据模型是为将数据模型实现成数据库而改进数据模型是为将数据模型实现成数据库而改进数据模型的技术。的技术。的技术。的技术。数据分析是为实现简单的、无冗余的、灵活的并可扩数据分析是为实现简单的、无冗余的、灵活的并可扩数据分析是为实现简单的、无冗余的、灵活的并可扩数据分析是为实现简单的、无冗余的、灵活
13、的并可扩展的数据库而准备数据模型的过程。其专门的技术称展的数据库而准备数据模型的过程。其专门的技术称展的数据库而准备数据模型的过程。其专门的技术称展的数据库而准备数据模型的过程。其专门的技术称为规范化。为规范化。为规范化。为规范化。规范化规范化规范化规范化:是一种数据分析技术,该技术组织数据属性怪便是一种数据分析技术,该技术组织数据属性怪便是一种数据分析技术,该技术组织数据属性怪便是一种数据分析技术,该技术组织数据属性怪便它们可以组合起来形成无冗余的它们可以组合起来形成无冗余的它们可以组合起来形成无冗余的它们可以组合起来形成无冗余的 、稳定的、灵活的并具、稳定的、灵活的并具、稳定的、灵活的并具
14、、稳定的、灵活的并具有适应性的实体有适应性的实体有适应性的实体有适应性的实体规范化是一种包括三个步骤的技术,该技术把数据模规范化是一种包括三个步骤的技术,该技术把数据模规范化是一种包括三个步骤的技术,该技术把数据模规范化是一种包括三个步骤的技术,该技术把数据模型规范成型规范成型规范成型规范成1NF1NF1NF1NF、2NF2NF2NF2NF和和和和3NF3NF3NF3NF。所有的范式都是基于表中的列之间的关系的。所有的范式都是基于表中的列之间的关系的。所有的范式都是基于表中的列之间的关系的。所有的范式都是基于表中的列之间的关系的。概述概述 规范化理论是研究如何将一个不好的关系模式转化为好的规范
15、化理论是研究如何将一个不好的关系模式转化为好的规范化理论是研究如何将一个不好的关系模式转化为好的规范化理论是研究如何将一个不好的关系模式转化为好的关系模式的理论,规范化理论是围绕范式而建立的。关系模式的理论,规范化理论是围绕范式而建立的。关系模式的理论,规范化理论是围绕范式而建立的。关系模式的理论,规范化理论是围绕范式而建立的。规范化理论认为,一个关系数据库中所有的关系,都应满规范化理论认为,一个关系数据库中所有的关系,都应满规范化理论认为,一个关系数据库中所有的关系,都应满规范化理论认为,一个关系数据库中所有的关系,都应满足一定的规范足一定的规范足一定的规范足一定的规范(约束条件约束条件约束
16、条件约束条件)。规范化理论把关系应满足的规范要求分为几级,满足最低规范化理论把关系应满足的规范要求分为几级,满足最低规范化理论把关系应满足的规范要求分为几级,满足最低规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式要求的一级叫做第一范式要求的一级叫做第一范式要求的一级叫做第一范式(1NF)(1NF),在第一范式的基础上提,在第一范式的基础上提,在第一范式的基础上提,在第一范式的基础上提出了第二范式出了第二范式出了第二范式出了第二范式(2NF)(2NF),在第二范式的基础上又提出了第三,在第二范式的基础上又提出了第三,在第二范式的基础上又提出了第三,在第二范式的基础上又提
17、出了第三范式范式范式范式(3NF)(3NF),以后又提出了,以后又提出了,以后又提出了,以后又提出了BCNFBCNF范式,范式,范式,范式,4NF4NF,5NF5NF。范式的等级越高,应满足的约束集条件也越严格。规范的范式的等级越高,应满足的约束集条件也越严格。规范的范式的等级越高,应满足的约束集条件也越严格。规范的范式的等级越高,应满足的约束集条件也越严格。规范的每一级别都依赖于它的前一级别,例如若一个关系模式满每一级别都依赖于它的前一级别,例如若一个关系模式满每一级别都依赖于它的前一级别,例如若一个关系模式满每一级别都依赖于它的前一级别,例如若一个关系模式满足足足足2NF2NF,则一定满足
18、,则一定满足,则一定满足,则一定满足1NF1NF。数据冗余和更新异常数据冗余和更新异常更新异常更新异常更新异常更新异常引起数据冗余的引起数据冗余的引起数据冗余的引起数据冗余的错误的结构化表错误的结构化表错误的结构化表错误的结构化表的问题叫做的问题叫做的问题叫做的问题叫做更更更更新异常新异常新异常新异常错误的结构化表可能产生于最初的错误的结构化表可能产生于最初的错误的结构化表可能产生于最初的错误的结构化表可能产生于最初的ERERERER模型或在模型或在模型或在模型或在将将将将ERERERER模型转化成表时出现错误。模型转化成表时出现错误。模型转化成表时出现错误。模型转化成表时出现错误。有冗余数据
19、的表可能有的问题叫做更新异常,有冗余数据的表可能有的问题叫做更新异常,有冗余数据的表可能有的问题叫做更新异常,有冗余数据的表可能有的问题叫做更新异常,它分为它分为它分为它分为插入插入插入插入、删除删除删除删除和和和和更改更改更改更改异常异常异常异常数据冗余和更新异常数据冗余和更新异常 数据应该尽可能少地冗余,这意味着重复数据应该减少到数据应该尽可能少地冗余,这意味着重复数据应该减少到数据应该尽可能少地冗余,这意味着重复数据应该减少到数据应该尽可能少地冗余,这意味着重复数据应该减少到最少最少最少最少比如,一个部门雇员的电话就不应该被存储在不同的比如,一个部门雇员的电话就不应该被存储在不同的比如,
20、一个部门雇员的电话就不应该被存储在不同的比如,一个部门雇员的电话就不应该被存储在不同的表中,表中,表中,表中,因为这里的电话号码是雇员的一个属性。因为这里的电话号码是雇员的一个属性。因为这里的电话号码是雇员的一个属性。因为这里的电话号码是雇员的一个属性。如果存在过多的冗余数据,这就意味着要占用了更多的物如果存在过多的冗余数据,这就意味着要占用了更多的物如果存在过多的冗余数据,这就意味着要占用了更多的物如果存在过多的冗余数据,这就意味着要占用了更多的物理空间,同时也对数据的维护和一致性检查带来了问题理空间,同时也对数据的维护和一致性检查带来了问题理空间,同时也对数据的维护和一致性检查带来了问题理
21、空间,同时也对数据的维护和一致性检查带来了问题当这个员工的电话号码变化时,冗余数据会导致对多当这个员工的电话号码变化时,冗余数据会导致对多当这个员工的电话号码变化时,冗余数据会导致对多当这个员工的电话号码变化时,冗余数据会导致对多个表的更新动作,如果有一个表不幸被忽略了,那么个表的更新动作,如果有一个表不幸被忽略了,那么个表的更新动作,如果有一个表不幸被忽略了,那么个表的更新动作,如果有一个表不幸被忽略了,那么就可能导致数据的不一致性。就可能导致数据的不一致性。就可能导致数据的不一致性。就可能导致数据的不一致性。关系数据库设计的主要目的是把列分组成表,以便最小化关系数据库设计的主要目的是把列分
22、组成表,以便最小化关系数据库设计的主要目的是把列分组成表,以便最小化关系数据库设计的主要目的是把列分组成表,以便最小化数据冗余并减少基表所需的文件存储空间数据冗余并减少基表所需的文件存储空间数据冗余并减少基表所需的文件存储空间数据冗余并减少基表所需的文件存储空间数据冗余和更新异常数据冗余和更新异常StaffBranch表表冗余数据,因为分公司的细节信息在分冗余数据,因为分公司的细节信息在分公司的每个员工那里被重复了一遍公司的每个员工那里被重复了一遍PK数据冗余和更新异常数据冗余和更新异常 为说明与数据冗余有关的问题,我们来进行个比较:为说明与数据冗余有关的问题,我们来进行个比较:为说明与数据冗
23、余有关的问题,我们来进行个比较:为说明与数据冗余有关的问题,我们来进行个比较:只有分公司只有分公司编号被重复编号被重复每个分公司每个分公司的详细信息的详细信息只出现一次只出现一次更新异常插入异常更新异常插入异常 有两种主要的插入异常有两种主要的插入异常有两种主要的插入异常有两种主要的插入异常潜在的不一致性潜在的不一致性潜在的不一致性潜在的不一致性。为了插入一新员工到。为了插入一新员工到。为了插入一新员工到。为了插入一新员工到StaffBranchStaffBranchStaffBranchStaffBranch表中,必须包括表中,必须包括表中,必须包括表中,必须包括分公司的详细信息,这个信息决
24、定新员工所属的分公司。而在输入分公司的详细信息,这个信息决定新员工所属的分公司。而在输入分公司的详细信息,这个信息决定新员工所属的分公司。而在输入分公司的详细信息,这个信息决定新员工所属的分公司。而在输入时无法保证输入的信息不出错。时无法保证输入的信息不出错。时无法保证输入的信息不出错。时无法保证输入的信息不出错。StaffBranch表StaffBranch表如,要插入在如,要插入在如,要插入在如,要插入在B003B003B003B003分公司工作的新员工,必须输入分公司工作的新员工,必须输入分公司工作的新员工,必须输入分公司工作的新员工,必须输入B003B003B003B003分公司的正分
25、公司的正分公司的正分公司的正确的细节情况使得与确的细节情况使得与确的细节情况使得与确的细节情况使得与StaffBranchStaffBranchStaffBranchStaffBranch表中其他分公司的记录信息一致。表中其他分公司的记录信息一致。表中其他分公司的记录信息一致。表中其他分公司的记录信息一致。更新异常插入异常更新异常插入异常 避免不一致性问题出现避免不一致性问题出现避免不一致性问题出现避免不一致性问题出现此时就不存在潜此时就不存在潜在的不一致性,在的不一致性,因为对于每一个因为对于每一个员工我们仅需加员工我们仅需加入正确的分公司入正确的分公司号到号到Staff表中就表中就可以了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5讲 需求分析阶段-规范化 需求 分析 阶段 规范化
限制150内