2012-09-25 2 views
0

데이터베이스 디자인에 대한 질문이 있습니다. 사용자가 이벤트를 만들 수있는 웹 페이지를 만들고 있습니다 (예 : 사용자 'Jane'이 '내 생일 파티'라는 이벤트를 만듭니다). 다른 사용자가이 이벤트에 참여할 수 있으므로 'John'사용자의 Janes 이벤트 'My Birthday Party'에 참석할 수 있습니다. Jane이 생일 파티에 오는 손님과 사용자를 확인하려면 사용자와 이벤트 간의 관계 테이블을 만들어야합니다.MySQL 데이터베이스 디자인 : 사용자 및 이벤트 테이블

참석자가 100 명이라면 각 사용자를 이벤트에 연결하는 관계 테이블에서 100 개의 행을 만들어야합니다. 그렇지 않으면이 작업을 수행 할 수 있습니까?

감사합니다 사전에 아무것도 불분명 한 경우가 올바른지

+1

그게 전부는 일반적으로 예 ... 그것을 할 것입니다 방법 :

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 ); 

그런 다음 조회하려면, 다음과 같이 사용합니다. – prodigitalson

답변

0

예, 사용자 및 이벤트에 대해 JOIN 테이블을 만들려고합니다. 이 유사 :

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 아마도이 모델을 제안 된 모델로 던졌습니다. 이벤트 DB를 모델링하는 방법에는 여러 가지가 있습니다. – Taryn

0

:-) 말해 줘요 - 가장 좋은 방법은 조인 전용 테이블 (예 : event_attendees)를 가지고하는 것입니다.

이렇게하면 많은 관계를 가질 수 있습니다 (사용자는 많은 이벤트에 참여할 수 있고 이벤트에는 많은 사용자가있을 수 있음).

이벤트 테이블에 이벤트를 만든 사용자를 나타내는 creator_id가 인 열을 포함 할 수 있습니다. 이는이 이벤트를 참석자의 전용 조인 테이블에 저장하는 것보다 낫기 때문입니다.

+0

고맙습니다. – user1698462

1

예, 테이블 user, 테이블 이벤트 및 테이블 users_events (user_id, event_id 열 포함)가 필요합니다. 그것이 정상적인 방법 일 것입니다.

관련 문제