Weiboユーザーテーブルのデザインについて助けを求める

WBOY
リリース: 2016-06-23 14:23:51
オリジナル
1165 人が閲覧しました

この投稿は、anydy2008 によって最終編集されました: 2013-10-11 10:43:13



クエリ要件は次のとおりです:
1. どのユーザーがフォローされているかをクエリします。
2. どのユーザーがフォローされているかを確認します。
3. ユーザーと共有されているウォッチ リストをクエリします。
4. 相互フォローしているかどうかを確認します。

テーブルを使用して、user_id follow_user_id add_time 列の形式で上記の関数を実装します。
ただし、注目量が比較的多いため、ユーザーIDごとにテーブルを分割する必要があります。テーブル構造を適切に設計する方法がわかりません。

友達、アドバイスをお願いします。ありがとうございます

ディスカッション(解決策)に返信します

ユーザーIDを使用してパーティション化します

ユーザーID、各テーブル間でユーザーIDを使用します

ユーザーIDを使用してパーティション化します

モデレーター ユーザーIDを使用してパーティションを分割したいですテーブルを分割した後では、上記の機能を実装するのは困難です。例えば、どのユーザーが自分をフォローしているかを確認したいのですが、テーブルを分割した後、どのテーブルを確認すればよいかわかりません。すべてのサブテーブルを一度確認することによってのみ知ることができます。

別のフォローリストを保存することはできますか?
、あなたをフォローしているユーザーをユーザーリストに保存することはできますか?

テーブルを分割した後にどのテーブルをクエリするかわからないため、テーブルを分割することはできませんが、パーティション化することができます
パーティション分割されたテーブルは、依然としてテーブル全体であり (複数のファイルに分割されていますが)、実際のクエリは次のとおりです。ファイルはあなたではなく mysql によって決定されます

それでも自分でテーブルをパーティション分割したい場合は、user_id 列と follow_user_id 列の内容を交換して新しいテーブルを形成し、その後 2 つのテーブルをパーティション分割する必要があります


を使用しますユーザー ID を使用してテーブルを分割したいのですが、テーブルを分割した後、上記の機能を実装するのは困難です。例えば、どのユーザーが自分をフォローしているかを確認したいのですが、テーブルを分割した後、どのテーブルを確認すればよいかわかりません。すべてのサブテーブルを一度確認することによってのみ知ることができます。
テーブルを分割せず、SQL ステートメントを直接記述するだけです

1. どのユーザーがフォローされているかをクエリします: select `follow_user_id` from `table` where `user_id`='your id'
2. どのユーザーがフォローされているかをクエリします : select `user_id` from `table` where `follow_user_id`='your id'
3. 特定のユーザーとの共通フォローリストをクエリします。 select * from `table` where `user_id` in ('your id', 'a user id')
4. 相互にフォローしているかどうかをクエリします: select * from `table` where `user_id`='your id' and ` follow_user_id`='特定のユーザー ID' `user_id` in (select `follow_user_id` from `table` where `user_id`='特定のユーザー ID')

もちろん、おそらくもっと良い書き方があるでしょう。 4 番目の記事。

記事 4 に が抜けているので、書き直してください

テーブルを分割した後にどのテーブルを確認するかわからないからといって、テーブルを分割することはできませんが、パーティション化することはできません

分割されたテーブルはまだテーブル全体です(複数のファイルに分割されていますが)、どのファイルが実際にクエリされるかは、あなたではなく mysql によって決定されます


それでもテーブルを自分で分割したい場合は、user_id 列と follow_user_id 列の内容を次のように交換する必要があります。新しいテーブルを作成し、その2つをペアにします テーブル分割

ご回答ありがとうございます 参考にさせていただきます

テーブルを分割した後にどのテーブルを確認すればよいかわからないからといって、テーブルを分割するだけではなくパーティション化することはできません

パーティション化されたテーブルは、あなたにとってはまだテーブル全体です (複数のファイルに分割されていますが)。実際のクエリ ファイルは、あなたではなく mysql によって決定されます


それでも自分でテーブルを分割したい場合は、内容を交換する必要がありますuser_id 列と follow_user_id 列を組み合わせて新しいテーブルを形成し、その 2 つのテーブルを分割します

モデレータ パーティションの概念とは何ですか?私はコンピューターのパーティショニングしか理解していません

この文について詳しく教えていただけますか

「次に、user_id 列と follow_user_id 列の内容を交換して新しいテーブルを形成し、その後 2 つのテーブルを別々のテーブルに分割する必要があります。」

ありがとうございます!

テーブルのパーティショニングについては、http://www.baidu.com/s?ie=utf-8&bs=mysql%E5%88%86%E5%8C%BA%E8%A1%A8&f=8&rsv_bp=1&wd= を参照してください。 mysql %E5%88%86%E5%8C%BA&rsv_sug3=1&rsv_sug=1&rsv_sug1=1&rsv_sug4=26&inputT=796

アテンションは次のように一方向にすることもできます

select * from `表` where `user_id`='你的id' and `follow_user_id`='某个用户id' and `user_id` in (select `follow_user_id` from `表` where `user_id`='某个用户id')
ログイン後にコピー

user_id でテーブルを分割した後、次のように取得できますfollow_user_id に接続されているすべてのテーブル user_id をチェックします
したがって、follow_user_id によってグループ化されたテーブルの別のセットが必要です
user_id follow_user_id1       21       31       4
ログイン後にコピー
ログイン後にコピー

关于表分区可参见 http://www.baidu.com/s?ie=utf-8&bs=mysql%E5%88%86%E5%8C%BA%E8%A1%A8&f=8&rsv_bp=1&wd=mysql%E5%88%86%E5%8C%BA&rsv_sug3=1&rsv_sug=1&rsv_sug1=1&rsv_sug4=26&inputT=796

关注可以是单向的,比如这个

user_id follow_user_id1       21       31       4
ログイン後にコピー
ログイン後にコピー

按 user_id 分表后,你整检查所有的表才能得到与 follow_user_id 相连的 user_id
所以你需要另有一组以 follow_user_id 分组的表
follow_user_id user_id 2              13              14              1
ログイン後にコピー


版主  
"follow_user_id 分组的表" 也是要分表的吧
那这个方案可以支持查,哪些人关注了我吗。
比如我的用户id是1    按follow_user_id 尾数进行分表。


follow_user_tbl_1

follow_user_id user_id 
1               1
11              1
21              1

follow_user_tbl_2

follow_user_id user_id 
2               1
12              1
22              1

如果 user_id follow_user_id 表示 user_id 被 follow_user_id 关注
那么 follow_user_id user_id 表示 follow_user_id 关注了 user_id

你把主体确定了,事情就清楚了

单独保存一个关注表
或者把关注你的用户也存到用户表里可行不?

单独保存一个关注表不大可行   因为数据量太大啦 

关注我的用户存到用户表不合理  

如果 user_id follow_user_id 表示 user_id 被 follow_user_id 关注
那么 follow_user_id user_id 表示 follow_user_id 关注了 user_id

你把主体确定了,事情就清楚了

版主  吾听了你的,开始明白你的想法啦。 谢谢了。要分表可能只有这样啦

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート