복붙노트

[SQL] 어떻게 테이블의 컬럼이 고정되어 있지 스키마를 설계 할 수

SQL

어떻게 테이블의 컬럼이 고정되어 있지 스키마를 설계 할 수

나는 테이블의 컬럼이 고정되어 있지 스키마를 설계하려합니다. 예 : 나는 테이블의 컬럼이 고정되지 않은 직원 테이블을 가지고 있고 (직원의 속성이 고정되지 않고 변화)에 따라 다릅니다. 새로운 속성 / 컬럼을 자주 추가 요구 사항입니다.

단점은 모든 새로운 속성 스키마 변경으로 첫번째 방법은 두 가지입니다. 새로운 속성을 추가하는 것은 자주 요구 사항입니다 있습니다.

나는 이것이 좋은 또는 나쁜 디자인의 경우 모르겠습니다. 사람이 만들 수있는 유사한 결정이 있다면,보고 등 외래 키 / 데이터 무결성, 인덱싱, 성능, 같은 것들에 대한 통찰력을 제공하십시오

해결법

  1. ==============================

    1.나는 숫자, 둘, 셋의 조합을 사용하는 것이 좋습니다. 가능한 경우, 주소 같은 표준 협회 모델 테이블. 이것은 가장 이상적인 방법입니다 ...

    나는 숫자, 둘, 셋의 조합을 사용하는 것이 좋습니다. 가능한 경우, 주소 같은 표준 협회 모델 테이블. 이것은 가장 이상적인 방법입니다 ...

    그러나 지속적으로 직원 테이블에 추가로 두 개의 테이블을 사용, 그런 논리적 인 그룹으로 요약 할 수없는 값을 변경 :

    직원 속성에서 만들어진되는 기본 키를 설정합니다 :

    이 같은 직원에 중복 속성을 중지합니다.

  2. ==============================

    2.당신이 레코드 당 키 - 값 쌍의 임의의 집합을 저장할 수없는 NoSQL 데이터베이스의 현재 작물 보는 것이 유용 할 수 있습니다.

    당신이 레코드 당 키 - 값 쌍의 임의의 집합을 저장할 수없는 NoSQL 데이터베이스의 현재 작물 보는 것이 유용 할 수 있습니다.

    난 당신이 등 CouchDB를, MongoDB를, 루씬,보고 추천 할 것입니다 ...

    스키마는 특히보고와 함께, 악몽에서 SQL 데이터베이스에 자주 끝을 변경하는 경우.

    (ROWID, 키, 값) 화음에 최선을 다하는 것은 유연하지만 때문에 레코드의 엄청난 수의 느립니다.

    의 ERP 벤더들이 그것을 할 방법은 단지 그들이 있는지의있는 필드의 자신의 스키마를 만들어 고정라는 이름의 컬럼에서 "flexfields"(즉, 20 수, 20 문자열 등)의 largisch 번호를 추가하고 확인하기 위해 조회 테이블을 사용한다 이는 무엇에 해당합니다 flexcolumn. 기본적으로 정적 스키마를하면서이 미래를위한 유연성을 할 수 있습니다.

  3. ==============================

    3.당신이 말한대로, 새로운 속성이 자주 추가됩니다 경우, EAV 데이터 모델은 당신을 위해 잘 작동 할 수 있습니다.

    당신이 말한대로, 새로운 속성이 자주 추가됩니다 경우, EAV 데이터 모델은 당신을 위해 잘 작동 할 수 있습니다.

  4. ==============================

    4.관찰 패턴이라는 패턴이있다.

    관찰 패턴이라는 패턴이있다.

    하나, 둘, 셋 : 설명은 이러한 질문 / 답변을 참조하십시오.

    일반적으로 다음과 같습니다 :

    예를 들어, 대상 직원, 회사와 동물 모두 주제 직원과 동물이 관찰 라벨 (특성) 및 볼륨 (측정)을 가질 수 관측 무게 (측정) 및 주제 맥주 병을 가질 수 있습니다 관찰 이름 (특성)을 가질 수있다. 이 모델의 모든 맞는.

  5. ==============================

    5.하나에 당신의 ExtensionColumn 테이블을 결합

    하나에 당신의 ExtensionColumn 테이블을 결합

    Property:
        EmployeeID foreign key
        PropertyName string
        PropertyValue string
    

    모든 개체 테이블의 기본 키를 할당 단조 순서를 사용하는 경우 하나의 속성 테이블은 모든 객체에 대한 속성을 보유 할 수 있습니다.

  6. ==============================

    6.나는 자주 속성을 추가하는 경우, 당신이 데이터 요구 사항에 대한 핸들을 생각하지 않는 1과 2의 조합을 사용합니다.

    나는 자주 속성을 추가하는 경우, 당신이 데이터 요구 사항에 대한 핸들을 생각하지 않는 1과 2의 조합을 사용합니다.

    나는 속성의 몇 가지 사항 다른 테이블에 속해 추가되는을 supect. 당신이 인증 자바, 인증 ASP와 같은 attribututes를 계속 추가하면 ..., 당신은 인증 표가 필요합니다. 이것은 가능한 인증을 나열하는 인증 코드 테이블의 관계가 될 수 있습니다.

    관리자와 같은 특성은 속성 또는 관계 테이블 일 수있다. 당신은 직원들 사이에 여러 관계가있는 경우, 다음 releation 유형과 관계 ​​테이블을 고려하십시오. 매트릭스 관리 구조와 조직은 releationship 테이블이 필요합니다.

    주소 및 전화 번호는 종종 별도의 테이블에 이동합니다. employee_id입니다 같은 주소 키, address_type이 적합 할 것입니다. 역사는 필요한 경우 키에 시작일 열을 추가합니다.

    당신이 역사를 유지하는 경우 나는 적절한 열을 시작일과 종료일 열을 사용하는 것이 좋습니다. 나는 '시작일 <= 날짜 --고려되고 <종료일이'에 해당하는 경우 레코드가 활성화되어있는 경우 관계를 사용하려고합니다. 등 체중, 눈 색깔, 같은 속성

  7. from https://stackoverflow.com/questions/2932322/how-to-design-a-schema-where-the-columns-of-a-table-are-not-fixed by cc-by-sa and MIT license