2012-03-14 3 views
2

저는 부동산 회사를위한 데이터베이스를 구축하고 있습니다. 이러한 부동산 속성은 CodeIgniter 웹 사이트를 사용하여 영업 사원이 관리합니다.하나의 필드에 여러 값이있는 MySQL 테이블

이 테이블에 대한 데이터베이스 디자인은 어떻게 진행해야합니까? 주소/위치, 가격 등의 필드는 매우 간단하지만 Kitchen Appliences, Property Usage 등의 일부 섹션이 있습니다. 판매원이 해당 필드에 대해 여러 값을 확인할 수 있습니다.

더하여, 재산에는 테이블 사람들로부터 여러 사람이 붙을 수 있습니다. 이것은 중간 매체, 소유자, 판매자, 자산 변호사 등일 수 있습니다.이 필드 하나만 사용해야합니까 아니면 그냥 테이블을 추가하고 바인딩을 정규화 하시겠습니까?

하나의 필드를 사용하고 직렬화 된 데이터를 사용하는 것이 가장 좋은 방법입니까 아니면 더 좋은 방법일까요?

당신은 그것을 위해 별도의 테이블을 만들어야합니다

답변

7

관계형 데이터베이스에서 하나 이상의 필드에 하나 이상의 값을 입력해서는 안됩니다. 이는 첫 번째 정규 양식을 위반합니다.

키친 기기, 속성 사용 등 ... 판매원이 해당 필드에 대해 여러 값을 확인할 수있는 곳은 항상 지정할 수있는 여러 옵션과 동일한지 여부에 따라 달라집니다.

  • 항상 동일한 옵션 집합이있는 경우 각 옵션에 대한 속성 테이블에 부울 열을 포함 할 수 있습니다.
  • 다른 속성에 다양한 옵션을 적용 할 가능성이있는 경우 사용 가능한 옵션을 보관할 별도의 테이블을 설정하고 어떤 옵션을 어떤 속성에 적용 할 것인지를 나타내는 링크 테이블을 설정하는 것이 좋습니다.

첫 번째 방법은 더 간단하고 더 빨리 수행 할 수 있지만 후자는 더 유연합니다.

각 주택과 관련된 사람들에게도 비슷한 고려 사항이 적용됩니다. 그러나 단일 속성이 둘 이상의 소유자를 가질 수 있다고 가정 할 때 두 번째 방법은 유일하게 실행 가능한 것처럼 보입니다. 따라서 사람 세부 정보 (이름, 전화 번호 등)와 사람 역할 (예 : 소유자, 판매자 등)을 보유하는 별도의 테이블과 속성 및 사람과 역할을 연결하는 링크 테이블을 제안합니다.

3

....

예를 들어

...

Consider the scenario that 1 item may have many categories and 1 category may have many items... 

Then you can create table like this... 

Create three tables for that.... 

(1) tblItem : 

    fields: 
      itemId (PK) 
      itemName 
      etc.. 

(2) tblCategory : 

    fields: 
      categoryId (PK) 
      categoryName 
      etc.. 

(3) tblItemCategory : 

    fields: 
      itemId (PK/FK) 
      categoryId (PK/FK) 

So according to your data you can create an extra table for it.... 
I think it would be optimize way.... 
0

당신은 당신의 데이터가 세 번째 정상 형태가 될하려는 경우, 다음의 관점에서 생각해야한다 다양한 값을 여러 필드로 인코딩하는 것보다 테이블을 추가하는 것. 그러나 그것은 당신의 개요가 얼마나 멀리에 달려 있느냐에 달려 있습니다.

+0

의견을 보내 주셔서 감사합니다. 그러나 MVC 관점에서 모든 테이블에 대해 클래스/컨트롤러를 만들어야합니까? – Simon

+0

이것은 데이터베이스 디자인의 범위를 넘어서는 것이며 다른 질문입니다. –

+0

MVC 관점에서 컨트롤러는 데이터베이스 테이블과 관련이 없습니다. – nem75

관련 문제