2012-02-13 103 views
-2

我不明白爲什麼我的表中的關係被顛倒了?以及如何將外鍵設置爲自動增量?所以當我在父表中插入數據時,我的子表中的主鍵也會增加。一個是SQL Server管理工作室裏的很多關係

?它爲什麼我的圖中的關係相反,看看這裏

enter image description here

它應該是倒過來,我該怎麼做?

+0

你與這個問題有關嗎? http://stackoverflow.com/q/9260543/27535 – gbn 2012-02-13 14:22:54

回答

2

我誠實地不會試圖讓用戶界面彎曲到您的要求。相反,讓我們學習一些DDL!

CREATE TABLE dbo.People 
(
    PeopleID INT IDENTITY(1,1) PRIMARY KEY, 
    FirstName NVARCHAR(32) 
    --, LastName, etc. 
); 

CREATE TABLE dbo.Address 
(
    AddressID INT IDENTITY(1,1) PRIMARY KEY, 
    PeopleID INT NOT NULL FOREIGN KEY 
    REFERENCES dbo.People(PeopleID), 
    Address VARCHAR(255) 
    --, other columns 
); 

數據總體的示例。假設你想添加一個名叫Bob的新人,他有兩個地址。

DECLARE @PeopleID INT; 

INSERT dbo.People(FirstName) SELECT N'Bob'; 

SELECT @PeopleID = SCOPE_IDENTITY(); 

INSERT dbo.Address(PeopleID, Address) SELECT @PeopleID, '255 Hemlock Lane'; 
INSERT dbo.Address(PeopleID, Address) SELECT @PeopleID, '345 Hutcheson Ave'; 
+0

。我看到,順便說一句,只是一個問題,如果我在父表中添加了一個數據在我的主數據庫中,其他表中的外鍵是否會更新? – KyelJmD 2012-02-13 15:31:36

+0

不,你需要自己做,外鍵表不會自動填充。如果你通過運行'INSERT dbo.People'添加了一個新的人,那麼SQL Server是否應該猜測應該放在地址表中的其他數據? – 2012-02-13 15:37:32

+0

例如,我會如何處理這個問題。如果我在可能的父表中添加了一個新數據,那麼與其相關的另一個表中的外鍵將獲得與引用它的鍵相同的值。或鏈接到它。我是否清楚自己? – KyelJmD 2012-02-13 15:56:06

4

不向我求助。 People看起來像它有一個外鍵引用Address的主鍵。在這種情況下,不應該是這樣的。這就是數據庫圖工具描繪外鍵關係的方式。

您不會將您的外鍵設置爲自動增量。外鍵是對另一個表中的主鍵的引用。換句話說,它將匹配父表中的主鍵值。

+0

所以如何將我的Address_id表中添加一個值,以便我可以知道它是否鏈接到地址表。另一件事。我希望我的地址表依賴Peoples表,我該怎麼做? – KyelJmD 2012-02-13 14:20:07

+0

@KyelJmD你的圖有另一種方式:你的Peoples表依賴(和引用)你的地址表。 – 2012-02-13 14:33:29

+0

我會怎麼做呢?地址依賴於人嗎?同時它也有一對多的關係。一個人可以有多少地址? – KyelJmD 2012-02-13 14:37:48

相關問題