人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DB設計とかSQL。SNSやTwitterのつながりやはてブのお気に入り、被お気に入りなどをDBで管理したいときはどのようなテーブルを作ったら良いでしょうか。実際どのようなテーブルを用意するのか、SQLをベタに書くとした場合、お友だち一覧を取得するSQLクエリ、お友だちを追加するクエリはどのようなものになるのかなど知りたいのですが。関係テーブルのようなものを作ればいいのかな、というなんとなく頭に浮かぶものはあるのですが、専門の方の意見をお聞きしたいので

●質問者: dedara
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB SNS SQL お気に入り はてブ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● memo77
●70ポイント ベストアンサー

1.つながりやはてブのユーザーの関連性を記録する仕組みを作りたい

2.つながりやはてブに似た仕組みを作りたい


どちらでしょうか。


1ならぱっと考え付くところではこんな感じですね。

T_IDRelation

フィールド名 内容
Relation_ID 主キー
ServiceID サービスの種類
UserID_From 主ユーザーもしくはグループ
User_ID_To 従ユーザーもしくはメンバー
RelationType 一方的フォローとか相互フォローとかグループ/メンバー形式とか
RelationState 今現在この関連性がどういう状態にあるか
Start_DT 関連の発生した日付
End_DT 関連の終了した日付

2ならこんな感じですね。

T_IDRelation

フィールド名 内容
Relation_ID 主キー
UserID_From 主ユーザーもしくはグループ
User_ID_To 従ユーザーもしくはメンバー
RelationState 今現在この関連性がどういう状態にあるか
Start_DT 関連の発生した日付
End_DT 関連の終了した日付


どちらにしても時系列での関係変化を取りたければ、変化したときに上書きではなくRelationStateを書き換えて積み上げとか。


お友達一覧取得SQL(1でも2でも)

SELECT User_ID_To
FROM T_IDRelation
WHERE User_ID_From = '取得したいユーザーのID'

関係性登録SQL(2のケース)

INSERT INTO (User_ID_From,User_ID_To,RelationState,Start_DT)
SELECT '主ユーザー','従ユーザー',1,Now()
◎質問者からの返答

丁寧にありがとうございます。

とても参考になります


2 ● hijk05
●0ポイント

基本は、正規化していく。この作業は機械的にできるので、DB設計の知識があるかどうかだけ。

性能に問題がなければ、正規化されたテーブルを使用するが、性能に問題があれば、ここから

非正規化して最適化を考える。

----------

はじめての設計をやり抜くための本 概念モデリングからアプリケーション、データベース、アーキテクチャの設計まで (エンジニア道場)
はじめての設計をやり抜くための本 概念モデリングからアプリケーション、データベース、アーキテクチャの設計まで (エンジニア道場)吉原 庄三郎

翔泳社 2008-12-11
売り上げランキング : 52430

おすすめ平均 star
star初心者向けのガイダンスとして
starシステム開発において「設計」をしていく上での手引書
star設計の流れとポイントが分かる

Amazonで詳しく見る
by G-Tools

------

4534032501業務別データベース設計のためのデータモデリング入門
渡辺 幸三
日本実業出版社 2001-07-01

by G-Tools

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ