平成25年春期午後問6のSQLについて

さん  
(No.1)
図3のSQLの3行目と4行目の結合についてです。
発言エンティティと発言キーワード重みエンティティを結合するのではなく、発言キーワードエンティティを間に入れて結合しているのは何故なんでしょうか?
リンク
https://www.ap-siken.com/s/kakomon/25_haru/pm06.html
2022.01.30 16:32
chihiroさん 
AP シルバーマイスター
(No.2)
図1からもわかるように、発言エンティティと発言キーワード重みエンティティの間に共通する属性が存在しないからです。共通する属性がない以上、直接2つのエンティティを結合することはできないので、両エンティティの属性(発言IDおよびキーワードID)を持つ発言キーワードエンティティを間にかませることで間接的に結合を行っています。
2022.01.30 16:48
GinSanaさん 
AP プラチナマイスター
(No.3)
このくっつけ方は「連関エンティティ」といいます。
連関エンティティでググるか
momotar/associative-entity.md
gist.github.com/momotar/7acd9cb4e7fb9581b160
とかで検索してみてください。一般的に
共通する属性がない
というのを「多対多」という関係で、それを2つの1対多に分解する過程で生まれるのが
連関エンティティというテーブルです。

fmhelp.filemaker.com/help/18/fmp/ja/index.html#page/FMP_Help/many-to-many-relationships.html
多対多のリレーションシップ

通常、リレーショナルデータベースシステムでは、2 つのテーブル間に多対多のリレーションシップを直接設定することはできません。請求書を参照する例を考えてみましょう。同じ請求書番号の請求書が多数あったとすると、顧客の誰かにその請求書番号を照会されても、どの番号のことかわかりません。請求書ごとに固有の値を割り当てるのはそのためです。

こうした問題を回避するために、結合テーブルと呼ばれる第三のテーブルを使用して、多対多のリレーションシップを 2 つの 1 対多のリレーションシップに分割することができます。
2022.01.31 15:47
さん  
(No.4)
理解できました。回答してくださいありがとうございます。
2022.02.03 20:34

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop