Thanks Greg. I played with this some since posting and came up with that as part of the solution. What I ended up with was:
ContractAssignment - unique index on all four columns
- ContractID not null,
- EquipmentID not null,
- RoomID not null,
- WindowTypeListID null
WindowsTypeList - primary key on WindowsTypeListID
* WindowTypeListID not null
WindowsTypeListDetail - composite primary key on WindowsTypeListID and WindowsTypeID
* WindowTypeListID not null,
* WindowTypeID not null
The WindowsTypeList table is needed so I can enforce the relationship between ContractAssignment and WindowsTypeListDetail. I can't join directly since WindowsTypeListDetail can have multiple records for a given WindowTypeListID.
Thanks.