我必须将此表规范化至少3NF
customerID | customerName | petID | petName | transID | transName | transDetails |价
与FD如下
customerID - > {customerName,petID}
petID - > {petName,transID}
transID - > {transName,transDetails,Price}
现在我对此的回答是:
customer(customerID,customerName)// customerID as PK
pet(petID,petName,customerID)// petID为PK,customerID为FK
交易(transID,transName,transDetails,Price,petID)// transID为PK,petID为FK
我真的不太了解它,因为我现在无法吸收这些信息,因为我的大脑现在是来自大学的纸浆:(我是对的吗?
我非常仔细地看着FD,如果实际的3NF是:
宠物(petID,petName,transID)客户(customerID,customerName,petID)
交易(transID,transName,transDetails,Price)
答案 0 :(得分:0)
目前尚不清楚顾客与宠物之间的关系是什么。从功能依赖性来看,所有三个实体都是1:1相关的,这意味着只要外键也是唯一的(防止1:N),你的第一个答案就可以工作。
第二个答案满足3NF的所有三个要求
但我会将外键远离宠物或顾客桌。每个都可以独立存在,我们希望避免外键列中的空值。外键属于事务表,因为事务是将宠物链接到客户的,无论所需的基数如何。