関係

2016-09-11 1 views
0

私は次のように別のテーブルからリレーションを作るしようとしています:関係

ブックス

IdBook (primary) 
SerialNumber (primary) 
NameBook 

他のテーブルには、次のとおりです。

QTT

IdQtt (primary) 
IdBook 
Qtt 

関係を作るにはどうすればいいですかQtt.IdBookBooks.IdBookの間にありますか?

+0

だろうそのテーブルを参照しているysは**これらすべての列を含む** ** ** **例外もありません。あなたは** PKの半分しか参照できません - それはすべてか何も取引ではありません –

答えて

0

あなたは

CONSTRAINT FK_idbook FOREIGN KEY (IdBook)  
    REFERENCES Books (IdBook)  
    ON DELETE CASCADE  
    ON UPDATE CASCADE 

のような、その列のテーブル間のFOREIGN KEY関係を作成するためのものしかし、あなたはIdBook, SerialNumberにあなたのBooksのテーブルに複合PKを持っているので、あなたがあなたの中に別のキー列を必要とするので、それが動作しません。他にPK列の両方を参照するために、Qtt表あなたは(複数の列から構成される)複合主キーを持っている場合は、すべての**外部キー**そして、PFD(部分的な機能依存)

constraint FK_book FOREIGN KEY (IdBook,IdQtt) references Books (IdBook,SerialNumber) 
0

それはBooks.IdBookUNIQUE制約と、その列を参照するQtt.BookFOREIGN KEY制約を作成することは技術的には可能ですが、一人でIdBookが一意Books行を識別しないので、これはおそらく、あなたのデータモデルでは動作しません。ブックには1対多の関係があり、BookTitleから別の1対多の関係にあるBookTitleのようなテーブルがIdBookにキーイングされており、IdBookにあるテーブルが必要です。