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()
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()
丁寧にありがとうございます。
とても参考になります
基本は、正規化していく。この作業は機械的にできるので、DB設計の知識があるかどうかだけ。
性能に問題がなければ、正規化されたテーブルを使用するが、性能に問題があれば、ここから
非正規化して最適化を考える。
----------
はじめての設計をやり抜くための本 概念モデリングからアプリケーション、データベース、アーキテクチャの設計まで (エンジニア道場) | |
吉原 庄三郎 翔泳社 2008-12-11 売り上げランキング : 52430 おすすめ平均 初心者向けのガイダンスとして システム開発において「設計」をしていく上での手引書 設計の流れとポイントが分かる Amazonで詳しく見る by G-Tools |
------
業務別データベース設計のためのデータモデリング入門 渡辺 幸三 日本実業出版社 2001-07-01 by G-Tools |
丁寧にありがとうございます。
とても参考になります