문제

3 개의 10 개 필드 (field1..field10)가 포함 된 양식이 있다고 가정합니다.양식 데이터를 하나 이상의 데이터베이스 테이블에 저장하며 아마도 10 개의 데이터베이스 열을 사용합니다.

몇 달 후 필드를 3 개 더 추가하고 싶다고 가정 해 보겠습니다.그리고 향후 요구 사항 변경에 따라이 양식에서 필드를 추가 / 삭제할 수 있습니다.양식 필드 당 데이터베이스 열이있는 경우 양식을 변경할 때마다 해당 데이터베이스를 변경해야합니다.이것은 유지 관리의 골칫거리처럼 보입니다.더 정교한 방법이 있어야합니다.

제 질문은 UI와 느슨하게 결합 된 데이터 모델을 어떻게 디자인할까요?구체적인 사용 사례는 사용자가 확장 / 사용자 정의 할 수있는 CRM 시스템입니다.

도움이 되었습니까?

해결책

정말 좋은 이유가 없다면 일반적으로 이것은 나쁜 생각입니다.데이터베이스를 최적화하고 확장하기가 매우 어렵습니다.

반드시 그렇게해야한다면 Travis의 제안은 작은 테이블에 적합하지만 실제로 그렇게 잘 확장되지는 않습니다.

다른 팁

양식 테이블에 대해 다대 다가되도록 필드를 별도의 테이블로 추상화 할 수 있습니다.

양식

ID
이름

필드

ID
라벨
가치

양식 필드

FormID
FieldID

우리 팀은 AIMS (www.totalaims.com)에서 Quest Computing에서 일하면서 이에 대한 해결책을 제시했습니다.요약하면 관리자가 메타 데이터를 추가하고 결과적으로 특정 테이블의 데이터베이스에 필드를 추가 할 수있는 유지 관리 화면을 추가했습니다.필드는 또한 자체 유지 관리 및 검색 화면에 자동으로 추가되었습니다.우리는 이것을 OpenACS 위에 구축했습니다.자세한 내용은 www.openacs.org에서 찾을 수 있습니다. "flexbase"또는 "dynfields"를 검색하거나 여기 www.project-open.org/doc/intranet-dynfield/를 참조하십시오.이것은 꽤 잘 작동했습니다. 주된 단점은 주요 상승의 부작용입니다. 즉, 필드 추가가 비 DBA에 의해 수행 될 수 있으며 결과적으로 성능이 쉽게 손상 될 수 있습니다.

과거에는 추가 필드를 저장하기 위해 데이터베이스의 XML 열을 사용하여이 작업을 수행했습니다. 일반적으로 XML 열에 큰 속성 모음이 있고 업데이트 또는 삽입을 수행 할 때 XSD를 사용하여 유효성 검사를 시행합니다. 데이터를 검색 할 때 요소가 표시되는지 여부, 적용 할 추가 형식 및 속성 노드의 데이터 유형에 따라 사용할 입력 요소 유형을 웹 양식에 결정하는 XSL 또는 개체 모델에 규칙이 있습니다.

널 행 효과가 많은 와이드 테이블을 피하기 위해 일부 데이터를 관계형으로 저장하고 다른 데이터를 확장 적으로 저장해야하는 경우 정말 잘 작동합니다.

데이터베이스의 다른 테이블과 조인하거나 피벗하는 것과 같이 데이터와 관련된 작업을 수행 할 필요가없는 경우 간단한 자체 포함 XML 양식도 좋은 솔루션입니다.

대부분의 데이터베이스는 이제 이러한 종류의 일류 XML을 지원합니다. 예를 들어 SQL Server에서는 데이터베이스에서 바로 XML 데이터 유형의 열에 XSD 스키마를 적용 할 수 있습니다. 최신 버전에서는 해당 열에 대한 색인 생성도 지원합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top