2012-09-25 28 views
0

我有一個關於數據庫設計的問題。我正在製作一個用戶可以創建活動的網頁(即用戶'Jane'創建了一個名爲「我的生日聚會」的活動)。 其他用戶可以加入此活動,因此用戶'John'可以參加簡氏活動'我的生日聚會'。 爲了讓Jane看到誰和有多少客人(用戶)來參加她的生日派對,是否有必要在用戶和事件之間創建關係表?MySQL數據庫設計:用戶和事件表

比方說,100人(用戶)參加,這將需要我,每個用戶鏈接到該事件關係表,使100行。這可以做到嗎?提前

感謝,如果有不清楚的地方,請告訴我:-)

+1

那通常你會怎麼辦呢?是的。 – prodigitalson

回答

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; 
+0

我猜事件表應該也有一個事件所有者的列(用戶表的外鍵)。 – Christina

+0

@Christina可能,我只是把它作爲一個建議的模型扔在一起。模擬事件數據庫有很多不同的方法。 – Taryn

0

你是正確的 - 最好的辦法是有一個專用的連接表(如event_attendees)。

這允許多對多的關係(用戶可以加入許多事件,事件可以有很多用戶)。

您可以在事件表中創建一個名爲creator_id的列,它指的是創建該事件的用戶,因爲這比將其存儲在與會者的專用連接表中更好。

+0

非常感謝你 – user1698462

1

是的,你需要一個用戶表,表的事件,和一張桌子users_events(與列user_id說明,事項標識)。這將是正常的做法。