Rumah >pangkalan data >tutorial mysql >Bagaimanakah reka bentuk pangkalan data yang dinormalkan boleh memodelkan varian produk secara berkesan sebagai alternatif kepada model Entiti-Atribut-Nilai (EAV)?
Memodelkan Varian Produk
Anda cuba memodelkan varian produk dan mempunyai sedikit kebimbangan tentang menggunakan EAV (Entity-Attribute-Value). Berikut ialah reka bentuk alternatif yang boleh anda pertimbangkan:
Reka Bentuk Normal
Reka bentuk berikut menormalkan struktur data untuk varian produk:
+---------------+ +-----------------+ | PRODUCTS |-----< 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 | +---------------+
Utama, Unik dan Asing Kunci:
PRODUCTS - PK: product_id - UK: product_name OPTIONS - PK: option_id - UK: option_name OPTION_VALUES - PK: option_id, value_id - UK: option_id, value_name - FK: option_id REFERENCES OPTIONS (option_id) PRODUCT_OPTIONS - PK: product_id, option_id - FK: product_id REFERENCES PRODUCTS (product_id) - FK: option_id REFERENCES OPTIONS (option_id) PRODUCT_VARIANTS - PK: product_id, variant_id - UK: sku_id - FK: product_id REFERENCES PRODUCTS (product_id) VARIANT_VALUES - PK: product_id, variant_id, option_id - FK: product_id, variant_id REFERENCES PRODUCT_VARIANTS (product_id, variant_id) - FK: product_id, option_id REFERENCES PRODUCT_OPTIONS (product_id, option_id) - FK: option_id, value_id REFERENCES OPTION_VALUES (option_id, value_Id)
Cara Ia Berfungsi
Reka bentuk ini membolehkan anda menentukan pilihan dan nilainya secara bebas, menjadikannya fleksibel untuk ditambah pilihan atau nilai baharu pada masa hadapan.
Sampel Data
Berikut ialah contoh cara anda boleh memasukkan data dalam jadual ini berdasarkan hamparan dalam soalan anda:
PRODUCTS ======== product_id product_name ---------- ------------ 1 Widget 1 2 Widget 2 3 Widget 3 OPTIONS ======= option_id option_name --------- ----------- 1 Size SL 2 Color 3 Size SM 4 Class 5 Size ML OPTION_VALUES ============= option_id value_id value_name --------- -------- ------------ 1 1 Small (Size SL) 1 2 Large (Size SL) 2 1 White (Color) 2 2 Black (Color) 3 1 Small (Size SM) 3 2 Medium (Size SM) 4 1 Amateur (Class) 4 2 Professional (Class) 5 1 Medium (Size ML) 5 2 Large (Size ML) PRODUCT_OPTIONS =============== product_id option_id ---------- --------- 1 1 (Widget 1; Size SL) 1 2 (Widget 1; Color) 2 3 (Widget 2; Size SM) 3 4 (Widget 3; Class) 3 5 (Widget 4; Size ML) PRODUCT_VARIANTS ================ product_id variant_id sku_id ---------- ---------- ------ 1 1 W1SSCW (Widget 1) 1 2 W1SSCB (Widget 1) 1 3 W1SLCW (Widget 1) 1 4 W1SLCB (Widget 1) 2 1 W2SS (Widget 2) 2 2 W2SM (Widget 2) 3 1 W3CASM (Widget 3) 3 2 W3CASL (Widget 3) 3 3 W3CPSM (Widget 3) 3 4 W3CPSL (Widget 3) VARIANT_VALUES ============== product_id variant_id option_id value_id ---------- ---------- --------- -------- 1 1 1 1 (W1SSCW; Size SL; Small) 1 1 2 1 (W1SSCW; Color; White) 1 2 1 1 (W1SSCB; Size SL; Small) 1 2 2 2 (W1SSCB; Color; Black) 1 3 1 2 (W1SLCW; Size SL; Large) 1 3 2 1 (W1SLCW; Color; White) 1 4 1 2 (W1SLCB; Size SL; Large) 1 4 2 2 (W1SLCB; Color; Black) 2 1 3 1 (W2SS; Size SM; Small) 2 2 3 2 (W2SM; Size SM; Medium) 3 1 4 1 (W3CASM; Class; Amateur) 3 1 5 1 (W3CASM; Size ML; Medium) 3 2 4 1 (W3CASL; Class; Amateur) 3 2 5 2 (W3CASL; Size ML; Large) 3 3 4 2 (W3CPSM; Class; Professional) 3 3 5 1 (W3CPSM; Size ML; Medium) 3 4 4 2 (W3CPSL; Class; Professional) 3 4 5 2 (W3CPSL; Size ML; Large)
Kelebihan
Kelemahan
Kesimpulan
Reka bentuk normal ini merupakan alternatif yang berdaya maju kepada EAV untuk memodelkan varian produk. Ia menawarkan fleksibiliti, skalabiliti dan integriti data sementara juga agak mudah untuk ditanya. Walau bagaimanapun, pilihan khusus antara EAV dan normalisasi hendaklah dibuat berdasarkan keperluan khusus dan pertukaran permohonan anda.
Atas ialah kandungan terperinci Bagaimanakah reka bentuk pangkalan data yang dinormalkan boleh memodelkan varian produk secara berkesan sebagai alternatif kepada model Entiti-Atribut-Nilai (EAV)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!