我必须将下面的数据标准化为3NF,显示从UNF到3NF的所有阶段。
我已尝试过,但我不确定它是否正确。
1NF
OwnerName(PK),OwnerAddress(PK),PhoneNo
OwnerName(PK),OwnerAddress(PK),PropertyRef(PK),NrOfBeds,Location,Facilities,WeeksAvailable
2NF
所有者(所有者名称(PK),所有者地址(PK),PhoneNo)
PropertyOwner(OwnerName(PK),OwnerAddress(PK),PropertyRef(PK))
物业(PropertyRef(PK),NrOfBeds,Location,Facilities,WeeksAvailable)
3NF
所有者(所有者名称(PK),所有者地址(PK),PhoneNo)
PropertyOwner(OwnerName(PK),OwnerAddress(PK),PropertyRef(PK)*)
物业(PropertyRef(PK),NrOfBeds,位置,设施)
WeeksAvailable(PropertyRef(PK)*,WeekNr(PK))
PropertyFacilities(PropertyRef(PK),FacilityCode(PK))
设施(FacilityCode(PK),Desc)
答案 0 :(得分:0)
这看起来像是合理的第一次去。所有的PK符号让我有点困惑。 Owner表是否真的需要地址作为PK的一部分?此外,PropertyOwner来自哪里?是什么让它与所有者不同?
最佳做法是为每个实体提供一个Id - 通常是一个自动递增的整数(SQL Server中的IDENTITY),并将其用作PK。这意味着如果说所有者更改了他们的名字,PK本身就不会改变。
我认为你有一些真正的FKs的PK:PropertyFacilities中的FacilityCode实际上是FK;该表中的PropertyRef也是FK。 PK将是上面的唯一标识符。
这有意义吗?