更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
考查数据库完整性约束。首先需要了解实体完整性、参照完整性和用户定义完整性的概念。 实体完整性:实体完整性要求主键中的任一属性不能为空,所谓空值是“不知道”或“无意义”的值。之所以要保证实体完整性,主要是因为在关系中,每个元组的区分是依据主键值的不同,若主键值取空值,则不能标明该元组的存在。例如,对于学生关系S(Sno, Sname, Ssex),其主键为Sno,在插入某个元组时,就必须要求Sno不能为空。更加严格的DBMS,则还要求Sno不能与已经存在的某个元组的Sno相同。 参照完整性:若基本关系R中含有与另一基本关系S的主键PK相对应的属性组FK(FK称为R的外键),则参照完整性要求,对R中的每个元组在FK上的值必须是S中某个元组的PK值,或者为空值。参照完整性的合理性在于,R中的外键只能对S中的主键引用,不能是S中主键没有的值。例如,对于学生关系S(Sno, Sname, Ssex)和选课关系C(Sno, Cno, Grade)两个关系,C中的Sno是外键,它是S的主键,若C中出现了某个S中没有的Sno,即某个学生还没有注册,却已经有了选课记录,这显然是不合理的。 用户定义的完整性:实体完整性和参照完整性适用于任何关系型DBMS。除此之外,不同的数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。 从以上概念说明可以看出“仓库关系W中的‘负责人’引用员工关系的员工号”属于参照完整性,“库存关系I中的‘仓库号,产品号’唯一标识I中的每一个记录”属于实体完整性,“员工关系E中的职称‘工程师’的月薪不能低于3500元”属于用户自定义完整性。 第(26)空要求“得到每种产品的名称和该产品的总库存量”,要达到该效果需要对数据表的数据进行分组统计。由于现在是要根据产品名称来统计库存量,所以分组的依据应是产品名称,所以应使用“GROUP BY产品名称”。
从图中可以看出,只有商品代码与供应商的组合键才能遍历全图,所以只有它们的组合能充当主键。 由于(商品代码,供应商)是主键,而又有函数依赖:商品代码→商品名称,这便形成了部分依赖。所以在此关系模式中,部分依赖未消除,其范式只能达到1NF。 接下来的这个问题,对于经验丰富的考生,看完这几个选项,应该是能直接判断出应选D的。因为D是最佳分解方案,能达到的范式级别很高。 A选项分析:P1(商品代码,联系方式)未保持任何原有的函数依赖。而P2(商品名称,供应商,库存量)也未保持任何原有的函数依赖。 B选项分析:P1(商品名称,联系方式)未保持任何原有的函数依赖。P2(商品代码,供应商,库存量)只保持了函数依赖:(商品代码,供应商)→库存量。这样整体来说,就丢失了两个函数依赖关系。 C选项分析:P1(商品代码,商品名称,联系方式)保持了函数依赖:商品代码→商品名称,P2(供应商,库存量)未保持任何原有的函数依赖。这样整体来说,就丢失了两个函数依赖关系。 D选项分析:P1(商品代码,商品名称)保持了函数依赖:商品代码→商品名称,P2(商品代码,供应商,库存量)保持了函数依赖:(商品代码,供应商)→库存量,P3(供应商,联系方式)保持了函数依赖:供应商→联系方式。这样将各个分拆关系的函数依赖整合起来,能构成原关系的函数依赖,所以这个分解是保持了函数依赖的分解。