如何将以下表格标准化为3NF

时间:2014-04-09 21:17:58

标签: database-normalization

到目前为止,我有以下表格:

Hotel (ID(pk), NoOfRooms, Phone, Address)
Room (No(pk), HotelID(pk), Rate, Size, Occupied, Loc)
Customer (Num(pk), SSN, Name, CreditCard, Address, StartDate, EndDate, AmtOwing, RoomNo(fk))
CareTaker (ID(pk), HotelID(fk), Name, Address, Phone, Email, Salary)
Manager (ID(pk), HotelID(fk), Name, Address, Phone, Email, Salary)

有以下假设:

每位经理可以管理多家酒店,但酒店可能只有一位经理

每位顾客只能入住一家酒店并获得一间客房

每位看护人只在一家酒店工作,但酒店可能有很多看护人员

特定酒店的客房是独一无二的,但酒店的几个分店可能并不是唯一的

基于上述假设,我认为应该对表格进行以下更改

Hotel (ID(pk), NoOfRooms, Phone, Address)
Room (No(pk), HotelID(pk), Rate, Size, Occupied, Loc)
Customer (Num(pk), Name, StartDate, EndDate, RoomNo(fk), SSN(fk))
CustomerPaymentInfo (SSN(pk), CreditCard, Address, AmtOwing)
CareTaker (ID(pk), HotelID(fk))
Manager (ID(pk), HotelID(fk))
Employee (ID(pk), Name, Address, Phone, Email, Salary)

让我知道您的想法以及您是否有任何建议。

1 个答案:

答案 0 :(得分:0)

每位经理可以管理多家酒店,但酒店可能只有一位经理

=>所以你需要每个酒店一个经理,而不是每个经理一个酒店

  • 酒店(ID(pk),经理ID(fk),NoOfRooms,电话,地址)
  • 经理(身份证号码(pk),取消:酒店ID(fk),姓名,地址,电话,电邮,薪资)

特定酒店的客房是独一无二的,但酒店的几个分店可能并不是唯一的

=>好

  • 房间(否(pk),酒店ID(pk),房价,大小,入住,位置)

每位顾客只能入住一家酒店并获得一间客房

=>房间号由房号和酒店标识:

  • 客户(Num(pk),SSN,姓名,CreditCard,地址,StartDate,EndDate,AmtOwing,RoomNo(fk), HotelID(fk)

每位看护人只在一家酒店工作,但酒店可能有很多看护人员

=>好

  • CareTaker(ID(pk),HotelID(fk),姓名,地址,电话,电邮,薪水)