2017-11-18 8 views
0

Facebookのユーザー向けにデータベースをモデル化しようとしています。私のUserテーブルでは、{account_name、account_id、...、password}を変数として持っています。フレンドリストや連絡先テーブルなど、そのユーザーの友人用のテーブルを作成しようとしていますが、連絡先テーブルにすべての可能な友人リスト(つまり、{user_id、friend_id、friends_since、 ...})または特定のuser_idに固有の連絡先表を持つことができます(つまり、{contact_id、friends_since、no_of_mutual_contactsなど})。データベース - データベース内のテーブルには、すべてのグローバルインスタンスが含まれている必要があります。特定のIDに固有のものである可能性があります。

これはおそらく私の脳のオブジェクト指向の部分ですが、たとえばCinemaデータベースを使用していたとします。 5つの映画館があり、それぞれに5つの画面があり、CINEMAはテーブルであり、SCREENはテーブルです。 SCREENテーブルには25個のインスタンスがありますか、またはSCREENテーブルには特定のCINEMAに対応する5つの画面しか含まれていないことがあります。

これは元の質問に戻ってきます。連絡先テーブルは、すべての友人関係を含むグローバルテーブルでなければなりませんか、連絡先テーブルはuser_idに固有の連絡先のみを返しますか?

何らかの理由で私がデータベースのリレーショナルチャートを見ていると、リンクがuser.Contactsやuser.Eventsのようなメンバーになっている構造のような幾分オブジェクトに似ています。

+0

OOPとデータモデリングを混同しないでください。 OOPは、複雑なシステムをステートフルなサービスの対話型ネットワークに分解するためのものです。データモデリングは、複雑な知識を単純なファクトの集合に分解するためのものです。 – reaanb

答えて

0

通常、リレーショナルデータベースのテーブルは、特定のタイプのすべてのファクトを記録します。 user <user_id> is friends with user <friend_id> since <friends_since>

特定のユーザーに適用可能な行のサブセットを取得するには、必要に応じて特定のユーザーのビューを作成するか、クエリでuser_idを指定するだけです。

特定のユーザーに固有の物理テーブルを作成すると、ある特定のユーザーのすべての行を取得する場合に問題が生じます。friend_id

関連する問題