JJC's 테크니컬 다이어리

Entity-Attribute-Value Data Model in RDB 본문

Database

Entity-Attribute-Value Data Model in RDB

털털한JJC 2016. 3. 27. 20:25

  Entity–attribute–value 모델 (EAV)은 공간효율적 방식으로 개체를 저장하는 하나의 데이타 모델로 개체를 표현하는 속성 개수가 잠재적으로 방대하나 실제로 주어진 개체에 적용되는 개수는 상대적으로 평범한 곳에서 활용된다.

  이러한 개체는 희소행렬(sparse matrix)의 수학적 개념과 일치한다. EAV는 object–attribute–value model, vertical database model, open schema 로도 알려져 있다.

EAV 테이블 구조

  데이타 표현방식은 비어 있지 않은 값만을 저장하는 희소행렬 저장의 공간 효율적 방식과 비슷하다. EAV 데이타 모델에서는 각 속성-값(AV) 짝은 개체를 표현하는 하나의 fact이며, EAV 테이블의 행(row)는 단일 fact를 저장한다. EAV테이블은 흔히 "long and skinny" 라고 표현하는데 여기서 "long"은 행의 개수이며, "skinny"는 몇개의 컬럼을 의미한다.

3개의 컬럼에 기록되는 데이타:

- 개체(entity): 표현되는 항목

- 속성(attribute) 또는 파라메타: 통상 속성 정의 테이블로의 외래키. 속성 정의 테이블에는 다음 컬럼을 포함 가능: 속성ID, 속성이름, 설명, 데이타타입, 입력 체크 보조 컬럼(최대문자열길이, 정규표현식, 허용값 집합 등)

- 속성값(value of the attribute)


관계형 데이타베이스에 일반 목적 임상 기록을 나타내기 위한 방법을 고려해 보자.

  수 천개의 컬럼을 가진 테이블을 만드는 것은 분명 현실적이지 못하다. 왜냐하면 컬럼 대부분은 null 일 것이기 때문이다. 일을 더 복잡하게 하는 것은 시간이 지나면서 환자를 따라가는 장기의 의료 기록에서 동일한 파라메타의 다수의 값들이 있을 수 있다는 것이다 ;  예로, 아이의 키, 몸무게는 아이가 자라며 변한다. 마지막으로, 임상 발견의 세계는 꾸준히 성장한다는 것이다. 예로 병이 새로 나타나며, 새로운 실험실 검사가 개발된다. 이것으로 지속되는 컬럼 추가와 UI 개정이 필요하다. (속성 목록이 자주 바뀌는 상황을 데이타베이스 용어는 "attribute volatility" 이다)