【发布时间】:2012-05-31 07:24:47
【问题描述】:
我有以下关系。一家公司有多名员工。每个员工都由其员工编号 ENr 定义,并且他的地址为 EAddress,邮政编码为 ZZipCode。带有 ZipCode 的 City 是一个自己的表,因为否则表 Employee 中存在冗余。因此ZZipCode 是Employee 中的外键。
组由其GGroupId 定义,因此这是主键。每个组有一个组长,可以是任何员工。因此ENr 是一个外键。
每个员工都可以在一个或多个组中工作。出于这个原因,表GroupMember 存在于其中元组ENr 和GGroupID 定义主键并且都是外键(我不能同时使用粗体和斜体)。
最后,产品由其产品 ID PId 定义,并与组 GGroupID 相关联。
这里是那个书面描述的关系。
Employe(ENr, EName, EGender, EAddress, ZZipCode, ESocNr, ESalery)
Group(GGroupId, GName, GCostNr, ENr)
GroupMember(ENr, GGroupID) #两个成员都是外键 太!
产品(PId、PName、PPrice、GGRoupId)
Zip(ZZipCode, ZCityName, SStateID)
State(SStateID, SStateName)
为了澄清:粗体成员是主键,斜体成员是外键。
我试图将这种关系放入3NF。谁能确认这是正确的?
【问题讨论】:
-
不确定 3NF 但它已标准化,我找不到更好的关系
-
您想要什么形式的确认?我的意思是,说“是的,是的”就足够了吗? :)
-
好吧,我试着把它放到 3NF 中。如果不是,你可以说我为什么不;)
-
我不能,因为我非常确信它是 3NF。
-
会不会是 GName 也是 Group 的决定因素而 PName 也是 Product 的决定因素(即组和产品具有唯一的名称)?如果是这种情况,那么 PName 应该是 Product 的另一个键,而 GName 应该是 Group 的键,以满足 3NF 的要求。
标签: database relational-database normalization 3nf