【发布时间】:2021-03-05 12:54:06
【问题描述】:
我有一个任务,我需要创建一个类似于社交网络的数据库。我需要有 3 个表用户、友谊和状态。
我的问题是我需要与餐桌朋友和餐桌用户建立关系。
我试图完成这项任务,但我就是不明白。表状态也需要与表用户(user_id)有关系。我只知道表友谊需要有2个外键。
这也是我尝试做的 EER 图。
【问题讨论】:
标签: mysql sql database-design foreign-keys
我有一个任务,我需要创建一个类似于社交网络的数据库。我需要有 3 个表用户、友谊和状态。
我的问题是我需要与餐桌朋友和餐桌用户建立关系。
我试图完成这项任务,但我就是不明白。表状态也需要与表用户(user_id)有关系。我只知道表友谊需要有2个外键。
这也是我尝试做的 EER 图。
【问题讨论】:
标签: mysql sql database-design foreign-keys
您希望friendships 的两个不同列上的两个外键指向users:
create table friendships (
request_sender int not null,
request_receiver int not null,
...
constraint request_sender_users_fk
foreign key (request_sender)
references users(user_id),
constraint request_sender_receiver_fk
foreign key (request_receiver)
references users(user_id)
);
注意:我认为使用三个不同的列来存储“友谊请求”的状态是没有意义的,例如在您的 ERD 中:friendship_accepted、friendship_declined 和 friendship_on_hold。大概一个关系一次只能有一个状态,所以单列应该就足够了,用 en enum 或类似的。
【讨论】: