gpt4 book ai didi

normalization - {a,b,c,d,e} a,b->c, a,b->d 和 d->e 的最​​高范式是什么?

转载 作者:太空狗 更新时间:2023-10-30 02:00:53 25 4
gpt4 key购买 nike

用于设计示例数据库。

是 3NF 还是 BCNF?

最佳答案

基于这些依赖关系,唯一的键是 {a,b}。因此 {a,b,c,d,e} 具有传递依赖性:ab->d 和 d->e。由于它具有传递依赖性,{a,b,c,d,e} 不在 3NF 中。

在 2NF 中可能,但在不知道列的含义或不知道代表值的情况下我无法确定。例如,如果 c 列包含不同数量的电话号码,它甚至可能不在 1NF 中。 (在计算机科学作业中,您通常可以假设每一列包含一个值。在 SO 上,您通常不能。)

当您规范化关系时,您会根据依赖关系转换属性的子集。 (基于您案例中的功能依赖关系。)因此您可以用这两个替换原始关系。

  • {a,b,c,d}
  • {d,e}

其中第一个可能至少在 4NF 中。第二个可能在 6NF 中。 (但请参阅上面的第 2 段。)

规范化并没有说你可以从 2NF 移动到 3NF 并且没有更高,从 3NF 移动到 BCNF 并且没有更高,从 BCNF 移动到 4NF 并且没有更高,等等。但这是对规范化工作原理的常见误解。在您的情况下,分解原始关系会在 4NF 中产生一个关系(至少)在 6NF 中产生一个关系。根据定义,它们在 3NF 中,但是没有正常的(咳嗽)方法来分解您的 2NF 关系以获得 3NF 和更高中的关系。

关于normalization - {a,b,c,d,e} a,b->c, a,b->d 和 d->e 的最​​高范式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com