1

相同的外鍵我真的不知道這是否是在邏輯上是可行的,但我有一個表:鏈接多個表的字段中TSQL

PERSON: Id (PK), Name, SoldTo (FK), ShipTo (FK), BillTo (FK) 

ADDRESS: AddrId (PK), Street, Number, Town, Type 

TypeADDRESS將包含描述地址類型的字符串。我想鏈接SoldTo, ShipToBillToAddrId。當然,他們也可以指向相同的記錄。

但是在SSMS中,它禁止我這樣做。

任何人都知道解決方法或更好的方法來做到這一點?由於

UPDATE

爲了明白我的意思與「SSMS禁止我這樣做」看看在下面的鏈接的屏幕截圖。考慮作爲ADDRESSCMF_AccountInfo作爲PERSON。正如你看到的,我可以添加ContactId的關係,只是一次......

SSMS Tables and Columns Dialog http://img850.imageshack.us/img850/24/69338662.jpg

+2

* SSMS *爲什麼禁止你這樣做?你能告訴我們你想做什麼(在T-SQL中)?你會得到錯誤 - 如果是這樣的話:**準確的**錯誤? –

回答

2

你必須添加多個關係! (具有不同的名稱)就像它是不同的表。

+0

這就是我一直在尋找的!非常感謝 – CiccioMiami

4

不知道你是如何試圖在SSMS中做到這一點的(可能你正在嘗試一些交互式工具,我對它們知之甚少),但這是你如何在普通的Transact-SQL中做你想做的事情:

CREATE TABLE Address (
    AddrId int CONSTRAINT PK_Address PRIMARY KEY, 
    Street varchar(50), 
    Number int, 
    Town varchar(50), 
    Type int 
); 

CREATE TABLE Person (
    Id int PRIMARY KEY, 
    Name varchar(100), 
    SoldTo int NOT NULL CONSTRAINT FK_Address_SoldTo FOREIGN KEY REFERENCES Address (AddrId), 
    ShipTo int NOT NULL CONSTRAINT FK_Address_ShipTo FOREIGN KEY REFERENCES Address (AddrId), 
    BillTo int NOT NULL CONSTRAINT FK_Address_BillTo FOREIGN KEY REFERENCES Address (AddrId) 
); 

不確定實際的類型,但你明白了。您也可以在不需要的地方放置NOT NULL(或在必要時添加它)。

+2

+1 - 使用這些列創建從「Person」到「Address」的三個FK關係應該沒有任何問題.... –

+1

+1給Andriy。我對@CiccioMiami的問題:好像有人在銷售,運送(併爲其開票)。奴隸制在邁阿密被重新合法化了嗎? –

+0

Ahaha,很好!這只是一個例子。請參閱問題更新中的屏幕截圖。謝謝 – CiccioMiami