0

我有一个关于数据库设计的问题。我正在制作一个网页,用户可以在其中创建活动(即用户“Jane”创建了一个名为“我的生日派对”的活动)。其他用户可以加入此活动,因此用户“John”可以参加 Janes 活动“我的生日派对”。为了让 Jane 看到谁和有多少客人(用户)来参加她的生日聚会,是否有必要在用户和事件之间创建一个关系表?

假设有 100 位客人(用户)参加,这将需要我在将每个用户链接到活动的关系表中创建 100 行。否则可以这样做吗?

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

4

3 回答 3

1

是的,您需要一个表 users、一个表 events 和一个表 users_events(包含 user_id、event_id 列)。这将是正常的做法。

于 2012-09-25T20:41:44.247 回答
0

你是对的 - 最好的方法是拥有一个专用的连接表(例如event_attendees)。

这允许多对多关系(一个用户可以加入许多事件,一个事件可以有许多用户)。

您可以在事件表中有一个名为creator_id的列,它指的是创建事件的用户,因为这比将其存储在与会者的专用联接表中要好。

于 2012-09-25T20:41:28.417 回答
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;
于 2012-09-25T20:44:43.913 回答