:Set
を想定しSQL Serverの条件付き固有のインデックス
PK | ClientID | SetID | Title
-----------------------------
P1 | C1 | S1 | Title1
P2 | C1 | S1 | Title1
P3 | C2 | S2 | Title1
P4 | C2 | S2 | Title1
P3 | C1 | S3 | Title2
P5 | C1 | S3 | Title2
がClient
に属し、私は制約がタイトルを除いて、クライアント内で一意であること一意のインデックスを持つことができますそれは同じセット内の兄弟です。
したがって、例えば、私はTitle1
を2つでは1つに2つではなくClient
にすることができます。今度はClient1
の場合、Title1
という2番目のレコードを持っていますが、SetID
と他のレコードと同じものがある場合は、Title
となります。
私はSQL Azureを使用していますが、より一般的には興味があります(2008 R2/2012など)。
編集:
テーブルの構造は変更できませんのでご注意ください。これはすでにこのように存在し、その背後には複雑なビジネス層があります。私はこれを修正することができれば、そうであれば偉大で、そうでなければ、壊れたままにすることができます。
私はあなたの一意のインデックスを持ってしようとしているかを見ることができません重複した情報を持つことを可能にする3つの列。インデックスの一部になるために、たとえばID列を追加する場合にのみこれが修正できますが、テーブルを変更することはできません。 – gotqn
私は列を追加することはできますが、テーブルを2つに分割するなどの変更を加えることはできません。 –
@gotqn。ユニークなインデックスである必要はありません、それはちょうど私がトリックを行うだろうと思っている、ちょうど方法を考え出していない! :) –