2010-07-15 5 views
0

많은 주소 정보, 도시, 우편 번호, 전자 메일 주소, 전화 번호, 팩스 번호 등을 포함하는 테이블을 가진 데이터베이스를 계획하고 있습니다 (약 11 개의 열 정도). 테이블은 다음과 같습니다. 2 개의 주소 (법적 연락처와 실제로 사용되어야하는 연락처)를 포함하는 조직 테이블과 모든 사용자는 동일한 정보를 사용자에게 부여합니다.연락처 정보를 별도의 테이블에 넣을까요?

우리는 다른 주소에서 X 킬로미터 내에있는 모든 주소와 같은 주소에서도 일부 위치 정보 항목을 실행해야합니다.

I 옵션을 잔뜩 가지고, 자신의 문제와 각각 :

  1. 나는 모든 테이블 내부의 모든 정보를 넣을 수 있지만 내가 가진 것 열에 매우 많은 양의와 함께 테이블에 만들 것 문제를 색인 생성하고 주소 형식을 변경하면 수정하는 데 시간이 걸릴 수 있습니다.
  2. 내가 배열 내에서 모든 정보를 넣어 직렬화 할 수 후 하나 개의 필드, 좀 덜 열 이전 방법과 같은 문제에 직렬화 된 정보를 저장하고 mysql을 통해 훨씬 적은 가용성은
  3. 내가 만들 수 쿼리 주소 정보를 별도의 테이블과 주소 테이블에 related_id 및 related_table 열을 넣어 사용자와 조직 테이블

  4. 에 address_id 열을 가하고 다른 테이블에 하나

    1. 하여 연결

    물건을 조금씩 정리해야하지만 과도한 결합 등으로 예상치 못한 문제가 발생할 수 있습니다.

개인적으로 나는 해결책 3.2가 최고라고 생각하지만, 그것에 대해 너무 확신하지 않는다. 그래서 나는 의견을 묻는다.

+1

데이터베이스에 대한 정규화 체계를 생각해보십시오. 1NF, 2NF, 3NF, BCNF .... – Kangkan

+0

나는 그것들에 익숙하지 않다. 또한 정상화 문제라고 생각하지 않습니다. – Madness

+0

정규화 문제가 정확히 무엇인지 알 수 있습니다. 나는 Kangkan의 제안을 채택 할 것을 강력히 권고한다. –

답변

0

옵션 2는 DBMS가 처리하는 대신 필터링 로직을 코드에 넣으므로 확실하지 않습니다.

옵션 1 또는 3은 필요에 따라 다릅니다.

모든 데이터에 빠르게 액세스해야하고 조직 정보와 함께 두 주소에 모두 액세스해야하는 경우 옵션 1을 고려할 수 있습니다. 그러나이 옵션을 사용하면 쿼리가 어려워 질 수 있습니다 mysql에서 너무 큽니다.

옵션 3은 테이블을 올바르게 색인화하면 좋습니다.

+0

3.1 및 3.2은 무엇입니까? – Madness

+0

3.1이라고 말하고 싶습니다. 또는 Organization_Addresses (Org_ID, Addr_ID, Order)를 작성하여 조직에 대한 여러 주소를 허용 할 수 있습니다. 및 다른 User_Addresses. – pascal

+0

여러 조직에 대해 동일한 주소를 갖고 있습니까? 아니면 각 조직이 하나의 조직에 대해서만 주소를 지정합니까?위 질문에서 각 조직에는 여러 개의 주소가 있음이 분명합니다. 주소가 1 조직에만 속할 수있는 경우 주소 테이블의 외래 키를 사용하여 조직 테이블에 연결해야합니다. 각 주소가 여러 조직에 속할 수 있으면 파스칼의 설명에서 언급 한 것처럼 주소와 조직을 연결하기 위해 별도의 테이블을 만들어야합니다. – iWantSimpleLife

관련 문제