2012-08-27 8 views
2

내 사이트의 사용자를위한 테이블이 있습니다. 테이블이 열로 구성되어 있습니다.여러 값 저장

user_id, fname, lname, email, password, interest1, interest2, interest3, interest4, 
interest5 

이제 개별적인 관심사를 개별적으로 저장하는 것이 실제적이지는 않습니다. 이것을하는 더 좋은 방법은 무엇입니까. 사용자 관심 분야를 쉽게 편집/액세스 할 수있는 방법?

감사합니다.

답변

2

Database normalization 원하는 것을 수행합니다.

이 같은 구조로 새로운 interests 테이블을 만들 것입니다 :

interest  user_id 
"skiing"   1 
"programming"  4 
etc... 

을 그리고,이 같은 쿼리로 특정 사용자에 대한 모든 이익을 얻을 수 있습니다 :

SELECT `interest` FROM `interests` WHERE `user_id` = :my_user_id; 
+1

아직 정상화되지 않았습니다. 정규화 된 형식은 다 대다 관계를 사용합니다. 따라서 관심 분야 (id, interest_name)와 사용자 관계 (user_id, interest_id) 중 하나의 표. – lafor

1

user_idinterestinterests이라는 새 테이블을 만듭니다.

0

Serialize 그들. 이렇게하면 원하는만큼 많은 관심 분야를 0으로 저장할 수 있으며, unserialize을 사용하면 해당 데이터 구조 (즉, 배열 또는 객체)를 유지 관리 할 수 ​​있습니다.

+0

정규화 할 수있는 이유는 무엇입니까? 그것은 불가능한 검색을합니다. –

+0

왜? 그것은 간단하고 실행 가능한 솔루션으로 내 머리 속으로 튀어 나왔기 때문입니다. 나는 정상화에 반대하지 않는다. – j08691

2

사용자와 관심사가 다 대다 관계입니다. seaparte 관심 표를 만들고 사용자를 관심사와 연결시키는 교차점 표를 소개하십시오.

enter image description here

+0

이 답변만으로는 책 용어를 제외하고는별로 설명하지 못하고 테이블에는 너무 많은 공백이 있습니다. (어쨌든 +1 함) –

+0

@arxanas : 공백을 수정했습니다. –