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。