活动记录/ ORM与普通表格?

时间:2010-05-10 08:07:39

标签: sql database-design normalization

我一直在玩Active Record,我注意到A.C./ORM在创建一对一的关系时总是使用以下数据库模型

id | country_id |名字| ...

国家

id | tld |名字| ...

不,我不知道,这不是第三范式的幻想吗?这清楚地表明“每个非主要属性都是非传递性的,取决于表格的每个键”。那么这个country_id不依赖于人格呢?

这是错误还是我没有明白这一点?

2 个答案:

答案 0 :(得分:3)

功能依赖性,A => B,意味着根据定义,A的每个不同值只能与单个B值相关联。换句话说,如果您知道A,则B是给定的。在这种情况下,给定的personid只能与一个country_id相关联,因此personid => country_id

答案 1 :(得分:2)

是的,这是依赖的。

在关系代数中,每个表都有一个与之关联的谓词(即填充表中值的语句是真实的)。

因此,例如“由id标识的人来自国家country,名称为name等......”

第三种常规形式有时也被称为:“每个非主要属性必须提供关于密钥,整个密钥以及密钥的事实。”

这就是说你正在寻找传递依赖。这方面的一个例子是

Person (id, country_id, tld, name, ...)

在此示例中,tld是可传递依赖的id,因为它依赖于country_id,它依赖于id。所以,这个例子会违反3NF。