web-dev-qa-db-ja.com

テーブルに2つの主キーを設定(結合)する方法

小規模な販売関連のアプリケーションでは、論理データモデルを使用してデータベースを設計しました。物理モデルに変換する段階に来てください。 SQL Server Management Studio Expressでテーブルを作成する際、論理データモデルに従って、2つの属性を組み合わせて一意のIDを形成する必要があります。 2つの主キーを組み合わせて設定することはできますか?

しかし、Northwind Sampleを観察していると、ORDER DETAILSテーブル、2つの主キーを見ることができますOrder IdProduct Id。また、ルールによると、テーブルに2つの主キーを設定することはできません。では、ノースウィンドでどのように起こったのでしょうか。

私の場合、テーブルに2つの列を設定して、2つの主キーにする必要がありますか?

誰かが次のような提案をしました

2つの主キーを作成するには、デザインビューでテーブルを開き、必須フィールドの2つをクリックし、CTLを押したまま、主キーを適用します

これは動作しますか?

編集;

これで、私のテーブルのSSMSに2つのPKがあります。それは有効ですか、それとも2つのパックの組み合わせですenter image description here

8
panindra

最も簡単な方法は、ビジュアルデザイナを使用するのではなく、SSMSExpressでT-SQLコマンドを使用することです。

テーブルを設計および作成したら、次のようなことを試してください。

ALTER TABLE dbo.YourTableNameHere
ADD CONSTRAINT PK_YourTableNameHere
PRIMARY KEY(Item_Id, Purchase_Id)
16
marc_s

テーブルに2つの主キーを作成することはできません。テーブル内の2つの列を組み合わせて、単一の主キーとして作成できます

create table table1
(
col1 int,
col2 varchar(20),
....
Primary key (col1, col2)
)
3
Joe G Joseph

2つの主キーを持つことはできませんが、2つの列で構成されるキーである複合主キーを持つことができます。これは、[SalesOrderID]と[SalesOrderDetailID]を使用して[SalesOrderDetail]テーブルで取得したものとまったく同じです。

0
Diego
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] 
0
jainvikram444