제품 변형을 모델링하려고 하는데 EAV(엔티티 속성 값)가 필요할 수 있다고 생각합니다. 디자인은 다음과 같습니다.
PRODUCT -> PRODUCT_VARIANTS +---------------+ +---------------+ | #product_id | | #product_id | | product_name | | #variant_id | +---------------+ | sku_id | | +---------------+ | | +--------^--------+ +--------^--------+ | PRODUCT_OPTIONS |-----< VARIANT_VALUES | +-----------------+ +-----------------+ | #product_id | | #product_id | | #option_id | | #variant_id | +--------v--------+ | #option_id | | | value_id | +-----------------+ +--------v--------+ | OPTIONS | | +---------------+ | | #option_id | | | option_name | | +---------------+ | | | +-------^-------+ | | OPTION_VALUES |---------------+ +---------------+ | #option_id | | #value_id | | value_name | +---------------+
디자인이 건전한지, 쿼리 및 확장성 문제가 있는지, 정규화되었는지 알고 싶습니다.
제품 변형 모델링의 목표는 크기, 색상, 소재 등 다양한 변형이 있을 수 있는 제품을 표현하는 것입니다. 각 변형은 일반적으로 고유한 SKU(Stock Keeping Unit)와 연결됩니다.
다음은 EAV를 사용하지 않는 대체 디자인입니다.
+---------------+ +---------------+ | PRODUCTS |-----< PRODUCT_SKUS | +---------------+ +---------------+ | #product_id | | #product_id | | product_name | | #sku_id | +---------------+ | sku | | | price | | +---------------+ | | +-------^-------+ +------^------+ | OPTIONS |------< SKU_VALUES | +---------------+ +-------------+ | #product_id | | #product_id | | #option_id | | #sku_id | | option_name | | #option_id | +---------------+ | value_id | | +------v------+ +-------^-------+ | | OPTION_VALUES |-------------+ +---------------+ | #product_id | | #option_id | | #value_id | | value_name | +---------------+
기본 키(PK), 고유 키(UK) 및 외래 키 (FK):
제품
OPTIONS
OPTION_VALUES
PRODUCT_SKUS
SKU_VALUES
+-----------+----------+---------+----------+----------+ | ProductId | Product | Size | Color | Class | +-----------+----------+---------+----------+----------+ | 1 | Widget 1 | Small | White | null | | 1 | Widget 1 | Small | Black | null | | 1 | Widget 1 | Large | White | null | | 1 | Widget 1 | Large | Black | null | | 2 | Widget 2 | Small | null | null | | 2 | Widget 2 | Medium | null | null | | 3 | Widget 3 | Medium | null | Amateur | | 3 | Widget 3 | Large | null | Amateur | | 3 | Widget 3 | Medium | null | Professional | | 3 | Widget 3 | Large | null | Professional | +-----------+----------+---------+----------+----------+
위 내용은 내 EAV 기반 제품 변형 데이터베이스 디자인이 건전하고 확장 가능하며 정규화되어 있습니까? 아니면 대체 관계형 디자인이 더 나은 쿼리 및 성능을 제공합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!