1

私はさまざまな会社で連絡先の連絡先データベースを作成しようとしています。担当者とビジネスは、データベース内の2つの別々のテーブルに格納されます。私は各連絡先を特定の会社に接続したいと思っています。テーブル全体のすべての列にForeign Keyを使用する必要がありますか?SQL外部キー関係

Contactテーブルには、次の属性があります。

Firstname 
Lastname 
Email 
Phone 

、会社テーブルがあります。

Name 

私はしたくないがもう列を!

+0

2つのテーブルの間にリレーションシップを作成するには、さらに多くの列を作成する必要があります。 – Siyual

+0

データ正規化の詳細を読んで理解しておく必要があります。もちろん、両方のテーブルにすべてのデータがあるわけではありません。それは、リレーショナルデータのポイントを完全に打ち負かします。連絡先テーブルにCompanyIDを作成し、CompanyテーブルのCompanyIDへの外部キー参照を作成します。 –

+0

それからあなたはうんざりです。列を追加することなくその機能を追加することはできません。連絡先が複数の会社にある場合は、最初に連絡先テーブル(主催者ID)に主キー(PK)列が必要です。連絡先IDと会社名だけを持つ別のテーブルを追加することをお勧めします(2列のPK )。連絡先が1つの会社にしか存在しない場合は、連絡先テーブルにCompanyNameを追加する必要があります –

答えて

1

コメントが長すぎます。あなたは自分のPrimary Keysとして動作するようにあなたのテーブルにIdentity列を追加する必要が

Create Table Contact 
(
    Id   Int Identity(1,1) Not Null Primary Key Clustered, 
    Firstname Varchar (20), 
    Lastname Varchar (20), 
    Email  Varchar (50), 
    Phone  Varchar (15), 
    CompanyId Int Not Null 
) 

Create Table Company 
(
    Id   Int Identity(1,1) Not Null Primary Key Clustered, 
    Name  Varchar (100) 
) 

Alter Table Contact 
Add Constraint FK_Contact_Company 
Foreign Key (CompanyId) References Company (Id) 

:FKがどのように見えるべきかについて、あなたの意見に対処するために、これはあなたが探してしなければならないテーブル構造です。

次に、関係を保持するためにContactテーブルにCompanyId列を追加する必要があります。

最後に、実際のForeign Key Constraintを作成する必要があります。

あなたのデータ型は私が推測したものとはまったく異なりますが、これは外部キー関係に使用する必要がある概念です。

+0

コードをコピーしてクエリに追加するだけで、結果が得られますか? – Malphai

+0

私が提供したコードをコピーした場合、外部キー制約が追加された質問に記載されている2つのテーブルが作成されます。すでにテーブルを作成している場合、このスクリプトの実行は失敗します。あなたはすでに持っているものにこれを組み込む必要があります。 – Siyual

+1

はい前のテーブルを削除してこのコードを実行しました。それは私が記述したとおりです、あなたの助けに感謝! – Malphai

関連する問題