0

使用 SQL2005/2008。假设我有一个酒店表 (HotelID, HotelName) 和一个房间表 (RoomID, HotelID, RoomName) Hotel -> Room 1:M by HotelID RoomID is PK inside Room 现在我有一个合同表 (ContractID, HotelID, ContractDescription)和 ContractRate (ContractRateID, ContractID, RoomID, Rate) 定义了所有主键和外键,但是,¿将 ContractRate 中的 RoomID 与 Room 相关联的最佳方法是什么,考虑到 RoomID 只能来自与 Room 中的 HotelID 关联的值?目前我在 ContractRate.RoomID -> Room.RoomID 上有一个 FK,但这需要 Room.HotelID 的附加过滤器为 ContractRate -> Contract.HotelID,我可以在应用程序中强制执行,但想知道是否可以定义/强制执行在数据库中(或者如果我必须重新定义数据库)最好的 regads,Juanro

4

1 回答 1

1

我认为您必须将 RoomID 放在合同和 ContractRate 表中以进行规范化。但在当前情况下,没有人进行标准化,所以按照我的建议将hotelID 和 RoomID 都放在两个表中。

于 2010-05-10T10:07:01.467 回答