2014-04-09 41 views
0

到目前爲止,我有如下表:如何規範下表以3NF

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) 

讓以下更改酒店

幾個分支可能不是唯一我知道你的想法,如果你有任何建議。

回答

0

每個經理可以管理一個以上的酒店,但酒店只能有一個經理

=>所以,你需要每家酒店的經理,不是每個經理

  • 酒店(ID一個酒店(PK ),經理ID(FK),NoOfRooms,電話,地址)
  • 經理(ID(PK),刪除此:HotelID(FK),姓名,地址,電話,電子郵件,工資)

客房在特定的酒店是唯一的,但是跨越的酒店

幾個分支可能不是唯一=>沒關係

  • 房(無(PK),HotelID(PK),價格,尺寸,佔領,LOC)

每個客戶只能停留在一個酒店,並給予一個房間

=>一個房間是由房數加上酒店鑑定:

  • 客戶(NUM(PK),SSN,姓名,信用卡式,地址,開始日期,結束日期,AmtOwing,RoomNo(FK),HotelID(FK)

每個看守工作在只一個酒店,但酒店可能有許多看護人

=>沒關係

  • 看守(ID(PK),HotelID(FK),姓名,地址,電話,電子郵件,工資)
+0

您是否認爲應該有單獨的員工表和單獨的付款信息,還是那些不需要的? – mako

+0

這取決於。是的,經理和看守都是員工。問題是:是否會有一些過程讓你將它們放在一張表中?未來會有更多類型的員工嗎?事實上,這很好。但是如果有一天你有十種僱員和本地電話號碼將被國際化,你將不得不更新十張表格而不是一張僱員表格。如果決定允許更長的地址,您將不得不更改10個表。但是,也許這些事情永遠不會發生。 –

+0

至於單獨的付款信息,它大致相同。到目前爲止,你只有薪水金額。這通常不值得自己表。但薪水+撥備+貨幣可能。或者是薪水歷史。或者將來有效的提高。這真的取決於。數據模型沒有問題,但您可能需要單獨的表格用於未來的過程。但是這也讓事情變得更加複雜。如何保證每個員工都有薪水記錄? –