我有一個名爲Books的表,其中包含3列。SQL Server中的複合外鍵
TableName: Books
Columns: BookId (PK), BookName, Book_Publisher_XRef_Id (FK), IsInternal
我有兩個包含發佈者信息的表。這兩個表都有不同的一組列。
TableName: InternalPublishers
Columns: PublisherId (PK), PublisherName, ....
TableName: ExternalPublishers
Columns: PublisherId (PK), PublisherName, ....
我有一個鏈接表,其中包含有關哪本書屬於哪個發佈者的信息。一本書可以有多個發佈者。
TableName: Books_Publishers_XRef
Columns: Book_Publisher_XRef_Id (PK), PublisherId
如果我想創建的publisherId外鍵約束,我需要建立某種這我不知道可以創建複合外鍵約束。
因此,在這種情況下,在Books_Publishers_XRef表中的PublisherId上實現FK的最佳方法是什麼?在2個表,即一個內部出版商,另一個用於外部出版商,並有2列在書籍表Books_Internal_Publishers_XRef和Books_External_Publishesr_XRef表
歇Books_Publishers_XRef表?
不要在Publisher_Id列上創建FK並將設計保持原樣?
在書籍表和Books_Publishers_XRef表,如果Publisher_Type_Id = 1,它屬於Internal_Publishers表和Publisher_Type_Id = 2,其中加入Publisher_Type_Id柱創建複合FK,它屬於External_Publishers表? (不知道這是可能的)
其他一些架構設計?
請指教。
你真的需要出版商兩個表?你可以有一個表和一個額外的列指定它是內部的還是外部的。 – 2012-02-15 18:04:46
他們都有不同的領域,我不知道我是否在某些字段中留下值作爲基於PublisherType的NULL – Asdfg 2012-02-15 18:06:27
您可以有一個發佈商表格和兩個與發佈者1:1關係包含特定每個發佈者類型的字段。 – 2012-02-15 18:09:07