10

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

しかし、Northwind サンプルを観察しているときに、ORDER DETAILS表に 2 つの主キーOrder Id&があることがわかりましたProduct Id。また、ルール テーブルによると、2 つの主キーを持つことはできません。では、ノースウィンドではどのように起こったのでしょうか?

私の場合、テーブルに 2 つの列を設定して 2 つの主キーにする方法を教えてください。

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

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

これは機能しますか??

編集 ;

現在、私のテーブルには SSMS に 2 つの PK があります。それは有効ですか、それとも 2 つの pk の組み合わせにすぎませんかここに画像の説明を入力

4

4 に答える 4

20

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

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

ALTER TABLE dbo.YourTableNameHere
ADD CONSTRAINT PK_YourTableNameHere
PRIMARY KEY(Item_Id, Purchase_Id)
于 2012-07-20T11:52:58.797 に答える
3

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

create table table1
(
col1 int,
col2 varchar(20),
....
Primary key (col1, col2)
)
于 2012-07-20T11:52:23.283 に答える
0
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] 
于 2012-07-20T11:56:27.863 に答える
0

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

于 2012-07-20T11:50:50.090 に答える