MySQL数据库设计:用户和事件表

时间:2012-09-25 20:39:50

标签: mysql sql database database-design

我对数据库设计有疑问。我正在创建一个用户可以创建事件的网页(即用户'Jane'创建一个名为'My Birthday Party'的事件)。 其他用户可以加入此活动,因此用户'John'可以参加Janes活动'我的生日派对'。 为了让Jane能够看到有多少客人(用户)来参加她的生日派对,是否有必要在用户和活动之间创建关系表?

假设有100位访客(用户)参加,这将要求我在关系表中创建100行,将每个用户链接到该事件。可以这样做吗?

先谢谢,如果有什么不清楚请告诉我: - )

3 个答案:

答案 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;