ユーザーが自分のtwitter/facebook / foursquareアカウントで順番にログインし、フォローしている人のすべてのIDとその他の詳細を取得する(または友達としてリストに追加する)アプリケーションを作成しています。
私はこれらの質問に言及しました:
しかし、唯一のことは、上記の設計は「友情」モデルに焦点を合わせているのに対し、私は「フォロー」モデルに基づいてシステムを構築したいと考えています。
「友情」モデルでは、両方のユーザーがお互いを追加/確認しますが、「フォロー」モデルでは、1人のユーザーが確認なしで別のユーザーをフォローできます。
1つのテーブルにアプリのすべてのユーザーを格納し、他のテーブルに他の情報とともにフォローするすべてのユーザーを格納する設計を進めることもできますが、データベース設計があまり得意ではないため、シナリオが心配です。たくさんの行を複製してしまうとき。
例えば:
- キャシーが何らかのネットワークでアナをフォローし、スティーブが他のネットワークでアナをフォローしている場合、私はアナの2つの行を持ち、これら2人のユーザーとの関係を示しています。これでいいですか?
- 異なるネットワーク上で、アナとスティーブがお互いをフォローしている場合はどうなりますか?この関係に2つの行があることは避けられますか?
- 一部のネットワークでは、スティーブはキャシーをフォローしています。これも、関係のために1つの行があります。これで大丈夫ですか?
- Anaは複数のソーシャルネットワーク(twitter + facebook)でKathyの友達である可能性が高く、同じ人物Anaのこれら2つのネットワークの異なる情報を格納するために2つの行が必要になります。これでいいですか?
私はデータベース設計に関してはプロではなく、通常はデータベース設計者から設計されていますが、今回は私の個人的なアプリなので、何が良いのか、何が悪いのかがわかりません。
このシステムは、さまざまなユーザーが複数のソーシャルネットワークアカウントを追加することになるため、かなり大きくなる可能性があります。最初はLAMPを使用しますが、基本的には、データベースの設計が不適切になると複雑さが増す可能性があることを懸念しています。
スキーマに関する提案やアイデアは大歓迎です。
さらに情報が必要な場合はコメントしてください。
ありがとう!