username、user_id、password、およびemailフィールドを持つuserテーブルがあります。PHP MySQLデータベースデザイン
ユーザーは更新を投稿したり、ユーザーを登録したり、友だちの人にすることができます。
ユーザーの更新プログラム、サブクライバおよびフレンドの数を格納するためにデータベースを設計する最も良い方法は何ですか?
私は3つのフィールドをユーザーテーブルに追加して、これらの3つの列の数を増やしてください。
ありがとうございました。
username、user_id、password、およびemailフィールドを持つuserテーブルがあります。PHP MySQLデータベースデザイン
ユーザーは更新を投稿したり、ユーザーを登録したり、友だちの人にすることができます。
ユーザーの更新プログラム、サブクライバおよびフレンドの数を格納するためにデータベースを設計する最も良い方法は何ですか?
私は3つのフィールドをユーザーテーブルに追加して、これらの3つの列の数を増やしてください。
ありがとうございました。
ユーザーメタデータを使用して別のテーブルを作成するか、新しいユーザーとして追加します。どちらの方法でも問題ありません。
最後の文で「友人」の代わりに「列」を入力すると仮定します。
これはその方法の1つです。
設計時にエンティティ、リレーションシップ、およびカーディナリティについて考える必要があります。各アップデートのタイムスタンプを追跡しますか?はいの場合は、それをユーザーとの1対多の関係で別の表にします。加入者や友人と同じです。答えは、問題をモデル化する方法を選択する方法によって異なります。正解または間違った答えはありませんが、トレードオフがあります。
リレーションとコンテンツを分離している方が読み込みが速いですが、コンテンツだけでリレーションを生成すると、結果がより正確になることがあります。したがって、それは異なります。
友人(user1_id、user2_id)、更新(user_id、コンテンツ)、購読(user1_id、user2_id)の3つのテーブルを作成できます。データベースが巨大であり、あなたが友人を毎回カウントしたくない場合
は、あなたがusersテーブルにフィールドを追加し、それに友人が追加されるたびに更新することができます/たぶん図が役立つだろう描画
を削除:
http://en.wikipedia.org/wiki/Entity-relationship_model
まず私は、何かリットル
オンザフライでのユーザー
のアップデート、subcribersや友人の数を計算するために試してみましたあなたがこのアプローチには、パフォーマンス上の問題がある場合は、IKE
select count(*) from user_updates where user_id = :uid
select count(*) from user_subcribers where user_id = :uid
select count(*) from user_friends where user_id = :uid
は、その後、あなたはuserテーブルにこれらのカウントフィールドを追加することを検討することができますが、それらを維持するために注意する必要があります。
私はあなたの質問を理解していませんが、私はこれを行うための最良の方法は、これらの各テーブルのテーブルをuser_idフィールドとリンクすることができますと思う。
テーブル 'ユーザー':
*user_id*
username
password
email
テーブル '友達':そう同様
id
*user_id*
friendids
その後、
SELECT * FROM friends WHERE user_id = '$userid'
のようなもので、ユーザーは保管しないでください得ることができますあなたのデータベースのデザインを正規化し、user_friendsテーブルを追加することを学ぶ...それから多くの制約を打つことはありません –
私はそれは単にタイプミスであり、OPはuserテーブルの3つのフィールドを意味しました。 – bpgergo
OPが友人かフィールドかを問わず、答えは同じです:usersテーブルに追加しないでください... normalize –