8

私は3つのテーブルを持っています:

1) アプリケーション (AppId、名前)
2) 画面 (ScreenId、名前)
3) 関係 (AppId、ScreenId)

ここで、関連するテーブルにいくつかの制限を適用したいと思います。同じ画面を複数のアプリケーションに割り当てることはできますが、同じアプリケーションに割り当てられた同じ名前の 2 つの画面は存在できません。

Screen.Name をリレーション テーブルに追加して、AppId と Screen.Name に PK を作成できることはわかっていますが、Screen.Name は変更される可能性があるため、そのようなソリューションは必要ありません。

そのような制限を達成するために必要な追加オプションは何ですか?

4

2 に答える 2

11

およびテーブルに基づいてインデックス付きビューを作成し、そこに一意の制約を適用できます。RelationScreen

create view DRI_UniqueScreens
with SCHEMABINDING
as
    select r.AppId,s.Name
    from
       [Schema].Relation r
         inner join
       [Schema].Screen s
         on
            r.ScreenId = s.ScreenId
GO
CREATE UNIQUE CLUSTERED INDEX IX_DRI_UniqueScreens
    on DRI_UniqueScreens (AppId,Name)
于 2013-05-01T07:39:09.013 に答える