私は、これを重複した質問にするように思われるもののいくつかを読みました。しかし、これらすべてを読んで、私は不安になりました。多くの質問/回答が議論に発展するため、以下の絶対的な例に基づいて回答を得たいと考えています。
私が持っている場合:
dbo.Book
--------
BookID PK int identity(1,1)
dbo.Author
----------
AuthorID PK int identity(1,1)
ここで、単純なジャンクション テーブルには 2 つの選択肢があります。
dbo.BookAuthor
--------------
BookID CPK and FK
AuthorID CPK and FK
上記は、両方の FK の複合/複合キーであり、両方の列の FK 関係を設定します - 削除時にカスケードも使用します。
また
dbo.BookAuthor
--------------
RecordID PK int identity(1,1)
BookID FK
AuthorID FK
BookID と AuthorID の外部キー関係、および削除時のカスケード。また、BookID と AuthorID に一意の制約を設定します。
上記の特定の例で、ある方法が別の方法よりも優れている理由についての簡単な答えを探しています。私が読んでいる回答は非常に詳細であり、複合キーに落ち着こうとしていたのですが、最初の例のように Identity 列を使用した例のビデオを見ました。
このトピックは少し半分に引き裂かれているように見えますが、私の直感は、複合キーを使用する必要があることを示しています。
クエリを効率的に行うにはどうすればよいですか? 2つの列に一意の制約を設定するとともに、PK ID列を持つようです.AND FK関係は、たとえ少しでもコストがかかります.