一つ又は二つの主キーを多対多です。
-
09-06-2019 - |
質問
私は、以下のテーブルのデータベースとして多対多関係で、で表すと接続するテーブルは外部キーの主キーのそれぞれの主たるテーブル:
- ウィジェットWidgetID(PK)-タイトルの価格
- ユーザー:ユーザid(PK),名、姓
その各ユーザのウィジェットの組み合わせがユニークです。私は二つのオプションのための構成の方法、接続するテーブルを定義するデータとの関係:
- UserWidgets1:UserWidgetID(PK),WidgetID(FK)ユーザ名(FK)
- UserWidgets2:WidgetID(PK,FK)ユーザ名(PK,FK)
オプション1は、単一カラムはその有効なタイプを利用します。しかし、このよう必要以降のデータ格納されるようになっているテーブルの関係は、二つの主なテーブル、およびこの関係自体を形成することができな鍵となる。これまでオプション2、二列に主キーが失の列識別子にこのオプション1です。私が任意に追加二列の固有インデックス(WidgetIDユーザ名の最初の表に示す。
この二つの違い性能と、又はその他の理由に好きの一つのアプローチのその他の構築にUserWidgets多す。
解決
ただ一つの主キーのいずれか。二つ目には、何と呼ばれる化合物。が良い理由を導入します。に実践していく独自のインデックスすべての候補鍵となります。新しいカラムを買いものでメンテナンス費用.
行オプション2.
他のヒント
個人的には、 う の合成/サロゲートキーカラムに多くのテーブルの
- ご利用の数値の合成のキー自体のテーブルと同一のテーブルと一貫デザインと命名規約に従います。
- この場合には、将来の特定多数テーブル自体が親会社を配下の団体を必要とする独自の基準を個別に行います。
- なかで利用するだけ多くの追加のディスクスペース。
の合成キーな置換の自然化合物のキーにもなり、 PRIMARY KEY
そのテーブルだからこその最初の列は、テーブル、部分的に同意しBerkus。しかし、賛成しかねる天然のキーは常に良い候補者 PRIMARY KEY's
うべきではないがあった場合として使用される外部キーにその他を参照。
オプション2用compundキーのオプション1を採用 サロゲートキー.オプション2が優先ほとんどのシナリオのもとでの近くにあるlreationalモデルではある。
ない場合がありま使いたい場合、サロゲートキー(オプション1)
- する化合物を鍵であるが鍵です。特に時空間データ(データの流れの中で変わる。何をしたい場合は、追加の他のUserWidgetテーブルと同じユーザ名とWidgetId?思い雇用EmployeeId,EmployeeIdでも多くの場合を除きればたのと同じ勤務先は後日
- を作成している場合にメッセージ/企業間取引または類似した内容を必要とするやキーの利用体制の構築を目指します。複製かもね?
- を処理しなければいけない独自の監査機構(またはそれに類似するもの)をしたくないキーを取得します。
経験則として、ブランチは、モデリングデータをまとの連合体(多く)によりイベントです。人を取り上げ、雇用、項目が追加されるバスケット等最もイベントの時間依存関係のイベントの日付または時間がある場合、サロゲートキーを最ます。
なので、オプション2ものがあることを確認してください、完全なモデルです。
同意する前の答えが思いの一言。を追加したい場合より情報に関係することを可能に関係し、同じ主体に必要なオプションです。
例えばしたい場合はトラックすべての1ユーザー用ウィジェット664のuserwidgetテーブルのuseridとwidgetidせん。
何の利益の主キーをこのシナリオ?を考慮するオプションの主キー:UserWidgets3:WidgetID(FK)ユーザ名(FK)
したい場合性その利用のいずれかの化合物キー(UserWidgets2や独自性を与えます。
通常の業績と主キーがいることもあれば、クエリのテーブルの主キーである。の場合には多数のテーブルを通じて、外科的-非外科的なクエリーの主キーがありませんの性能です。多数のテーブルは問い合わせによる外部キーは、を付け加えることも検討に値を指標WidgetIDとUserID.
オプション2では、正しい答えを持っていない場合、本当に良い理由を追加する代数字キーを行なうオプション1)です。
代数字キー列ではない。主キーが'.主キーの技術を組み合わせのカラムを一意に識別するための記録内を表示します。
誰でもデータベースを読んで、この記事 http://it.toolbox.com/blogs/database-soup/primary-keyvil-part-i-7327 によるジBerkus違いを理解する代数字キー列の一次鍵となります。
私の経験のみを理由を追加する代数字キーを表す場合は、主キーは複合キーのニーズとして使用される外部キーの別表に示す。しまうまでも思うのはキャリーカラムの表に示す。
を見つけると、思わずデータベースの構造がテーブルが'id'カラムのチャンスで設計されている人なの関係モデルが常に表示の問題を特ジの。
こうと思いなんです。
聞き出してくれる:
化合物のキーが明らかにし、正しい道のりをいかを反映しているも意味のデータ。いい質問です。
しかし:いったあらゆるトラブルを作hibernateは正しく動作しないとモーバイルコンピューティングの発生の主キー-サロゲートキーです。
なので混雑して待たされることの論理、物理データ モデル.を論理的に一つの化合物ます。の物理モデルを実装する論理的なモデルでは、サロゲートの鍵、外鍵となります。
それぞれのユーザのウィジェットの組み合わせることができるテーブルの組み合わせユニークです。つまり、オプション2.そして二つの作品と同じウィジェットやユーザIdが異なるユーザのウィジェットIdを持っています。
のuserwidgetid最初のテーブルを必要とせず、思いの個性からの組み合わせwidgetidのuserid.
混雑して待たされること、二つ目のテーブルの元のキーの追加に独自のインデックスwidgetidとuserid.
い:
userwidgets( widgetid(fk), userid(fk), unique_index(widgetid, userid) )
あpreformance得ないとの主キーとして、データベースにねばならないことは起こらない方法による算出のためのキーとなります。上記のモデルがこの指数のunique_indexしているものは算出するとともに、この分かりやすいものになりました。