본문 바로가기

프로그래밍

Entity–attribute–value model (EAV)

데이터 베이스 설계시 오브젝트의 자유도를 최대한 보장해야 하는 경우 고려 가능한 모델.

















EAV ORD
SELECT cpe.entity_id, value AS name FROM catalog_product_entity cpe INNER JOIN eav_attribute ea ON cpe.entity_type_id = ea.entity_type_id INNER JOIN catalog_product_entity_varchar cpev ON ea.attribute_id = cpev.attribute_id AND cpe.entity_id = cpev.entity_id WHERE ea.attribute_code = 'name' * 마젠토의 상품명 출력

이후에 영문 상품명 혹은 중국어 상품명이 추가 되더라도 attribute/ value 만 추가하면 로직변경없이 사용 가능.

하지만, 위의 예시처럼 데이터 호출시 너무 많은 JOIN 문을 사용하게 되며, 프로그램으로 데이터 관계를 구성해야 하는 불완전한 구성이기는 하지만 유연 오프젝트 구조로 설계해야하는 경우 유용함.