2011-08-29 6 views
1

누군가가 체크 박스 검색을 수행 할 때 하나의 열에 여러 변수를 포함 할 수 있습니까?하나의 열에 여러 변수가 있습니까?

음악에 춤을 : 1.Oldies 2.Reggae 3.pop 4.house

와의 테이블이 '이벤트'의 이름으로 거기에 말을하자이 확인란이처럼 가정 해 봅시다 , 열 중 하나가 음악입니다. 누군가가 체크 박스 1,3 또는 4를 선택하면이 행을 반환 할 것이므로 1,3,4를 검색한다고 가정 해 봅시다.

고마워요 :)

+3

이 방법은 효과가 있지만 좋지 않은 아이디어입니다. 이러한 데이터를 표준화해야합니다. 하나의 EventID와 하나의 Music 열이있는 별도의 테이블 musicForEvent를 만들고, 이벤트에 3 개의 음악이 있으면 3 행을 추가하십시오. – Konerak

+1

정상화가 해결책이 아닙니다. 원하는 것은 관계형 모델보다 표현력이 뛰어나므로 NoSQL을 사용하는 것이 좋습니다. – Halcyon

+0

NoSQL, noice를 흉내 내고있는 @Frits! –

답변

4

당신이 설명하는 것은 다 대다 관계입니다. 즉, 많은 이벤트가있을 수 있으며, 각 이벤트에는 여러 스타일의 음악이 포함될 수 있습니다. 반면에, 음악 스타일은 많은 사건에서 나타낼 수 있습니다.

일반적으로 '이벤트'및 '음악'에 대한 도우미 테이블과 두 개의 서로 다른 테이블을 사용하여 이러한 종류의 관계를 표현할 수 있습니다. '이벤트'에는 기본 키 ID가 있고 '음악'에도 불구하고 서로 참조하는 '음악'또는 '이벤트'열에 표시됩니다. 대신 이들 사이에 링크를 설정하려면 'event_id'및 'music_id'열을 포함하는 세 번째 테이블 'Event_Music'을 작성하십시오. 이 예제를 생각해 봅시다 :이 시대에 뒤 떨어진 사람과 팝 이벤트있을 것입니다 만 하우스 음악 이벤트 C를있을 것입니다 있음을 알려줍니다

Table Event 

id | name 
1 | Event A 
2 | Event B 
3 | Event C 


Table Music 

id | style 
1 | oldies 
2 | reggae 
3 | pop 
4 | house 


Table Event_Music 

event_id | music_id 
    1  |  1 
    1  |  3 
    3  |  4 

합니다.

+0

위의 내용은 이해하기 쉽습니다. 그러나 테이블을 반환 할 때 -이 때문에 각 이벤트마다 여러 행이 표시됩니까? – pufAmuf

+0

예, 이벤트에 둘 이상의 음악 스타일이있는 경우 Event_Music에 행이 두 개 이상 있습니다. 사용자가 "oldies"와 "pop"을 특징으로하는 이벤트에 대해 1과 3을 선택했다고 가정 해 봅시다. 그런 다음 해당 이벤트를 얻으려면 동일한 event_id를 가진 Event_Music의 항목을 쿼리하고 music_id = 1 인이 event_id와 music_id = 3 인 항목이 모두 있습니다. – emboss

+0

흠, 이상적인 것처럼 보이지 않습니다. 단 하나의 행만 반환됩니다. 각 음악 스타일에 대한 열은 무엇입니까? – pufAmuf

1

많은 : 많은 데이터베이스 구조를 조사해야합니다. 조사를하고, 테이블을 만들고, 한 발을 내놔. 이것은 데이터베이스의 기본 형태 중 하나입니다.

1

음악 유형을 별도의 테이블에 넣고 이벤트에서 음악 유형 테이블을 가리키는 외래 키와 열을 만듭니다. 그런 다음 음악 테이블의 PK를 이벤트 테이블에 저장합니다.

2

는 내가 제대로 이해하면, 아니, 같은 분야에서 여러 값을 가질 수 없습니다

+0

downvote로 할 경우 관계형 데이터베이스에 대한 전통적인 다 대다 (many-to-many) 접근 방법을 따르지 않으려면 – Halcyon

+0

+1을 사용하십시오. –

+0

나는 downvote 아무도하지 않았다 :/ – pufAmuf

2

당신이 MySQL을 SET 열 유형을 찾고 (적어도 온건 한 방법으로) 생각합니다.

별도의 테이블에서이 작업을 수행하면 [Events_genres]와 같은 이름이되고 [Events] 테이블 기본 키에는 foreign key, [genres] 테이블 기본 키에는 다른 외래 키가 생깁니다. 예를 들어

:

[events_genres] 
events_id genre_id 
1   1 
1   2 
1   3 
2   3 

events_id 표 이벤트의 ID [이벤트]를 genre_id는 장르 ID는 [장르]에서 (명품, 레게, PHP, ...)이다 표.

+0

기술적으로이 설정에서 브리지/조인 테이블 (예 :'events_to_genres')이 있어야합니다. 'genres' 테이블은 기본 장르 레코드 만 포함해야합니다. –

+0

@ Jason McCreary 그래, 나는 내 글을 편집하는 동안 나를 꾸짖었던 것 같아. 나는 그것이 이제는 더 분명하다고 생각한다. – AlexV

+0

이 솔루션은 각 이벤트에 대해 하나 이상의 행을 반환하지 않습니까? – pufAmuf

관련 문제