RDBMSで、いくつかの提案された時間がある会議をモデル化することを検討していますが、1つが承認済みまたは主要なものとして選択されます。何かのようなもの:
create table Meeting ( meetingId int );
create table ProposedTime( meetingId int, dateAndTime datetime );
ただし、ユーザーが提案された時間の1つを選択できるインターフェイスがあり、その選択を保存する必要があります。
私は2つのオプションを考えることができますが、それぞれに欠点があります。
選択した提案を会議テーブルに保持します。
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つの提案に選択済みのマークを付けることができます。
整合性を確保するための「ハック」があることは知っていますが(2の場合、MS SQLでは、フィルターされた一意のインデックスを使用して、1つだけが選択されるようにすることができます)、ベンダー固有のコードにはコミットしません。
また、アプリケーション層で正確さを強制するだけでも問題ありませんが、それでも両方のオプションが開いたままになります。
何をお勧めしますか?誰かが何かアイデアを持っているなら、私は他のオプションも開いています;)
注:私はRails 3を使用しているので、ActiveRecordでこれを処理するための好ましい方法がある場合は、それを聞きたいと思います。