2011-03-17 3 views
3

양식에 확인란 목록이 있거나 사용자가 선택할 수도 있고 모두 선택할 수도 있습니다.
사용자가 관심있는 스포츠 유형을 선택한다고 생각하십시오.MySql : 데이터베이스에 객관식 데이터를 저장하십시오.

나는이 사용자 choise를 저장하기 위해 최상의 데이터베이스 구조가 필요합니다. 그래서, 앞으로이 모든 데이터를 얻을 수 있습니다.

나는 각각 (userID, sport) choise를 데이터베이스 테이블의 새로운 행으로 저장할 수 있다고 생각한다. 그러나 테이블이 몇 명의 사용자로 더 빠르게 확장되기 때문에 혼란 스럽습니다.

어떤 아이디어입니까, 형제입니까?

답변

3

을 설정할 수 있습니다 대다 테이블과 같은 : 사용자가 많은 스포츠를 가지고 있으며, 스포츠가 많이 있기 때문에

User 
------- 
id name 

5 Mike 

Sport 
----- 
id name 

20 Football 

이 의미가 있습니다 : 당신이

FavoriteSports 
------ 
id user_id sport_id 

1 5  20 

사용자.

3

이렇게하는 방법을 결정하는 것을 정규화라고합니다.

데이터를 정규화하는 방법에 따라 여러 가지 방법이 있습니다.

가장 간단한 방법은 귀하가 설명한 것입니다.

userID userName sport 

또는 당신은이 개 테이블

users 
userID userName sportID 

sports 
sportID sport 

을 가질 수 있습니다 또는 당신은 3 개 테이블 user_sports 테이블이있는 스포츠를 좋아하는 사용자 포함
users 
userID sportName 

sports 
sportID sportName 

user_sports 
userID sportID 

을 가질 수 있습니다.

선택한 방법은 데이터의 관계와 예상되는 중복 정도에 따라 다릅니다.

사용자가 선택한 스포츠 만 저장하는 경우 두 번째 스포츠를 선택합니다. 이는 스포츠 이름의 중복을 방지하지만 사용자 당 하나의 스포츠 만 허용합니다. 사용자가 여러 스포츠를 선택할 수있게하려면 세 번째 옵션을 사용하십시오.

관련 문제