我希望在 RDBMS 中模拟一个有多个提议时间的会议,但其中一个将被选为接受的或主要的。就像是:
create table Meeting ( meetingId int );
create table ProposedTime( meetingId int, dateAndTime datetime );
但是,将有一个界面,用户可以在其中选择一个建议的时间,我需要保存该选择。
我可以想到两个选项,每个选项都有缺点:
在会议表中保留选定的提案:
create table Meeting( meetingId int, selectedProposalId int ); create table ProposedTime( proposalId int PK, meetingId int, dateAndTime datetime );
使用这种方法, selectedProposalId 可能用于属于不同会议的提案。
在所选提案上存储一个标志:
create table Meeting(meetingId int); create table ProposedTime( meetingId int, dateAndTime datetime, isSelected bool );
使用这种方法,可以将两个提案标记为选中。
我知道有“黑客”来确保完整性(对于 2,在 MS SQL 中你可以有一个过滤的唯一索引来确保只选择一个),但我宁愿不承诺供应商特定的代码。
我也可以只在应用程序层强制执行正确性,但这仍然让两个选项都打开。
大家有什么推荐的?如果有人有任何想法,我也愿意接受其他选择;)
注意:我使用的是 Rails 3,所以如果有使用 ActiveRecord 处理此问题的首选方法,我想听听。