[解決済み】識別関係と非識別関係の違いとは?
質問
違いがよくわからないのですが。両方のコンセプトを実際の例を使って説明してもらえますか?
どのように解決するのですか?
-
について 識別関係 とは、子テーブルの行の存在が親テーブルの行に依存する場合です。 最近は子テーブルに擬似キーを作るのが一般的なので、混乱するかもしれませんが ではなく 親への外部キーを子の主キーの一部にする。 形式的には、外部キーを子の主キーの一部にするのが正しいやり方です。 しかし、論理的な関係では、子は親なしには存在できません。
例 A
Person
は1つ以上の電話番号を持っています。 もし電話番号が1つだけだったら、単純にその電話番号をPerson
. 複数の電話番号をサポートしたいので、2つ目のテーブルを作成します。PhoneNumbers
で、その主キーにはperson_id
を参照する。Person
テーブルを使用します。電話番号は、別のテーブルの属性としてモデル化されていますが、個人に属するものと考えてもよいでしょう。 これは、これが識別関係であることを示す強い手がかりです(たとえ、文字どおりに
person_id
の主キーにPhoneNumbers
). -
A 非同定関係 とは、親の主キー属性が はしてはならない は、子の主キー属性になります。 この良い例が、ルックアップテーブル、たとえば
Person.state
の主キーを参照しています。States.state
.Person
に対して子テーブルです。States
. しかしPerson
によって識別されるわけではありません。state
属性があります。 すなわちstate
の主キーには含まれません。Person
.非同定リレーションシップは 任意 または 必須 これは、外部キーのカラムがそれぞれ NULL を許可するか、または NULL を許可しないかを意味します。
への回答もご覧ください。 アイデンティファイとノンアイデンティファイの関係についてまだ混乱している
関連
-
[解決済み] mongodb 4 データディレクトリ C:\data_dbdb not found
-
[解決済み] データベースマネージャの開始コマンドは発行されていません。SQLSTATE=57019
-
[解決済み] 外部キーを主キーにするのは問題ないですか?
-
[解決済み] rake db:migrate db:reset とdb:schema:loadの違いについて
-
[解決済み] SQLのTRUNCATEとDELETEの違いは何ですか?
-
[解決済み] OLTPとOLAPとは。その違いは何ですか?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】Cassandraのパーティションキー、コンポジットキー、クラスタリングキーの違い?
-
[解決済み】非常に大きなデータベースファイルを持つsqliteのパフォーマンス特性は何ですか?[クローズド]。
-
[解決済み】データベースをgit(バージョン管理)下に置くには?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] mongodb 4 データディレクトリ C:\data_dbdb not found
-
[解決済み] 検出された解決済みの移動がフライウェイのデータベースに適用されていない。
-
[解決済み] Django エラー - 一致するクエリが存在しません。
-
[解決済み】すべてのテーブルに主キーを持たせるべきですか?
-
[解決済み】非常に大きなデータベースファイルを持つsqliteのパフォーマンス特性は何ですか?[クローズド]。
-
[解決済み】1つ以上の外部キーのプロパティが非NULLであるため、リレーションシップを変更できませんでした。
-
[解決済み】データベースのMongoDBダンプを作成する方法は?
-
[解決済み】既存のENUM型に新しい値を追加する
-
[解決済み】pgadminでherokuのデータベースに接続する。