前提知識

product

商品。Tシャツとか。
typeにBASIC, DOWNLOAD, VARIABLE PRODUCTがある。

property

パソコンで言うとプロセッサー種類とメモリ種類、とのこと。

attribute

Tシャツで言うとサイズや色

ただしproduct.typeがvariable Productのときのみ利用できるらしい

テーブル

ER

attributeまわり

attributes

Tシャツで言うとサイズや色

id name slug display_as
1 Color color IMAGE
2 Size size TEXT

attribute_dropdown_options

attributesの詳細

id attribute_id display_text ...
1 1 Red
2 1 Blue
3 2 S
4 2 M

product

id type name ...
1 BASIC Sofa Set
2 VARIABLE_PRODUCT Tシャツ
3 VARIATION Tシャツ Red 2のTシャツのバリエーション
4 VARIATION Tシャツ Blue 2のTシャツのバリエーション

attribute_product_values

productとattributeを紐付けを表現している。
variation_idはproductのtypeがvariationのものを指す。

id attribute_id product_id variation_id attribute_dropdown_option_id ...
1 1 2 3 1 attribute: color。product: Tシャツ。attribute_dropdown: Red
2 1 2 4 2 attribute: color。product: Tシャツ。attribute_dropdown: Blue

propertyまわり

パソコンで言うとプロセッサー種類とメモリ種類、とのこと。

product

id type name ...
1 BASIC Sofa Set
2 VARIABLE_PRODUCT Tシャツ
3 VARIATION Tシャツ Red 2のTシャツのバリエーション
4 VARIATION Tシャツ Blue 2のTシャツのバリエーション

properties

パソコンで言うとプロセッサー種類とメモリ種類、とのこと。

id slug name date_type field_type ...
1 Brand brand INTEGER SELECT
2 Frame Material frame-material INTEGER SELECT

property_dropdown_options

propertiesの詳細

id property_id display_text ...
1 1 Avored
2 1 PHP
3 1 Laravel
4 2 Oak wood
5 2 White wood framae
6 2 Aluminium frame

product_property

プロダクトとプロパティの紐付けを表現

id property_id product_id ...
1 1 1
2 2 1

product_property_{$hoge}_values

product_property_decimal_values
product_property_integer_values

プロダクトとプロパティの紐付けた先の保持したい値(大きくはproperty_dropdown_optionsの値だと思う)を表現。

id property_id product_id value ...
1 1 1 1
2 2 1 6
3 1 2 1

permissionまわり

taxまわり

tax_groups、tax_rates初期値は入っていない。サンプルアプリでは使われていない。
国から引っ張ってくるように設計している。

ordersまわり

order_product_attributes

order_products 0:多 order_product_attributes だと思う
注文した商品の種類は何か。あるTシャツを買って、その色はなにか、サイズはなにか。
このテーブルはなくてもいいのでは? variable_productsのvariationで商品マスタには存在しているし。