사용자 정의 필드 및 데이터 유형을위한 디자인 패턴 / 전략


12

데이터 필드에 사용자 정의 필드를 추가하거나 사용자 정의 객체를 직접 정의 할 수있는 응용 프로그램을 설계하기위한 일반적인 전략이나 디자인 패턴이 있습니까? 예를 들어, 고유 한 유형의 정보, Expression Engine과 같은 프레임 워크 및 채널 및 채널 필드 그룹을 처리하는 방법 (예) 또는 Wordpress와 같은 CMS가 워드 프레스와 같은 기능을 수행 할 수있는 SalesForce와 같은 제품을 생각하고 있습니다. 맞춤 게시물 유형에 입력란을 추가합니다.



참고 사항 : 오라클은 특정 (내가 이해하는 일반적인 방식)으로 이것을 구현하는 모든 사람들로부터 바지를 고소하고 있습니다. 나는 그것도 엿볼 것이다.
Steven Evers

답변:



4

EAV모델은 당신이 설명으로 일반적으로 구조화되지 않은 스키마에 사용됩니다.

성능과 애드혹 방식으로 이러한 동적 속성을 쿼리하는 기능에 어려움을 겪고 있습니다. 따라서 많은 사람들이 반 패턴으로 간주합니다.

다른 접근 방식은 XML 또는 Json과 같은 동적 형식을 사용하여 이러한 속성을 유지하고 검색에 도움이되도록 각 속성에 대한 전용 저장소를 사용하는 것입니다.


또한 EAV의 대안으로 문서 지향 데이터베이스를 사용하는 사람들에 대해 들었지만 이러한 접근 방식에 대한 개인적인 경험은 없습니다.
FrustratedWithFormsDesigner 2014 년

@FrustratedWithFormsDesigner-내가 암시하고 있지만 개인적인 경험은 없습니다.
오디드

4

@Oded가 설명하는 EAV 테이블에 추가하여 사람들은 이러한 유형의 정보에 nosql datbase를 사용합니다. 애플리케이션이 관계형 모델에 적합한 부분에 관계형 데이터베이스를 사용할 수없고 정보가없는 정보에 대해서는 nosql 데이터베이스를 사용할 수없는 이유가 없습니다.

세 번째 가능성은 고객이 추가 한 필드 (Customerfield1, customerfield2 등)에 여러 열을 추가 한 다음 고객이 의미하는 바를 정의하도록하는 것입니다. 이것은 당신이 추가하는 많은 고객 지원 가능한 필드에 대해서만 작동하므로, 2-3 개가 필요할 것으로 예상하지만 수백이 필요할 경우 전혀 작동하지 않을 것입니다.


1

UDF1, UDF2, UDF3 테이블이있는 첫 번째 응용 프로그램은 없습니다. 다른 제안 (EVA 또는 NoSQL)이 훨씬 좋습니다.

RDBMS에 따라 ( SQL Server에서 제공하는 ) 정규화를 해제하고 데이터를 XML 형식 또는 일반 텍스트로 보유하는 필드를 가질 수 있습니다. 이를 관리하려면 코드를 사용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.