2010-05-03 40 views
0

使用SQL2005/2008。 假設我有一個酒店餐桌(HotelID,HotelName)和一個房間表(RoomID,HotelID,RoomName)酒店 - >房間1:M由HotelID RoomID在房間內是PK 現在我有一個合同表(ContractID,HotelID, ContractDescription)和ContractRate(ContractRateID,ContractID,RoomID,Rate) 定義了所有初選和外鍵,但是, 將ContractRate中的RoomID與Room關聯的最佳方式是考慮到RoomID只能通過與HotelID關聯的值在房間裏? 目前我在ContractRate.RoomID - > Room.RoomID上有一個FK,但是這需要Room.HotelID作爲ContractRate - > Contract.HotelID的附加過濾器,我可以在應用程序中強制執行,但想知道是否可以定義/ (或者如果我必須重新定義數據庫) Best Regads, Juanro依賴父字段的子表上的外鍵

回答

1

我認爲您必須將RoomID放在contract和ContractRate表中才能規範化。 ,但在目前的情況下,沒有人正在進行規範化,因此根據我的建議將兩個酒店ID和RoomID都放在這兩個表中。