答案是{AC},{CD},{ABE}。因为A->C,C->D,所以A->D,先把这ACD三个从总表中分出来,得出{ACD}和{ABE},由于A->D,需要经过C,所以这属于传递依赖,因此{ACD}又可以分为{AC}和{CD}。
扩展资料:
数据库管理系统是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;
或依据所用查询语言来作分类,例如SQL、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
标准答案是:AC,BC,CD。
分析如下:R(A,B,C,D)函数依赖于AB^100c,C^D和D^A,找到违反BCNF的依赖项(不需要找到右侧多个属性的度数)并将其分解为BCNF关系的聚合。
关系:C→A,版本C→D,D→A,AB→D,AB→C,AC→D,BC→D,BC→A,BC→D,BD→A,BD→C,CD→A,ABC→D,ABD→C,权值BCD→A。
违反BCNF:C到A,C到D,D到A,AC到D,CD到A。
扩展资料:
BCNF范式在3NF的基础上消除了对主代码子集的依赖。
以仓库管理关系表为例:仓库编号、存储项编号、管理员编号和数量。首先,该表满足第三种标准形式,这意味着管理员只在一个仓库中工作,而一个仓库可以存储多个项目。表中有以下依赖项:
(仓库编号、存储项目编号)——>(管理员编号、数量)
(管理员编号、存储项目编号)——>(仓库编号、数量)
从上面的依赖关系中,我们可以知道(仓库号、存储项号)和(管理员号、存储项号)是表关系中的候选代码。
表中唯一的非键字段是number,它符合第三种范式。但由于存在以下决定关系:
(仓库号)——>(管理员号)
(管理员编号)——>(仓库编号)
也就是说,有一个关键字段来确定关键字段,所以它不符合BCNF。
解决方案:将仓库管理关系表拆分成两个关系仓库管理表(仓库号、管理员号)和仓库表(仓库号、存储项号、数量)使数据库表符合BCNF,消除删除异常、插入异常和更新异常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)