2014-12-04 94 views
-1

我有这个表正常化至少3NF归一化为3NF?

的customerID | customerName | petID | petName | transID | transName | transDetails |价格

与FD如下

的customerID - > {客户名称,petID}

petID - > {petName,TRANSID}

TRANSID - > {transName,transDetails,价格}

现在我对此的回答是:

客户(的customerID,客户名称)// CustomerID作为PK

宠物(petID,petName,的customerID)// petID作为PK和CustomerID作为FK

交易(TRANSID,transName,transDetails,价钱,petID)// TRANSID作为PK和petID为FK

我真不明白它那么多,因为我无法吸收信息,因为现在我的大脑现在是单向:(所以我纸浆我对吗?

我在FD看上去要密切配合,应实际3NF是:

宠物(petID,petName,TRANSID)

客户(的customerID,客户名称,petID)

交易( transID,transName,transDetails,Price)

+0

WOW里面是放在这里这么多类似的问题:http://stackoverflow.com/search?q=3nf – kristianp 2014-12-04 01:30:59

回答

0

目前尚不清楚顾客和宠物之间的正确关系是什么。从功能依赖其接缝,所有三个实体相关的1:1,这意味着只要外键也是唯一的第一个答案可以工作(以防止1:N)。

第二个答案满足3NF

  • 所有三项要求每场功能依赖于关键
  • 整个键(无组合键)
  • ,而且全部是关键(没有候选键)

但是我会保持外键从宠物或客户表了。每个都可以独立存在,我们希望避免在外键列中产生空值。外键属于事务表,因为事务是将宠物链接到客户的事物,而不管所期望的基数如何。

+0

好了,客户可以有一个以上的宠物,和宠物可以有一个以上的交易。由于1NF中不能有多值属性,第二个答案是不正确的,对吗? – 2014-12-04 05:52:43

+0

由于customer = pet +和pet = trans *,外键不是唯一的。 – 2014-12-04 05:55:10

+0

没错,外键在关系的“多”一边进入表格 – Sergey 2014-12-04 15:55:09