私は3つの列を含むBooksという名前のテーブルを持っています。SQL Serverの複合外部キー
TableName: Books
Columns: BookId (PK), BookName, Book_Publisher_XRef_Id (FK), IsInternal
私は出版社情報を含む2つのテーブルを持っています。これらのテーブルの両方には、異なる列のセットがあります。
TableName: InternalPublishers
Columns: PublisherId (PK), PublisherName, ....
TableName: ExternalPublishers
Columns: PublisherId (PK), PublisherName, ....
どの書籍がどの出版社に属しているかに関する情報を含むリンクテーブルがあります。 1つの本は複数の出版社を持つことができます。
TableName: Books_Publishers_XRef
Columns: Book_Publisher_XRef_Id (PK), PublisherId
私は発行者IDの外部キー制約を作成したい場合は、私が作成できることを確認していないコンポジット外部キー制約のようなものを作成する必要があります。
このシナリオでは、BooksPublishers_XRefテーブルのPublisherIdでFKを達成する最も良い方法は何ですか? 2つのテーブル、すなわち内部出版用と外部出版社のための別のものとしていBooks_Internal_Publishers_XRefとBooks_External_Publishesr_XRefテーブルのための本テーブルの2列の
ブレークBooks_Publishers_XRefテーブル?
Publisher_Id列にFKを作成せずにそのまま使用しますか?
Publisher_Type_Id = 1の場合、それはInternal_PublishersテーブルとPublisher_Type_Id = 2に属し、それはExternal_Publishersテーブルに属する書籍テーブルとBooks_Publishers_XRefテーブルにPublisher_Type_Id列を追加することにより、複合FKを作成しますか? (これが可能かどうか分かりません)
他のスキーマ設計ですか?
助言してください。
あなたが本当に出版社のための2つのテーブルが必要ですか? 1つのテーブルと、それが内部か外部かを指定する1つの追加の列を持つことができます。 –
彼らは両方ともフィールドが異なっていて、ShudがPublisherTypeに基づいてNULLのフィールドの一部に値を残しているかどうかわからない – Asdfg
1つのPublisherテーブルと1つのテーブルを持つことができます各パブリッシャタイプのフィールド –