1

我正嘗試在各個公司創建聯繫人的聯繫人數據庫。聯繫人和企業將被存儲在數據庫中的兩個單獨的表中。我希望每個聯繫人都能連接到特定的公司。我是否應該將外鍵用於整個表格中的所有列,或者它是如何製作的?SQL外鍵關係

聯繫表具有以下屬性:

Firstname 
Lastname 
Email 
Phone 

和公司的表有:

Name 

我不想再列!

+0

如果你想要兩個表之間的關係,你將需要更多的列。 – Siyual

+0

您需要更詳細地閱讀和了解數據標準化。當然,你沒有兩張表中的所有數據。這完全會打敗關係數據。您將在聯繫人表中創建一個公司ID,該公司ID將在公司表中具有對CompanyID的外鍵引用。 –

+0

然後你擰了。如果不添加更多列,則無法添加該功能。如果聯繫人可以位於多個公司中,則首先需要在聯繫人表(例如ContactId)中有一個主鍵(PK)列。那麼,最好是添加另一個只有ContactId和CompanyName的表(作爲2列PK )。如果聯繫人只能在一個公司中,則需要將CompanyName添加到聯繫人表 –

回答

1

這太長了評論。爲了解決在FK應該如何看您的意見,這是你應找表結構:

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) 

你需要一個Identity列添加到您的表作爲他們Primary Keys

接下來,您需要添加一個CompanyId列到您的Contact表中以保存關係。

最後,您需要創建實際的Foreign Key Constraint

你的數據類型肯定不同於我所猜測的,但這是你應該用於你的外鍵關係的概念。

+0

所以如果我只是簡單地複製你的代碼並將其添加到查詢中,我會得到我想要的結果? – Malphai

+0

如果您複製了我提供的代碼,它會創建您在問題中提到的兩個表,並添加了外鍵約束。如果您已經創建了這些表,則運行此腳本將失敗。您需要將其納入您已有的內容。 – Siyual

+1

是的,我刪除了以前的表格並執行了這段代碼。正如我所描述的,感謝您的幫助! – Malphai