database - BCNF转换

标签 database database-design relational-database normalization

我正在努力理解 BCNF数据库,我无法完全理解它。

考虑以下关系:

R (A, B, C, D, E, F, G)

以下函数依赖成立:

A -> E, F
A -> G
A, B -> D
B -> C
E, F -> G
A -> D

我该怎么做BCNF

最佳答案

非正式地说,在作业问题中,您可以通过

  • 假设您至少处于 1NF 状态,
  • 删除部分关键依赖项以达到 2NF(至少),
  • 移除传递依赖以达到 3NF(至少),最后
  • 删除剩余的功能依赖性,其中左侧不是进入 BCNF 的候选键(至少)。

部分键依赖的一个例子是对

AB->D
A->D

由于A单独决定D,函数依赖AB->D存在部分键依赖。

传递依赖的一个例子是对

A->EF
EF->G

不能保证您可以将给定的关系规范化为 BCNF 并且没有更高的。 (这似乎在 SO 上引起了很多大学生的困惑。)去除部分键依赖以得到 2NF 可能会留下 5NF 中的所有关系。

关于database - BCNF转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773606/

相关文章:

sql - oracle sql中表示泛化

python - 与三个表的两个一对多关系

PHP 排名和选择操作

database - 我在哪里可以找到我的 mac 中的 sqlite3 数据库文件?

java - Hibernate一对多,运算符不存在(bytea =整数)

amazon-web-services - AWS RDS 错误 : Failed to retrieve account attributes, 某些控制台功能可能会受到影响

mysql - 我的 SQL 在一周内抓取最后一个活跃用户

sql-server - 数据库结构查看器/打印

mysql - 表示MySQL数据库中动态添加的表单字段

sql - Cassandra 适合作为社交网站的主数据库吗?