3

リレーショナル データベースでレコードの関係をモデル化する最善の方法を決定しようとしています。これは古典的な友達/フォロー モデルです。

~~~~

ユーザーはゼロから多くの友達を持つことができます。
ユーザーはゼロから多くのフォロワーを持つことができます。

友達もフォロワーもユーザーそのものです。

~~~~~

これをモデル化する最良の方法は何ですか?

ありがとう!

4

1 に答える 1

13

ユーザー (UserId、...)
サブスクリプション (サブスクライバー、パブリッシャー)
フレンドシップ (FirstUser、SecondUser)

CREATE TABLE Users (
    UserID int not null primary key,
    ...
)

CREATE TABLE Subscription (
    Subscriber int not null references Users(UserID),
    Publisher int not null references Users(UserID),
    constraint ck_NotEqual check (Subscriber <> Publisher)
)

CREATE TABLE Friendship (
    FirstUser int not null references Users(UserID), 
    SecondUser int not null references Users(UserID),
    constraint ck_Order check (FirstUser < SecondUser) -- since friendship is reflective
)
于 2009-03-21T15:44:48.420 に答える