2011-03-21 4 views
0

내 연상을위한 회원 데이터베이스를 만들고 싶습니다. 우리는 소규모 지역 단체들로 구성된 국가기구입니다.회원 목록에 가장 적합한 데이터베이스 구축 연습

나는 속도와 오버 헤드의 평균에 내 데이터베이스를 구성하는 것이 더 될 것이라고 연습 궁금 :

  1. 는 필터링을위한 "로컬 연결"필드에 모든 회원들과 하나 개의 큰 테이블을 만듭니다.
  2. 그룹별로 하나씩 많은 테이블을 만듭니다.

EDIT (이 뭔가를 바꿀 수 있다면 BTW 나는, 줌라 중이 야) : 나는 협회의 구조를 명확하게합니다. 한 명의 회원은 한 번에 하나의 작은 지역 협회의 일부가 될 수 있습니다. 모든 회원은 전국 협회 회원입니다. 모든 회원 (및 모든 협회)에 대해 데이터 필드는 동일합니다. 아직 명확하지 않은 경우 나에게 댓글을 달아주세요.

답변

1

로컬 제휴에 관계없이 모든 회원에 대해 동일한 입력란을 추적한다고 가정 할 때 모든 회원에 대해 하나의 표를 기대합니다. 이렇게하면 로컬 연결을 추가/제거 할 때 유지 관리 오버 헤드가 크게 줄어 듭니다.

서로 다른 로컬 연결에서 회원에 대한 정보가 크게 다를 경우이 권장 사항을 약간 재검토해야 할 수도 있습니다.

0

큰 테이블 하나를 제안합니다. 이론적으로 분할하는 경우에도 단순성 측면에서 많은 장점을 잃을 것입니다. 예를 들어, 속도와 관련하여 10 개의 테이블이 아닌 하나의 테이블에 대한 쿼리 조정 및 최적화의 단순성을 고려하십시오.

또한 여러 테이블을 사용하면 많은 중복성이 생길 수 있습니다. 따라서 분할 할 경우 중복성을 최소화하고 관계를 사용하여 거의 동일한 테이블을 유지해야하는 번거 로움을 피하십시오.

+1

큰 테이블 하나를 사용하려는 경우 스프레드 시트를 사용할 수도 있습니다. 다중 테이블은 실제로 중복성을 줄이고 null의 가능성을 제거합니다. – swisscheese

1

나는 세 번째 대안을 고려할 것이다 : 회원 테이블, 연관 테이블 및이 두 테이블을 결합하는 테이블. 이 방법으로 동일한 사람이 자신의 정보를 복제하지 않고도 여러 연관의 일부가 될 수 있습니다.

+0

고마워요,하지만 이럴 수는 없습니다. 회원들은 한 번에 하나의 지역 협회에 가입 할 수 있습니다. 지적 해 주셔서 죄송합니다. – Bakaburg

+0

@Bakaburg - 내가 생각하기에 단일 협회와 관련된 규칙은 어떻게 적용됩니까? 협회는 별도의 법인체입니까? – Thomas

2

당신이 게시 한 제한된 요구 사항과 함께 나는 그것을 보았습니다. 세 번째 대안은 게시 한 2 가지 옵션이 실제로 DB에 적합하지 않기 때문입니다.

enter image description here

당신은 3 가지 다른 엔티티 (회원 그룹 (연합회.), 주소 (위치)) 기술 및 표준화의 규칙에 따라 당신이 적절하게 사람들을 분리해야합니다. 1 또는 2 개의 테이블에만 모든 것을 보관하면 DB 전체에 중복 기록이 생깁니다. 개인적으로 나는 여기에 토마스와 동의하고 게시 한 두 번째 옵션을 통합하는 방법을 살펴 보겠습니다.

방금 ​​전의 기본 요구 사항을 이해하지 못하는 기본 테이블 구조를 제공 했으므로 요구 사항에 맞게 관계 카디널리티를 조정하십시오. 스트레스를 받고있는 가장 중요한 부분은 적절하게 정상화하는 것입니다. 다른 사람들이 단순성에 대해 말하는 것과는 달리 더 이상 간단하게 설정하지 못하고 적절하게 설정 한 데이터베이스가 정상적으로 정상화됩니다.

+1

답변이 복잡함에 대한 1+! 회원들은 한 번에 오직 하나의 지역 협회의 일원이되기 전에 지적했듯이. 내 질문을 수정하여 더 명확하게 해드릴 것입니다. 감사! – Bakaburg

+0

@Bakaburg이 경우 회원이 그룹 외부에 존재할 수 있습니까? 그렇다면 두 번째 모델은 Member :: MemberGroup 관계에서 Cardinality 만 변경하면됩니다. 첫 번째 모델은 시스템에 그룹을 추가 할 때 그룹의 일부로 멤버를 추가해야한다는 것입니다 (NULLS를 허용하지 않고 권한을 부여하지 않는 경우). 이러한 유형의 시나리오에서는 이러한 제약 조건을 권장하지 않습니다. – swisscheese

+0

아니요, 구성원은 하나의 로컬 그룹에 속해야합니다. 예를 들면 : 시민은 자신의 도시의 시민이지만 국가의 다른 도시는 아닙니다. "주소"를 넣을 필요는 없으며 로컬 그룹의 이름으로 충분합니다. – Bakaburg

관련 문제