我正在尝试确定在关系数据库中对记录关系进行建模的最佳方法。这是经典的朋友/关注模式:
~~~~
一个用户可以有零到多个朋友。
一个用户可以有零到多个关注者。
朋友和追随者都是用户本身。
~~~~~
对此进行建模的最佳方法是什么?
谢谢!
我正在尝试确定在关系数据库中对记录关系进行建模的最佳方法。这是经典的朋友/关注模式:
~~~~
一个用户可以有零到多个朋友。
一个用户可以有零到多个关注者。
朋友和追随者都是用户本身。
~~~~~
对此进行建模的最佳方法是什么?
谢谢!
用户 (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
)