数据库规范化为3NF

时间:2014-01-06 20:45:23

标签: database database-normalization

我必须将下面的数据标准化为3NF,显示从UNF到3NF的所有阶段。

enter image description here

我已尝试过,但我不确定它是否正确。

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)

1 个答案:

答案 0 :(得分:0)

这看起来像是合理的第一次去。所有的PK符号让我有点困惑。 Owner表是否真的需要地址作为PK的一部分?此外,PropertyOwner来自哪里?是什么让它与所有者不同?

最佳做法是为每个实体提供一个Id - 通常是一个自动递增的整数(SQL Server中的IDENTITY),并将其用作PK。这意味着如果说所有者更改了他们的名字,PK本身就不会改变。

我认为你有一些真正的FKs的PK:PropertyFacilities中的FacilityCode实际上是FK;该表中的PropertyRef也是FK。 PK将是上面的唯一标识符。

这有意义吗?