给定与属性A,B,C,D,E的关系R以及功能依赖关系A-> B,BC-> E,ED-> A的集合。将其分解为高正常形式。将以下关系分解为BCNF
-1
A
回答
1
从candidate key定义:
在数据库的关系模型,关系的候选键是 该关系的最小的超密钥;即,一组属性 使得:这意味着该组
- 的关系不具有两个不同的元组(即行或在公共的数据库语言记录)具有相同的值,这些 属性(属性是一个超级键)
- 没有这些属性的适当子集(1)持有(这意味着该集合是最小的)。
鉴于F.D唯一C
和D
来到左侧,这意味着每一个关键必须具备C
和D
。
闭合(CD)不等于所有的属性,但是,从FD的,我们可以清楚地看到:
关闭(CDA)=关闭(CDB)=关闭(CDE)=设置所有的属性,这意味着所有三个CDA
,CDB
和CDE
都是候选键。
现在让我们按照此stanford lecture中给出的BCNF分解算法。
给出模式R.
- 计算键R.
- 重复,直到所有的关系都属于BCNF。
- 选择具有违反BCNF的F.D A→B的任何R'。
- 将R'分解为R1(A,B)和R2(A,其余属性)。
- 计算R1和R2的F.D。
- 计算R1和R2的密钥。
A-->B
违反BCNF作为A不是关键的,所以我们分解R导入
R1(A,C,d,e)和R2(A,B)。
R2现在在BCNF中,但是R1不是由于F.D ED-->A
,因为ED
不是关键。因此,我们进一步将R1分解为:现在明显地R3和R4均在BCNF中。(R3,R4,E,D)。
+1
从什么来源采取这些引文?您需要在答案中包含一个*链接*以及作者姓名。请参阅:https://stackoverflow.com/help/referencing –
相关问题
- 1. 将关系分解为BCNF
- 2. 无法这一关系分解成BCNF
- 3. BCNF分解
- 4. BCNF分解和键
- 5. 转换关系到BCNF
- 6. 将关系分解为3NF,如何区分关系?
- 7. 数据库关系正常化到BCNF
- 8. 决定的关系是否处于BCNF
- 9. 如何BCNF分解时的属性与任何其他人没有关系
- 10. 分解到BCNF并设置超级关键
- 11. BCNF分解后获得相同的FD?
- 12. 将RPM依赖关系指定为“以下之一”
- 13. Laravel解离为hasOne关系
- 14. 斯坦福解析器:可以将依赖关系转换为解析树吗?
- 15. 如何生成第三范式和BCNF分解
- 16. ASP.Net 5 IIS:无法解决以下依赖关系
- 17. 如何解决以下关系代数查询
- 18. 将一系列父子关系转换为分层树?
- 19. 分解为ABC和CDE并保留函数依赖关系
- 20. 将分支分解为单独的分支以进行请求
- 21. 难以下载依赖关系
- 22. Django以通用方式上下关系
- 23. BCNF标准化
- 24. BCNF转换
- 25. 转换成BCNF
- 26. 减少到BCNF
- 27. 将行分解为'将SQL Server 2008查询分解为批'
- 28. 如何为以下查询编写关系代数表达式?
- 29. 将树结构解析为关系式数据存储
- 30. 将LINQ弱分类到关系数据
请说明你能做些什么。 Google'stackexchange homework'&阅读[问]。我们不是来做你的功课。 – philipxy