1

私たちが持っている場合

 ____________           /      \             ____________
|   Person   |-------- /        \    ------>|   Location |
|____________|        /  BornIn  \          |_____________
                      \          /
                       \        /
                        \      /

Person(SSN, first name, last name)
BornIn(..)
Location(City, Country, zip-code)

ここで、SSNは のキーでPersonあり、Location is3 つの属性すべてによって決定されます。

弱いエンティティの場合、キーは、弱いエンティティのすべての属性 + 所有者エンティティの主キー (または外部キー) で構成されます。

  1. のキーは何BornInですか?
  2. 弱いサポートエンティティのキ​​ーは何ですか?

私はまだオンラインで答えを見つけることができません。これは宿題ではありません。データベース設計を学んでいます....

私の悪い。それは多対一の関係です。

4

2 に答える 2

1

「弱いエンティティ」とは、単に(子エンドポイントとして)識別関係に関与していることを意味します。また、関係を識別するということは、子エンティティのキ​​ーに親のキーが含まれていることを意味します(したがって、独立して識別することはできません)。

BornInは関係であり、エンティティではないため、「弱い」ことも、論理モデルにキーを持つこともできません。

ただし、物理モデルでは、関係のカーディナリティに応じて、テーブルにマップしてキーを設定BornIn できます。

  • 多対1であると言うので、テーブルにマップされないため、キーはありません(1対1ではないため、Personテーブル内のFKにもキーはありません)。
  • ただし、多対多の場合、2つの親キーの複合BornInであるキーを使用してテーブルにマップされます。{SSN, City, Country, zip-code}
于 2012-05-07T13:11:49.043 に答える
0

Person テーブルの PK は ssn です Location テーブルには主キー - location_id (おそらく自動インクリメント値) が必要です

中間テーブル -bornIn には列として ssn と location_id があります

したがって、この中間テーブルを介して Person テーブルを Location テーブルと結合できます。

 SELECT p.first_name,l.city from Person p inner join bornin b on b.ssn = p.ssn 
                                 inner join Location l on l.location_id=b.location_id
于 2012-05-07T05:13:37.270 に答える