我有一個關於數據庫設計的問題。我正在製作一個用戶可以創建活動的網頁(即用戶'Jane'創建了一個名爲「我的生日聚會」的活動)。 其他用戶可以加入此活動,因此用戶'John'可以參加簡氏活動'我的生日聚會'。 爲了讓Jane看到誰和有多少客人(用戶)來參加她的生日派對,是否有必要在用戶和事件之間創建關係表?MySQL數據庫設計:用戶和事件表
比方說,100人(用戶)參加,這將需要我,每個用戶鏈接到該事件關係表,使100行。這可以做到嗎?提前
感謝,如果有不清楚的地方,請告訴我:-)
我有一個關於數據庫設計的問題。我正在製作一個用戶可以創建活動的網頁(即用戶'Jane'創建了一個名爲「我的生日聚會」的活動)。 其他用戶可以加入此活動,因此用戶'John'可以參加簡氏活動'我的生日聚會'。 爲了讓Jane看到誰和有多少客人(用戶)來參加她的生日派對,是否有必要在用戶和事件之間創建關係表?MySQL數據庫設計:用戶和事件表
比方說,100人(用戶)參加,這將需要我,每個用戶鏈接到該事件關係表,使100行。這可以做到嗎?提前
感謝,如果有不清楚的地方,請告訴我:-)
是的,你會想創建一個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;
你是正確的 - 最好的辦法是有一個專用的連接表(如event_attendees)。
這允許多對多的關係(用戶可以加入許多事件,事件可以有很多用戶)。
您可以在事件表中創建一個名爲creator_id的列,它指的是創建該事件的用戶,因爲這比將其存儲在與會者的專用連接表中更好。
非常感謝你 – user1698462
是的,你需要一個用戶表,表的事件,和一張桌子users_events(與列user_id說明,事項標識)。這將是正常的做法。
那通常你會怎麼辦呢?是的。 – prodigitalson