필자의 데이터베이스 기술은 평범하지 않으며 측량 데이터 용 데이터 모델을 설계해야합니다. 나는 이것에 대해 약간의 생각을 보냈으며 지금은 EAV model과 수백 개의 테이블과 수백 개의 열 (그리고 수천 개의 레코드)을 포함하는 디자인 사이에 갇혀 있다고 느낍니다. 이 작업을 수행하는 더 좋은 방법이 있어야하며이 포럼의 현명한 사람들이 나를 도울 수 있기를 바랍니다.조사 데이터 모델 - EAV 및 과도한 비정규 화를 피하는 방법은 무엇입니까?
제 질문은 : RDBMS에서 설문 조사 질문에 대한 답변을 어떻게 모델링해야합니까? SQL Server를 사용하는 것은 필수입니다. 따라서 대체 데이터 저장 시스템은이 논의에서 제외되어야합니다. (물론, 일부는 평가되어야하지만 여기서는 만족하지 않아야합니다.) 전체 데이터 모델에 대한 솔루션이 필요하지 않습니다. 지금은 Answers 부분에만 관심이 있습니다.
나는 다양한 포럼을 이미 검색했지만 해결책을 찾지 못했습니다. 다른 곳에서 이미 제공 되었다면, 실례지만 제게 읽어 줄 수 있도록 링크를 제공하십시오. 각 설문 조사가 n 개의 설문
- : 데이터에 대한
일부 가정은 내가 처리해야 응답 할 lot ...)
- 객관식, 자유 텍스트, 숫자 (연령, 소득, 비율 등)
- 각 설문 조사에는 10 ~ 200 개국이 포함됩니다. 응답자가 아닙니다. 실제로 응답자는 국가 별)
- 설문지 유형에 따라 각 설문지는 국가별로 100-20,000 명의 응답자가 응답합니다.
- 한 국가에서 설문지에 대한 설문지를 적용 할 수 있습니다. 즉, 질문 추가, 제거 또는 수정
- 한 국가의 데이터는 해당 국가의 별도 데이터베이스에 수집됩니다. 처음부터 온라인 통합의 가능성은 없습니다.
- 모든 국가의 데이터는 나중에 통합해야합니다. 예를 들어 한 국가에서 질문을 삭제 한 경우 모든 국가에서 일관된 디자인을 달성하기 위해 보낸 데이터에서 어떻게 든 파생되어야합니다.
- 통합 및 정리 소프트웨어를 작성해야합니다. 모든 국가의 데이터로 작업 할 수 있습니다.
- 결국 데이터는 플랫 파일, 국가 및 설문지 당 하나의 직사각형 그리드로 내보내 져야합니다.
는 이미 다양한 배경을 가진 사람들로이 주제를 논의하고 아직 좋은 해결책에 와서하지 않았습니다. 나는 주로 두 가지 종류의 의견을 가지고 있습니다. 내가 한 테이블에 국가 및 설문 당 (전술 한 바와 같이 테이블과 컬럼의 부하와 함께 비정규 구조 데이터 처리 및 분석 투표 플랫 파일 (스프레드 시트 스타일) 작업에 사용되는
- 도메인 전문가,). 이것은 넓은 테이블을 피할 것을 배웠기 때문에 나에게 끔찍한 일 이겠지요. 작업 할 때 어떤 열이 실제로 테이블에 있는지를 알아내는 것은 짜증나게됩니다. 데이터베이스가 수백 개의 테이블로 어수선하게 될 것입니다. 비슷하지만 조금 다른 디자인을 가진 여러 데이터베이스를 설정하십시오.)
- O-O- 프로그래머는 강력하게 "표준화 된"디자인에 투표합니다. 그러면 모든 질문에 대한 모든 응답자의 모든 대답을 포함하는 중앙 테이블로 효과적으로 이어집니다. 이 테이블에는 유형이 sql_variant 유형의 열 또는 여러 유형의 응답 (객관식, 자유 텍스트, ..)을 저장하기 위해 유형이 다른 여러 응답 열이 있어야합니다. 전자는 본질적으로 EAV 모델입니다. 나는 여기 조 셀코를 따르는 경향이있다. 조 셀코는 그 사용법을 강력히 낙담시킨다 (그는 그것을 OTLT 또는 "하나의 진실한 조회 테이블"이라고 부른다). 후자는 각 행이 디자인에 따라 적용 할 수없는 유형의 널 셀을 포함한다는 것을 의미합니다.
내가 생각할 수있는 또 다른 방법은 그것으로 이어질 것입니다, 그건 너무 일반적인 아니다 .. 대답 유형 당 하나 개의 테이블, 즉 등 객관식 문제, 무료 문자 질문 하나, 하나를 만들 것 많은 조합이 합류한다고 생각합니다. 새로운 대답 유형이 발명되면 표를 추가해야 할 것입니다.
이 텍스트를 모두 지루해해서 죄송합니다. 입력 해 주셔서 감사합니다.
건배, 알렉스
PS : 어떻게 나사를 고정하기 위해 망치를 사용하는 방법 : 당신은 일반적인 문제와 씨름하고있는 것처럼 http://www.eggheadcafe.com/community/aspnet/13/10242616/survey-data-model--how-to-avoid-eav-and-excessive-denormalization.aspx
[EAV] (http://en.wikipedia.org/wiki/Entity-attribute-value_model) 솔루션에 대한 좋은 후보라고 생각됩니다. 그 길로가는 것에 대한 당신의 반대 의견은 무엇입니까? –
문서 또는 NoSQL 데이터베이스 사용은 어떻게됩니까? 어쩌면 여기서 문제는 도메인 모델을 관계형 인프라에 적용하는 것입니다. 그렇다면 왜 그냥 피하지 않을까요? http://en.wikipedia.org/wiki/NoSQL을 참조하십시오. – rsenna
EAV 모델은 무결성 제약 조건을 훨씬 더 복잡하게 만드는 것처럼 보입니다. 기본적으로 여러 데이터 유형의 값을 하나의 열에 집어 넣어야합니다. http://www.eggheadcafe.com/software/aspnet/32645959/generic-datatype-table.aspx – AlexDPC