2011-10-29 4 views
6

레코드 당 채울 필드 수를 모르는 경우 데이터베이스/테이블을 어떻게 설정해야합니까?테이블을 설정하여 레코드 당 가변 개수의 필드를 저장 하시겠습니까?

예를 들어 사용자가 소유 한 차량을 모두 입력 할 수있는 웹 양식이 있고 그 전화 번호를 특정 번호로 제한하고 싶지 않은 경우 어떻게하면 데이터베이스 끝에 저장할 수 있습니까? 데이터베이스 정규화 :

상기 문제는

등 사용자의 주문 (오더 별 가변 개수의 항목)

답변

9

과 사람을 연결 사람 테이블, 차 테이블 및 제 3있을 것입니다 귀하의 예제에서

상위 엔티티 (사용자)가있는 엔티티 (자동차) 정규화이라는 개념이 있으며, 각 테이블에는 단일 유형의 엔터티에 대한 데이터가 포함되어 있습니다. 그래서

당신은 사용자 정보와 user 테이블이 :

user_id | user_name | email    | ... 
    1234 | User1  | [email protected] | ... 
    2356 | User2  | [email protected] | ... 

그런 다음 사용자의 각 차량의 정보를 저장하기위한 다른 테이블 :

user_car_id | user_id | car_label | make  | model | ... 
      1 | 1234 | MyCar  | Ford  | 2011 | ... 
      2 | 2356 | A Car  | Chevrolet | 2010 | ... 
      3 | 1234 | MyOtherCar| BMW  | 2000 | ... 

을 그래서 대신의 정보를 저장 user 테이블에있는 자동차의 경우 user_id 열을 통해 각 사용자와 관련된 자동차 (user_car) 정보를 저장하는 테이블이 있습니다. 이것은 한 사용자가 많은 관련 자동차를 가질 수있는 일 대 다 관계의 한 예입니다.

+0

감사합니다. 그것은 아주 설명했다! – xbonez

+0

그냥 참고 -이 모델에서는 서로를 판매하는 것처럼 여러 사용자가 '공유'할 수 없습니다. – Randy

3

이 전체 주제 저장 유사한 상황으로 연장된다.

짧은 대답은 하나 이상의 표를 만드는 것입니다. 당신이 관계형 데이터베이스 관리 시스템 (RDBMS) 대신 당신이 아이를 관련 종속 테이블에서 자식 레코드를 작성에서 차

+0

자, 각 자동차와 그 데이터가 고유 한 자동차 ID와 함께있는 자동차 전용 표가 있다고 가정합니다. 그리고 사람과 비슷합니다. 두 테이블을 연결하는 테이블은 어떻게 생겼습니까? 특정 사람이 여러 대의 자동차를 추가하면이 세 번째 테이블의 여러 레코드와 동일합니까? 또한 DB 정규화를 살펴 보겠습니다. 감사합니다 – xbonez

+1

예. 중간 테이블 인 person_car는 ​​예를 들어 person_id와 car_id라는 두 개의 필드가 있어야만 다른 적절한 값을 참조 할 수 있습니다. (예를 들어 여기에 날짜가 너무 필요할 수도 있습니다.) – Randy

관련 문제