Database 这个数据库设计实现2NF还是3NF?
好的,我有两张桌子。第一个表的名称是Database 这个数据库设计实现2NF还是3NF?,database,oracle,database-design,database-normalization,Database,Oracle,Database Design,Database Normalization,好的,我有两张桌子。第一个表的名称是ownerwith owner_id primary key first_name last_name car_reg_no primary key car_type car_make car_model car_origin owner_id foreign key 我还有另一张桌子汽车 owner_id primary key first_name last_name car_reg_no primary key car_type car_make
owner
with
owner_id primary key
first_name
last_name
car_reg_no primary key
car_type
car_make
car_model
car_origin
owner_id foreign key
我还有另一张桌子汽车
owner_id primary key
first_name
last_name
car_reg_no primary key
car_type
car_make
car_model
car_origin
owner_id foreign key
这个设计是2NF还是3NF?或者两者都不是?AFAIK,2NF,因为car
表的字段相互依赖。您需要第三个表来显示car\u type
,其中列出了品牌、型号和产地,以及car
表中的外国car\u type\u id
。AFAIK,2NF,因为car
表的字段相互依赖。您需要为车型
提供第三个表,其中列出了品牌、型号和产地,以及车型
表中的外国车型id
。3NF表示其在2NF中,没有。用一个稍微更容易理解的术语来说:“所有属性都依赖于键、整个键以及除了键之外的任何东西”
第一个表完成了所有这些,所以它是3NF
第二个表需要一些分析:是否存在对非键的函数依赖关系?具体来说,是否有属于不同品牌的相同车型
- 如果是,则功能依赖项
car\u model
->car\u make
不存在,并且该表为3NF格式(除非某些其他依赖项违反了3NF-请参阅下面关于car\u origin
的注释)
- 不,然后是违反3NF的
汽车型号
->汽车品牌
还有,car\u origin
的含义是什么?如果它在功能上依赖于一个非键,这也可能违反3NF。a 3NF表示它在2NF中,并且没有。用一个稍微更容易理解的术语来说:“所有属性都依赖于键、整个键以及除了键之外的任何东西”
第一个表完成了所有这些,所以它是3NF
第二个表需要一些分析:是否存在对非键的函数依赖关系?具体来说,是否有属于不同品牌的相同车型
- 如果是,则功能依赖项
car\u model
->car\u make
不存在,并且该表为3NF格式(除非某些其他依赖项违反了3NF-请参阅下面关于car\u origin
的注释)
- 不,然后是违反3NF的
汽车型号
->汽车品牌
还有,car\u origin
的含义是什么?如果它在功能上依赖于非钥匙,这也可能违反3NF。我同意将复制车型数据。规范化与添加代理id号无关。@Catcall:不,但它确实与数据复制有关。新字段只是目的。我同意将复制汽车类型数据。规范化与添加代理id号无关。@Catcall:不,但它与数据复制有关。新领域只是达到目的的手段。这是家庭作业吗?如果是,请贴上这样的标签。这是家庭作业吗?如果是,请贴上这样的标签。不同制造商生产的2辆车不能有相同的型号。所以我猜它违反了3NF。@有人是的,这意味着它违反了3NF。不同制造商生产的2辆车不能有相同的型号。所以我猜它违反了3NF。@有人是的,这意味着它违反了3NF。