我有个亲戚:
R4 = {{T,U,V}, {T → U, U → T, T → V}}我从答案中得知,这种关系在BCNF中。
我正在经历严格确定这种关系所遵循的正常形式的过程。我很清楚为什么这种关系是1NF和2NF,如果我假设它在3NF中,那么BCNF很容易跟进。
然而,3NF的定义规定:
每个非素属性都非传递依赖于表中的每个候选键。
但是,据我所知,{T}和{U}都是表的候选键,因此{V}依赖于{U}。
维基百科上有一个3NF的替代定义:
卡洛·扎尼奥洛在1982年给出了一个3NF的定义,这个定义相当于Codd的定义,但表达方式不同。此定义指出,表在3NF中的当且仅当对于其每个函数依赖项X→A,至少有下列条件之一有效:
根据这个定义,这种关系在3NF中是明显的(所有的函数依赖都被"X是一个超级键“所涵盖)。
那为什么会有差异呢?我怎么会误用这个定义?请不要以我不想要的方式给我提供答案的快捷方式,除非你也帮助我理解为什么我的3NF应用程序(如所述)是不准确的。
发布于 2013-02-20 04:37:03
根据您提供的关系,对于BCNF,我们知道{T}和{U}是功能上确定{V}的候选密钥。如果{U}不是候选键,而是仍然是行列式,那么传递依赖就会发生。
https://dba.stackexchange.com/questions/35070
复制相似问题