关系完整性包括

2、关系模式订货(合同号,用户码,用户名,地址,行业码,行业名,订货总金额),它们之间的函数依赖关系:
(合同号,用户码)→订货总金额, 用户码→用户名,
用户码→地址, 用户码→行业码,行业码→行业名。
(1)确定候选码,判断属于哪一范式。
(2)如果关系订货不属于3NF,请规范化到3NF。写出达到每一级范式的分解过程,并指明消除什么类型的函数依赖。

(1) 候选码:合同号,用户码
用户码→行业码→行业名,存在传递依赖,故不是3NF
(合同号,用户码)→订货总金额, 用户码→用户名,存在部分依赖 故不是2NF
该范式是1NF
(2)为了消除部分依赖 先拆成:
订货(合同号,用户码,订货总金额)------合同号为主码
用户(用户码,用户名,地址,行业码,行业名)------用户码为主码
至此关系模式规范化到2NF
为了消除传递依赖 将用户关系模式拆成:
用户(用户码,用户名,地址,行业码)--------用户码为主码
行业(行业码,行业名)---------行业码为主码

故规范化后的关系模式为:
订货(合同号,用户码,订货总金额)------(合同号,用户码)为主码
用户(用户码,用户名,地址,行业码)--------用户码为主码
行业(行业码,行业名)---------行业码为主码

至此关系模式规范化为3NF
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-04
关系完整性是为保证数据库中数据的正确性和相容性:对关系模型提出的某种约束条件或规则,完整性通常包括实体完整性,参照完整性和用户定义完整性(又称域完整性其中实体完整性和参照完整性,是关系模型必须满足的完整性约束条件。
1.实体完整性 实体完整性是指关系的主关键字不能取“空值\"。
一个关系对应现实世界中一个实体集。现实世界中的实体是可以相互区分、识别的,也即它们应具有某种惟一性标识。在关系模式中,以主关键字作为惟一性标识,而主关键字中的属性(称为主属性)不能取空值,否则,表明关系模式中存在着不可标识的实体(因空值是“不确定\"的),这与现实世界的实际情况相矛盾,这样的实体就不是一个完整实体。按实体完整性规则要求,主属性不得取空值,如主关键字是多个属性的组合,则所有主属性均不得取空值。
如表1.1将编号作为主关键字,那么,该列不得有空值,否则无法对应某个具体的职工,这样的表格不完整,对应关系不符合实体完整性规则的约束条件。
2.参照完整性
参照完整性是定义建立关系之间联系的主关键字与外部关键字引用的约束条件。
关系数据库中通常都包含多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。所谓公共属性,它是一个关系R(称为被参照关系或目标关系)的主关键字,同时又是另一关系K(称为参照关系)的外部关键字。如果参照关系K中外部关键字的取值,要么与被参照关系R中某元组主关键字的值相同,要么取空值,那么,在这两个关系间建立关联的主关键字和外部关键字引用,符合参照完整性规则要求。如果参照关系K的外部关键字也是其主关键字,根据实体完整性要求,主关键字不得取空值,因此,参照关系K外部关键字的取值实际上只能取相应被参照关系R中已经存在的主关键字值。
在学生管理数据库中,如果将选课表作为参照关系,学生表作为被参照关系,以“学号\"作为两个关系进行关联的属性,则“学号\"是学生关系的主关键字,是选课关系的外部关键字。选课关系通过外部关键字“学号’’参照学生关系。
3.用户定义完整性
实体完整性和参照完整性适用于任何关系型数据库系统,它主要是针对关系的主关键字和外部关键字取值必须有效而做出的约束。用户定义完整性则是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。这一约束机制一般不应由应用程序提供,而应有由关系模型提供定义并检验,用户定义完整性主要包括字段有效性约束和记录有效性。