8

以下のテーブルを宣言すると、両方の外部キーが一意の主キーを作成することを暗黙的に意味しますか、それとも両方の属性を主キーとして作成するために何かを行う必要がありますか?

CREATE TABLE Report_has_Items
(
    ReportID int REFERENCES Report(ReportID) NOT NULL,
    ItemID int REFERENCES Item(ItemID) NOT NULL
)

基本的に、他のテーブルからの外部キーである両方の属性が一緒になって一意のキーを形成します。

4

3 に答える 3

8

制約に名前を付けましょう。

CREATE TABLE dbo.Report_has_Items(
    ReportID int NOT NULL,
       CONSTRAINT [FK_RHI_Report] (ReportId) REFERENCES dbo.Report(ReportID),
    ItemID int NOT NULL,
       Constraint [FK_RHI_Item] (ItemId) REFERENCES dbo.Item(ItemID),
    CONSTRAINT [PK_RHI] PRIMARY KEY (ReportID, ItemID)
)
于 2013-04-12T03:03:31.763 に答える
3

あなたの質問を完全に理解しているかどうかはわかりませんが、複合主キー (複数の属性を持つ主キー) を作成しようとしていると思います。次のことができます。

CREATE TABLE Report_has_Items(
  ReportID int references Report(ReportID),
  ItemID int references Item(ItemID),
  PRIMARY KEY (ReportID , ItemID )
);

: ペア (ReportID 、 ItemID ) はテーブルに対して一意である必要があり、どちらの値も NULL にすることはできません。

これは、SQLクエリの非常に便利なリンクです

于 2013-04-12T00:49:28.013 に答える