3

我正在尝试确定在关系数据库中对记录关系进行建模的最佳方法。这是经典的朋友/关注模式:

~~~~

一个用户可以有零到多个朋友。
一个用户可以有零到多个关注者。

朋友和追随者都是用户本身。

~~~~~

对此进行建模的最佳方法是什么?

谢谢!

4

1 回答 1

13

用户 (UserId, ...)
订阅 (Subscriber, Publisher)
友谊 (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 回答