小規模な販売関連のアプリケーションでは、論理データモデルを使用してデータベースを設計しました。物理モデルに変換する段階に来てください。 SQL Server Management Studio Expressでテーブルを作成する際、論理データモデルに従って、2つの属性を組み合わせて一意のIDを形成する必要があります。 2つの主キーを組み合わせて設定することはできますか?
しかし、Northwind Sampleを観察していると、ORDER DETAILS
テーブル、2つの主キーを見ることができますOrder Id
&Product Id
。また、ルールによると、テーブルに2つの主キーを設定することはできません。では、ノースウィンドでどのように起こったのでしょうか。
私の場合、テーブルに2つの列を設定して、2つの主キーにする必要がありますか?
誰かが次のような提案をしました
2つの主キーを作成するには、デザインビューでテーブルを開き、必須フィールドの2つをクリックし、CTLを押したまま、主キーを適用します
これは動作しますか?
編集;
これで、私のテーブルのSSMSに2つのPKがあります。それは有効ですか、それとも2つのパックの組み合わせです
最も簡単な方法は、ビジュアルデザイナを使用するのではなく、SSMSExpressでT-SQLコマンドを使用することです。
テーブルを設計および作成したら、次のようなことを試してください。
ALTER TABLE dbo.YourTableNameHere
ADD CONSTRAINT PK_YourTableNameHere
PRIMARY KEY(Item_Id, Purchase_Id)
テーブルに2つの主キーを作成することはできません。テーブル内の2つの列を組み合わせて、単一の主キーとして作成できます
create table table1
(
col1 int,
col2 varchar(20),
....
Primary key (col1, col2)
)
2つの主キーを持つことはできませんが、2つの列で構成されるキーである複合主キーを持つことができます。これは、[SalesOrderID]と[SalesOrderDetailID]を使用して[SalesOrderDetail]テーブルで取得したものとまったく同じです。
CREATE TABLE [dbo].[tab2](
[col1] [int] NOT NULL,
[col2] [int] NOT NULL,
[col3] [nchar](10) NOT NULL,
[col4] [nchar](10) NOT NULL,
CONSTRAINT [PK_tab2] PRIMARY KEY CLUSTERED
(
[col1] ASC,
[col2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]