私はデータベース設計にかなり慣れていません。多対多の関係について、複合キーと一意のIDを作成することの違いと意味は何ですか。
Countryテーブル
CountryID
CountryName
Languageテーブル
LanguageID
LangugageName
多対多のテーブル-コンポジットを使用:
CountryID Pkey
LanguageID Pkey
また
一意のIDの使用:
AutoID Pkey
CountryID
LanguageID
私はデータベース設計にかなり慣れていません。多対多の関係について、複合キーと一意のIDを作成することの違いと意味は何ですか。
Countryテーブル
CountryID
CountryName
Languageテーブル
LanguageID
LangugageName
多対多のテーブル-コンポジットを使用:
CountryID Pkey
LanguageID Pkey
また
一意のIDの使用:
AutoID Pkey
CountryID
LanguageID
複合キー :
複合キーは、テーブル内の一意の行を識別するための複数の列の組み合わせです。複合キーは主キーにすることができます。
主キー
PRIMARY KEY 制約は、データベース テーブル内の各レコードを一意に識別します。
そのすべてはあなたの要件に依存します
最初のデザインで
Many to Many Table:
Using composite:
CountryID Pkey
LanguageID Pkey
CountryID よりもこのデザインを使用する場合、LanguageID は複合主キーです。
テーブルのデータは
CountryId LaguageID
1 1 //valid
1 2 //valid
1 3 //valid
1 1//not valid data as its form composite primary key
そして2番目のデザインで
Using Unique Id:
AutoID Pkey
CountryID
LanguageID
AutoID が主キーになるため、これによりデータのようなデータが許可されます
AutoId CountryId LaguageID
1 1 1 //valid
2 1 2 //valid
3 1 3 //valid
4 1 1 //valid as AutoID is primary key
1 2 3 // invalid as AutoID is prinary key
このプレゼンテーションが違いを理解するのに役立つことを願っています
複合キーと一意のIDを作成することの違いと意味は何ですか?
いかなる場合でも接続の重複を避けるために、{CountryID、LanguageID}に「自然」キーを作成する必要があります。唯一の質問は、{AutoID}に「代理」キーも必要かどうかです。
代理キーの理由:
これらの理由のいくつかが当てはまらない限り、自然キーのみを使用してください。
ところで、クラスタリングをサポートするDBMSでは、通常、このような自然キーがクラスタリングキーの候補として適しています。テーブルをクラスタリングする場合、他のすべてのインデックス(サロゲートキーの下のインデックスなど)には、クラスタリングキーデータのコピーを保持する必要があり、二重になる可能性があるため、(ヒープベースのテーブルのインデックスと比較して)余分なオーバーヘッドがあります-見上げる。