EAV(엔티티 속성 값) 데이터베이스는 한계, 특히 비효율적인 설계 및 보고 문제로 인해 비판을 받아 왔습니다. 유형에 따라 엔터티 속성을 분리함으로써 EAV 추적 기록 데이터의 장점을 유지하면서 이러한 단점을 극복할 수 있습니다.
제안된 스키마는 각 엔터티 유형의 속성을 분류하는 마스터 속성 테이블을 도입합니다. 이를 통해 옵션, 정수, 날짜, 문자열, 텍스트 및 소수를 포함한 다양한 속성 유형을 처리할 수 있습니다.
<code>entity_type { id, type, // 例如,“博客”、“用户”、“产品”等 created_at } entity { id, entity_type_id, created_at } attr { id, entity_id, type, name, created_at } option { id, attr_id, entity_id, multiple, // 允许多个值? name, created_at } attr_option { id, attr_id, entity_id, option_id, option, created_at } attr_int { attr_id, entity_id, int, created_at } attr_relation { attr_id, entity_id, entity_fk_id, created_at } attr_datetime { attr_id, entity_id, datetime, created_at } attr_string { attr_id, entity_id, var_char, created_at } attr_text { attr_id, entity_id, text, created_at } attr_decimal { attr_id, entity_id, decimal, created_at }</code>
항목 유형 검색:
<code> SELECT * FROM entity_type et LEFT JOIN entity e ON e.entity_type_id = et.id WHERE e.id = ?</code>
엔티티 속성 가져오기:
<code> SELECT * FROM attr WHERE entity_id = ?</code>
속성 값 검색:
<code> SELECT * FROM attr_option, attr_int, attr_relation, attr_text, ... WHERE entity_id = ?</code>
엔티티 간 관계 찾기:
<code> SELECT * FROM entity AS e LEFT JOIN attr_relation AS ar ON ar.entity_id = e.id WHERE ar.entity_id = 34 AND e.entity_type = 2;</code>
기존 EAV 설계 기능에 비해 개선되었지만 여전히 고려해야 할 몇 가지 잠재적인 문제가 있습니다.
위 내용은 속성 차별화를 통해 효율적인 기록 데이터 관리를 위해 EAV 데이터베이스를 어떻게 설계할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!