我有一个名为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