2013-07-12 3 views
0

현재 대행사 CMS를 만들고 있으며 사용자 세부 정보를 요청하고 싶습니다. 그래서 등록 양식은 사진 작가 및 모델의 두 그룹으로 나뉩니다. 모델은 체형, 머리 색, 머리 길이, 높이 및 기타에 대한 옵션을 선택할 수 있지만 이러한 옵션은 사진 작가에게는 필요하지 않습니다.MySql 여러 테이블 또는 하나의 큰 테이블?

제 질문은 더 효과적입니까? 큰 테이블에 모든 것을 저장하거나 시체 detalis를 분할.

예이 행복 할에 대해 누군가가 나에게 어떤 정보를 줄 수 있다면

users_table <--- contains everything 

또는

users_table <--- containing login details and a few basic information 
users_body_table <--- containing model body information 

당신에게 사람 내가의 definetly 추천 할 것입니다 귀하의 설명에서

+0

a) 모델이 사진을 찍거나 b) 사진 작가가 포즈를 취하는 시나리오를 상상할 수 있습니까? – Strawberry

+0

필자는 두 번째 접근 방법 인 개인적으로 두 개의 테이블로 데이터를 분할하려고합니다. 나는 그것을 "더 깨끗하게"발견했고 단지 더 좋았습니다 : D – paranoid

+0

당신은 그것을 나눠야합니다. 나중에 대행사가있는 경우에는 어떻게해야합니까? 그런 다음, 그들의 특정 정보가 커다란'users_table'에 추가 될 것입니다. 또한,이 정보를 위로 나누는 것은 관계형이며, 모델을 수정하지 않고도 모델 (크기 등)에 관한 데이터를 수정하는 것이 더 쉽습니다. 사용자 정보 (로그인 자격 증명, ...) –

답변

3

감사합니다 두 번째 접근 방식 - 데이터 분할.

첫 번째 방법에서는 약 1/4의 테이블에 널 (null)로 채워져 있습니다. 당신은 예를 here

더 효율적입니다 결정됩니다 가장 중요한 것은을 위해 볼 수 있습니다 널 (null)에 대해

효과는 사진 작가 나 모델 만받을 만하면 얼마입니다. 내게는 아마도 분명히 그 것이 분명 할 것입니다 - 그리고 그것 때문에, 분리 된 테이블로 더 좋을 것입니다.

변경 사항이 필요한 경우, 예를 들어 새로운 모델 특성이 추가되는 경우 한 테이블에서만 유지 관리하기가 더 쉽습니다. 방금이 데이터를 검색하려면

쉽게 하나 개의 테이블을 통해 실행할 수 있습니다 스플릿 테이블과 미래 normalization

1

의 관점에서 생각하십시오. 큰 테이블에 많은 데이터가있는 경우 검색 시간이 너무 길어집니다. 테이블을 객체에 매핑하면 작은 객체를 갖는 것이 더 좋습니다. 당신도 그것을 재사용 할 수 있습니다 .... 아마 당신은 정말로 하나의 테이블 (보기는 투명한 동적 테이블)을 원한다면보기를 사용할 수 있습니다

0

좋은 방법은 별도의 테이블입니다. 일반 사항 (사용자) (로그인, 암호 등) 모델 (users_models)에 대한 두 번째 테이블과 3 테이블 사진 작가 (users_photo)에 대한 당신이 모델에서 상점 ID 2 개 필드를 만들 수 있습니다 테이블 사용자에

및 대한 한 테이블 사진 테이블. 이 경우 한 명의 사용자는 사진 작가 또는 모델이 될 수 있습니다.

관련 문제