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

Sql 活动记录/ORM与普通表格?,sql,database-design,normalization,Sql,Database Design,Normalization,我一直在使用activerecord,我注意到a.C./ORM在创建一对一关系时总是使用以下数据库模型 人 身份证|国家|身份证|姓名| 国家 id | tld |名称| 不,我想知道,这不是第三种正常形式的小提琴吗?这清楚地表明“每个非素数属性都不可传递地依赖于表的每个键”。这个国家不依赖人格,是吗 那么这是错误的还是我没有抓住要点?函数依赖性,A=>B,意味着A的每个不同值,根据定义,只能与B的单个值关联。换句话说,如果你知道A,那么B是给定的。在这种情况下,给定的personid只能与一个

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

人 身份证|国家|身份证|姓名|

国家 id | tld |名称|

不,我想知道,这不是第三种正常形式的小提琴吗?这清楚地表明“每个非素数属性都不可传递地依赖于表的每个键”。这个国家不依赖人格,是吗


那么这是错误的还是我没有抓住要点?

函数依赖性,A=>B,意味着A的每个不同值,根据定义,只能与B的单个值关联。换句话说,如果你知道A,那么B是给定的。在这种情况下,给定的
personid
只能与一个
country\u id
相关联,因此
personid=>country\u id

函数依赖项a=>B意味着根据定义,a的每个不同值只能与B的单个值相关联。换句话说,如果您知道a,则B是给定的。在这种情况下,给定的
个人id
只能与一个
国家/地区id
关联,因此
个人id=>国家/地区id
是的,它是依赖的

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

因此,例如,“由
id
标识的人,来自国家
country
,有名字
name
,等等。”

第三种范式有时也被表述为:“每个非素数属性都必须提供一个关于键、整个键以及除了键以外的任何东西的事实。”

也就是说,您正在寻找可传递的依赖项。这方面的一个例子是

Person (id, country_id, tld, name, ...)
在本例中,tld是可传递依赖id,因为它依赖于依赖于id的国家/地区id。因此,本例将违反3NF。

是的,它是依赖的

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

因此,例如,“由
id
标识的人,来自国家
country
,有名字
name
,等等。”

第三种范式有时也被表述为:“每个非素数属性都必须提供一个关于键、整个键以及除了键以外的任何东西的事实。”

也就是说,您正在寻找可传递的依赖项。这方面的一个例子是

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

在本例中,tld是可传递依赖id,因为它依赖于依赖于id的国家/地区id。因此,本例将违反3NF。

+1-国家/地区id仅记录此人所属的国家,因此它是此人(居住在该国的人)的一个属性。如果个人记录也有“region”(region在逻辑上是国家的一个属性),那么它将违反3NF.+1-country_id只记录个人所属的国家,因此它是个人的一个属性(个人居住在国家)。如果个人记录也有“region”(region在逻辑上是国家的一个属性),那么它将违反3NF。