我有一个关于数据库设计的问题。我正在制作一个网页,用户可以在其中创建活动(即用户“Jane”创建了一个名为“我的生日派对”的活动)。其他用户可以加入此活动,因此用户“John”可以参加 Janes 活动“我的生日派对”。为了让 Jane 看到谁和有多少客人(用户)来参加她的生日聚会,是否有必要在用户和事件之间创建一个关系表?
假设有 100 位客人(用户)参加,这将需要我在将每个用户链接到活动的关系表中创建 100 行。否则可以这样做吗?
提前谢谢,如果有什么不清楚的请告诉我:-)
我有一个关于数据库设计的问题。我正在制作一个网页,用户可以在其中创建活动(即用户“Jane”创建了一个名为“我的生日派对”的活动)。其他用户可以加入此活动,因此用户“John”可以参加 Janes 活动“我的生日派对”。为了让 Jane 看到谁和有多少客人(用户)来参加她的生日聚会,是否有必要在用户和事件之间创建一个关系表?
假设有 100 位客人(用户)参加,这将需要我在将每个用户链接到活动的关系表中创建 100 行。否则可以这样做吗?
提前谢谢,如果有什么不清楚的请告诉我:-)
是的,您需要一个表 users、一个表 events 和一个表 users_events(包含 user_id、event_id 列)。这将是正常的做法。
你是对的 - 最好的方法是拥有一个专用的连接表(例如event_attendees)。
这允许多对多关系(一个用户可以加入许多事件,一个事件可以有许多用户)。
您可以在事件表中有一个名为creator_id的列,它指的是创建事件的用户,因为这比将其存储在与会者的专用联接表中要好。
是的,您需要JOIN
为用户和事件创建一个表。与此类似:
create table users
(
id int,
name varchar(10) -- add other fields as needed
);
create table events
(
id int,
name varchar(10),
e_owner_id int, -- userId of who created the event
e_date datetime -- add other fields as needed
);
create table users_events -- when user wants to attend a record will be added to this table
(
u_id int,
e_id int
);
然后查询,你会使用这样的东西:
select *
from users u
left join users_events ue
on u.id = ue.u_id
left join events e
on ue.e_id = e.id;