database - 分解为第三范式 (3NF)

标签 database relational-database

Scheme (R) = (A,B,C,D,E,F,G,H)

Function Dependencies (F) = {A->CGH, AD->C, DE->F, G->H}

我将如何执行模式 R 到第三范式 (3NF) 的无损连接分解?

我们将不胜感激。

最佳答案

因为 A→CGH 和 Ax→C 对于任何字母 x,我们可以忽略第二个函数依赖性 (AD→C),因为它没有告诉我们任何 A→CGH 也没有告诉我们的东西。

没有什么可以决定B;没有什么可以决定 D。

由于G决定了H,A决定了G和H,我们可以将G→H分离成一个关系(存在传递依赖A→G和G→H)。

R1 = { G, H }       : PK = { G }

剩下 F' = { A→CG, DE→F } 和 R' = (A, B, C, D, E, F, G)。

剩下的两个函数依赖可以再形成两个关系:

R2 = { A, C, G }    : PK = { A }
R3 = { D, E, F }    : PK = { D, E }

剩下 R'' = { A, B, D, E }

R4 = { A, B, D, E } : PK = { A, B, D, E }

R1、R2、R3 和 R4 的连接应该让您得到 R 的任何起始值(满足给定函数依赖项的约束)的起始值。

关于database - 分解为第三范式 (3NF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361910/

相关文章:

javascript - 将文本添加到随机字符串

通过 MySQL 显示数据的 Php 下拉菜单

sql - XML 到 SQL 的转换

database - 什么是检查一个数字是否存在于多个集合中而不搜索所有集合的好算法?

android - 删除 Realm 数据库对象,但即使所有对象都为空, Realm 文件大小保持不变。随着时间的推移变得太大了

mysql - 使用数据库关系限制输入

api - 为每个数据库表拥有一个 RESTful 资源是一种好习惯吗?

php - 经销商定位器 mysql 和 php 的关系模式

MySql - 如何存储可以运送给多人的订单

java - 傻瓜数据库