我对数据库设计有疑问。我正在创建一个用户可以创建事件的网页(即用户'Jane'创建一个名为'My Birthday Party'的事件)。 其他用户可以加入此活动,因此用户'John'可以参加Janes活动'我的生日派对'。 为了让Jane能够看到有多少客人(用户)来参加她的生日派对,是否有必要在用户和活动之间创建关系表?
假设有100位访客(用户)参加,这将要求我在关系表中创建100行,将每个用户链接到该事件。可以这样做吗?
先谢谢,如果有什么不清楚请告诉我: - )
答案 0 :(得分:1)
是的,您需要一个表用户,一个表事件和一个表users_events(包含user_id,event_id列)。这将是正常的做法。
答案 1 :(得分:0)
您是对的 - 最好的方法是拥有专用的联接表(例如 event_attendees )。
这允许多对多关系(用户可以加入许多事件,一个事件可以有很多用户)。
你可以在事件表中有一个名为 creator_id 的列,它引用创建事件的用户,因为这比将其存储在与会者的专用连接表中更好。
答案 2 :(得分:0)
是的,您需要为用户和事件创建一个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;