1

非常に基本的な質問があります。より効率的な設計、より多くの結合を含むもの、または単に 1 つの大きなテーブルに列を追加するものはどれですか?

たとえば、次のような親族を格納するテーブルがあるとします。

Person  |  Father  |  Mother  |  Cousing  | Etc.
________________________________________________

そのテーブルに名前、年齢などを直接リストする方が良いでしょうか..または、名前、年齢などを含む人物テーブルを作成し、person_idなどでリンクする方がよいでしょうか?

これら 2 つのオプション以外にもいくつかのオプションがあるため、これは少し単純化された例かもしれません。ただし、説明のために、リレーションシップを person テーブルに格納できないと仮定します。

私は現在、上記の2つの選択肢のうち後者を行っていますが、個人テーブルが十分に大きくなったとき、または関係テーブルに十分なリンクされた列があるときに、パフォーマンスが低下するようになるかどうかに興味があります. .

4

3 に答える 3

1

各人の詳細を、それらを関連付けるテーブルから分離する方がはるかに柔軟な設計です。通常、これによりデータ消費が少なくなります。

さらに一歩進んで、人用、関係タイプ用、関係用の 3 つのテーブルを作成することもできます。

People年齢、名前など、個人を特定するすべての情報が含まれます。

Relationship_typesキー、ラベル、および場合によっては説明があります。この表は、考えられる各関係の詳細を説明するためのものです。したがって、「親」の行、「子」の行、「兄弟」の行などがあります。

次に、Relationshipsテーブルには 4 つのフィールドがあります。1 つは関係の各人物のキー用、もう 1 つは Relationship_type のキー用、もう 1 つはそれ自身のキー用です。どの当事者が関係のどの部分であるかを明確にするために、列に名前を付ける方法を明示する必要があることに注意してくださいperson(つまり、A と B が「親」の関係にあるということは、どちらが親であるか、またはどちら親であるかを示す場合にのみ意味があります。親を持つ)。

于 2013-07-02T19:56:13.670 に答える
1

データをどのように使用する予定かによっては、より良い構造になる可能性があります

  • Person のテーブル ( id 、 name など)

  • 関係のテーブル (person_a_id、person_b_id、relation_type など)

person_a_id と person_b_id は、個人のサンプルデータの id に関連しています。

 ID Name 
  1 Frank
  2 Suzy
  3 Emma

関係

  A B Relationship 
  1 2 Wife
  2 1 Husband
  1 3 Daughter
  2 3 Daughter
  3 1 Father
  3 2 Mother
于 2013-07-02T19:56:27.750 に答える