2012-05-09 3 views
0

내가 지금처럼 사용자 테이블과 데이터베이스가 :이 정보를 저장하는 가장 좋은 방법은 무엇입니까?

table users: 
user_id (int) 
user_name (varchar) 
etc.. 

이 사용자는 같은 요구 사항 몇 가지를 입력 할 수 있습니다 :

  • 최소 급여 (int)를
  • 는 운전 면허증을 가지고 (BOOL)
  • 내 다른 요구 (텍스트) 반환 값

user_id: 1, 
user_name: 'John Doe', 
user_requirements: { 
    minimal_salary: 2000, 
    drivers_license: true, 
    demands: 'These are my demands..' 
} 

것은 무엇 데이터베이스에이를 저장하는 가장 좋은 방법이 될 것입니다 다음 User->get(user_id);의이 같은해야?

1 대 1 릴레이션을 사용할 수 있습니다. (조인 또는 별도의 쿼리 비용이 필요합니다.) 1 개의 테이블에 모두 저장할 수 있습니다. (코드에서 약간의 조정이 필요합니다.) 요구 사항 표의 유형 (int/bool/text)을 사용하여이를 여러 관계로 정규화 할 수 있습니다.

편집

참고 : 이미 사용자 테이블에 25 개 컬럼을 가지고, 그래서 수요의 3 ~ 6까지 열을 추가 할 경우 어떤 차이를 만들 것? 눈을 들어 보면 1 개의 테이블에 많은 정보를 얻을 수 있습니다.

답변

1

다른 사용자에게 공통적 인 데이터가 없기 때문에 하나의 테이블에 저장할 수 있습니다.

인스턴스에 대한 요구 사항이 목록에서 선택되면 가능한 목록 항목을 별도의 테이블에 저장하도록 제안합니다. 그냥 모든 분야 모든 시간이 필요하지 않은 경우

, 당신은 제공하지 않는 한

select * from users where user_id = 123 

select minimal_salary, drivers_license from users where user_id = 123 
1

을 당신이

은하지 않는다

필요 필드 만 선택 사용자가 자신의 필드를 지정할 수있는 능력 때문에 정보를 별도의 테이블로 분리해야하는 이유가 없습니다. 해당 정보 필드는 모두 단일 한 개별 사용자에게 적용됩니다. 복잡있을 경우 나 볼 수있는 단 하나 개의 테이블

+0

별도의 테이블에 넣는 이유는 사용자가 요구하는 것이 자체적 인 개체라는 것입니다. 프론트 엔드에서 user-> get() 함수가 호출 될 때만이 데이터를 사용할 필요가 있습니다. 내가 사용자의 정보를 사용해야하는 다른 모든 시간에는 요구가있을 필요가 없습니다. – pascalvgemert

+0

요구 사항은 어떤 종류입니까? 위에는 간단한 문자열로 표시되는 것처럼 보입니다. –

+0

책임을 분담하면 자신의 정보와 함께 사용자의 요구 사항 (예 : 사용자 업데이트 등)을 갖게됩니다. 하지만 아마도 지금은 어렵다고 생각합니다. – pascalvgemert

2

사용은,이 데이터를 저장하려면

옵션 1 : (하나만 사용 테이블)

|--------|-----------|----------------|-----------------|------------------------| 
user_id user_name minimal_salary drivers_license   demands 
|--------|-----------|----------------|-----------------|------------------------| 
    1  John Doe   2000    true   These are my demands.. 
|--------|-----------|----------------|-----------------|------------------------| 

옵션 2 :parameters이 인 경우 two tablesusers, 다른 하나는 requirements, 다른 테이블은 user_id as foriegn id이 될 수 있습니다. 그런 다음 use a join을 사용하여 레코드를 검색 할 수 있습니다.

희망이 도움이됩니다.

관련 문제