# EC-CUBE データベースのテーブル構成とデータ移行
EC-CUBE における主要なテーブルの役割や構成要素、関連性などを解説します。会員データ、管理者データ、商品データ、カテゴリデータ、受注データ、支払い方法、配送方法、税設定、カート、決済と配送の紐付けなどのテーブルの役割を説明します。
EC-CUBE のデータベースの全体像を把握し、システム開発や運用に役立てることができるようになります。
# よく使われているテーブル
# 会員データ
| テーブル名 | 説明 |
|---|---|
| dtb_customer | 会員情報を管理するテーブル。会員 ID、メールアドレス、パスワード、氏名、性別、生年月日、郵便番号、住所、電話番号、職業 ID、作成日時、更新日時、削除フラグを持つ |
| dtb_customer_address | 会員の配送先住所情報を管理するテーブル。会員 ID、氏名、性別、郵便番号、住所、作成日時、更新日時、削除フラグを持つ |
| mtb_sex | 性別情報を管理するマスタテーブル。性別 ID、性別名を持つ |
| mtb_job | 職業情報を管理するマスタテーブル。職業 ID、職業名を持つ |
# 管理者データ
| テーブル名 | 説明 |
|---|---|
| dtb_member | 管理者情報を管理するテーブル。管理者 ID、メールアドレス、パスワード、氏名、作成日時、更新日時、削除フラグ、権限 ID を持つ |
| mtb_authority | 管理者の権限情報を管理するマスタテーブル。権限 ID、権限名を持つ |
# 商品データ
| テーブル名 | 説明 |
|---|---|
| dtb_product | 商品情報を管理するテーブル。商品 ID、商品名、商品説明、価格、在庫数、作成日時、更新日時、削除フラグを持つ |
| dtb_product_class | 商品の種類情報を管理するテーブル。商品 ID、商品種類 ID、作成日時、更新日時、削除フラグを持つ |
| dtb_class_category | 商品の種類カテゴリ情報を管理するテーブル。商品種類 ID、カテゴリ ID、作成日時、更新日時、削除フラグを持つ |
| dtb_class_name | 商品の種類名情報を管理するテーブル。商品種類 ID、商品種類名、作成日時、更新日時、削除フラグを持つ |
| dtb_product_image | 商品画像情報を管理するテーブル。商品 ID、画像ファイル名、画像パス、作成日時、更新日時、削除フラグを持つ |
| mtb_sale_type | 商品の販売タイプ情報を管理するマスタテーブル。販売タイプ ID、販売タイプ名を持つ |
# カテゴリデータ
| テーブル名 | 説明 |
|---|---|
| dtb_category | 商品のカテゴリ情報を管理するテーブル。カテゴリごとに一意な ID とカテゴリ名、親カテゴリ ID が格納される |
| dtb_product_category | 商品とカテゴリの関連情報を管理するテーブル。商品 ID とカテゴリ ID が組み合わされた情報が格納され、一つの商品が複数のカテゴリに所属することができる |
# 受注データ
| テーブル名 | 説明 |
|---|---|
| dtb_order | 受注情報を管理するテーブル。受注ごとに一意な ID や受注日時、支払い方法、配送方法、配送状況などの情報が格納される |
| dtb_shipping | 配送先情報を管理するテーブル。受注 ID や受注者の名前、住所、電話番号、配送業者名、配送状況などの情報が格納される |
| dtb_order_item | 受注商品情報を管理するテーブル。受注 ID、商品 ID、個数、価格、オプション情報などが格納される。1 つの受注に対して、複数の商品が登録されることがある |
# 支払い方法
| テーブル名 | 説明 |
|---|---|
| dtb_payment | 支払い方法情報を管理するテーブル。支払い方法ごとに一意な ID や支払い方法名、支払い方法の種類、支払手数料、利用可能な最低/最高金額、手数料計算方法、備考などが格納される |
# 配送方法
| テーブル名 | 説明 |
|---|---|
| dtb_delivery | 配送業者情報を管理するテーブル。配送業者ごとに一意な ID や配送業者名、配送業者の種類、配送料、備考などの情報が格納される |
| dtb_delivery_fee | 配送料金情報を管理するテーブル。配送業者 ID、配送エリア、商品の重量や価格帯によって異なる配送料金や、配送料金の種類(一律・個別設定など)、備考などの情報が格納される |
| dtb_delivery_time | 配送時間帯情報を管理するテーブル。配送業者 ID、配送時間帯名、配送可能な曜日・時間帯、配送日時指定の有無、備考などの情報が格納される |
# 税設定
| テーブル名 | 説明 |
|---|---|
| dtb_tax_rule | 税金ルール情報を管理するテーブル。税金ルールごとに一意な ID、税率、適用開始日、適用終了日、税額端数処理、備考などが格納される。商品の税額計算に使用される |
# カート
| テーブル名 | 説明 |
|---|---|
| dtb_cart | カート情報を管理するテーブル。カートごとに一意な ID やユーザー ID、カート内の商品の合計金額、割引クーポンの使用情報などが格納される |
| dtb_cart_item | カート内の商品情報を管理するテーブル。カート内の商品ごとに一意な ID やカート ID、商品 ID、数量、販売単価、小計金額、注文商品としてのステータスなどが格納される |
# 決済と配送の紐づけ
| テーブル名 | 説明 |
|---|---|
| dtb_payment_option | 支払方法と配送方法の紐付け情報を管理するテーブル。支払方法ごとに一意な ID や配送方法 ID、配送地域、配送時間帯などが格納される。支払方法によっては、配送方法や配送地域によって手数料が変わる場合があるため、それらを管理することで正確な手数料の計算が可能となる |
# テーブル一覧
| テーブル名 | 概要 |
|---|---|
| dtb_authority_role | 権限に対するアクセス不可 URL |
| dtb_base_info | ショップ基本情報 |
| dtb_block | ブロック一覧 |
| dtb_block_position | ブロック配置 |
| dtb_cart | ショッピングカート |
| dtb_cart_item | カート内の個別の商品データ |
| dtb_category | カテゴリー |
| dtb_class_category | 規格分類 |
| dtb_class_name | 規格名 |
| dtb_csv | CSV 出力の列内容 |
| dtb_customer | 会員 |
| dtb_customer_address | 会員が登録しているお届け先の一覧 |
| dtb_customer_favorite_product | 会員がお気に入りに登録した商品 |
| dtb_delivery | 配送方法の一覧 |
| dtb_delivery_duration | 配送に必要な日数の一覧 |
| dtb_delivery_fee | 配送方法、都道府県ごとの配送料一覧 |
| dtb_delivery_time | 配送方法ごとにお届け希望日時の一覧 |
| dtb_layout | レイアウト一覧 |
| dtb_mail_history | 受注メールの履歴 |
| dtb_mail_template | 配信メールテンプレート一覧 |
| dtb_member | 管理ユーザー一覧 |
| dtb_news | 新着情報の一覧 |
| dtb_order | 注文 |
| dtb_order_item | 注文商品の個別明細 |
| dtb_order_pdf | 出力する帳票の一覧 |
| dtb_page | 公開側ページの一覧 |
| dtb_page_layout | レイアウトとページの紐付け |
| dtb_payment | 支払方法の一覧 |
| dtb_payment_option | 支払方法と配送方法の紐付け |
| dtb_plugin | プラグインの一覧 |
| dtb_product | 商品 |
| dtb_product_category | 商品とカテゴリーの紐付け |
| dtb_product_class | 商品の規格 |
| dtb_product_image | 商品の画像 |
| dtb_product_stock | 商品規格ごとの在庫 |
| dtb_product_tag | 商品とタグの紐付け |
| dtb_shipping | 注文の配送先情報 |
| dtb_tag | タグの一覧 |
| dtb_tax_rule | 税率一覧 |
| dtb_template | ショップテンプレート一覧 |
| mtb_authority | 権限のマスター |
| mtb_country | 国マスター |
| mtb_csv_type | 出力可能 CSV の種類 |
| mtb_customer_order_status | マイページ受注ステータス一覧 |
| mtb_customer_status | 会員ステータス一覧 |
| mtb_device_type | デバイスの種類マスター |
| mtb_job | 職業マスター |
| mtb_order_item_type | 受注内の明細種別 |
| mtb_order_status | 受注ステータス一覧 |
| mtb_order_status_color | 受注ステータス別カラー一覧 |
| mtb_page_max | 管理画面表示件数選択肢 |
| mtb_pref | 都道府県マスター |
| mtb_product_list_max | 商品一覧ページ商品表示数選択肢 |
| mtb_product_list_order_by | 商品一覧ページ並び順選択肢 |
| mtb_product_status | 商品ステータスの一覧 |
| mtb_rounding_type | 端数の処理方法一覧 |
| mtb_sex | 性別マスタ |
| mtb_work | 管理ユーザー稼働状況一覧 |
# ローカル EC-CUBE4 からリモート EC-CUBE4 へ カテゴリデータと商品データ移行
- カテゴリと商品データ保存しているテーブルデータをエクスポート
カテゴリデータ・商品データのテーブル一覧
| テーブル名 | 説明 | 外部キー |
|---|---|---|
| dtb_category | 商品カテゴリー | ⚪︎ |
| dtb_class_category | 商品規格分類 | ⚪︎ |
| dtb_class_name | 商品規格名 | ⚪︎ |
| dtb_product | 商品情報 | ⚪︎ |
| dtb_product_category | 商品とカテゴリーの紐付け | - |
| dtb_product_class | 商品の規格 | ⚪︎ |
| dtb_product_image | 商品の画像 | - |
| dtb_product_stock | 商品規格ごとの在庫 | - |
| dtb_product_tag | 商品とタグの紐付け | ⚪︎ |
| dtb_tag | タグの一覧 | ⚪︎ |
dtb_product_category dtb_product_image dtb_product_stock テーブル以外は Foreign key があるため、テーブル構造変更の対応が必要です。
- 移行先のテーブル構造変更で外部制約キー foreign key 削除
# dtb_category
ALTER TABLE dtb_product_category DROP FOREIGN KEY `FK_B057789112469DE2`;
# dtb_class_category
ALTER TABLE dtb_product_class DROP FOREIGN KEY `FK_1A11D1BA248D128`;
ALTER TABLE dtb_product_class DROP FOREIGN KEY `FK_1A11D1BA9B418092`;
# dtb_class_name
ALTER TABLE dtb_class_category DROP FOREIGN KEY `FK_9B0D1DBAB462FB2A`;
# dtb_product
ALTER TABLE dtb_product_class DROP FOREIGN KEY `FK_1A11D1BA4584665A`;
ALTER TABLE dtb_product_image DROP FOREIGN KEY `FK_3267CC7A4584665A`;
ALTER TABLE dtb_product_tag DROP FOREIGN KEY `FK_4433E7214584665A`;
ALTER TABLE dtb_tax_rule DROP FOREIGN KEY `FK_59F696DE4584665A`;
ALTER TABLE dtb_order_item DROP FOREIGN KEY `FK_A0C8C3ED4584665A`;
ALTER TABLE dtb_product_category DROP FOREIGN KEY `FK_B05778914584665A`;
ALTER TABLE dtb_customer_favorite_product DROP FOREIGN KEY `FK_ED6313834584665A`;
# dtb_product_class
ALTER TABLE dtb_tax_rule DROP FOREIGN KEY `FK_59F696DE21B06187`;
ALTER TABLE dtb_order_item DROP FOREIGN KEY `FK_A0C8C3ED21B06187`;
ALTER TABLE dtb_cart_item DROP FOREIGN KEY `FK_B0228F7421B06187`;
ALTER TABLE dtb_product_stock DROP FOREIGN KEY `FK_BC6C9E4521B06187`;
# dtb_product_tag
DELETE FROM dtb_product_tag WHERE tag_id NOT IN( SELECT id FROM dtb_tag );
ALTER TABLE dtb_product_tag ADD CONSTRAINT FK_4433E721BAD26311 FOREIGN KEY (tag_id) REFERENCES dtb_tag (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
# dtb_tag
ALTER TABLE dtb_product_tag DROP FOREIGN KEY `FK_4433E721BAD26311`;
- 移行先に SQL インポート
- 移行先外部制約キー追加
# dtb_category
DELETE FROM dtb_product_category WHERE category_id NOT IN( SELECT id FROM dtb_category );
ALTER TABLE dtb_product_category ADD CONSTRAINT FK_B057789112469DE2 FOREIGN KEY (category_id) REFERENCES dtb_category (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
# dtb_class_category
DELETE FROM dtb_product_class WHERE class_category_id1 NOT IN( SELECT id FROM dtb_class_category );
DELETE FROM dtb_product_class WHERE class_category_id2 NOT IN( SELECT id FROM dtb_class_category );
ALTER TABLE dtb_product_class ADD CONSTRAINT FK_1A11D1BA248D128 FOREIGN KEY (class_category_id1) REFERENCES dtb_class_category (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_product_class ADD CONSTRAINT FK_1A11D1BA9B418092 FOREIGN KEY (class_category_id2) REFERENCES dtb_class_category (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
# dtb_class_name
DELETE FROM dtb_class_category WHERE class_name_id NOT IN( SELECT id FROM dtb_class_name );
ALTER TABLE dtb_class_category ADD CONSTRAINT FK_9B0D1DBAB462FB2A FOREIGN KEY (class_name_id) REFERENCES dtb_class_name (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
# dtb_product
DELETE FROM dtb_product_class WHERE product_id NOT IN( SELECT id FROM dtb_product );
DELETE FROM dtb_product_image WHERE product_id NOT IN( SELECT id FROM dtb_product );
DELETE FROM dtb_product_tag WHERE product_id NOT IN( SELECT id FROM dtb_product );
DELETE FROM dtb_product_tag WHERE product_id NOT IN( SELECT id FROM dtb_product );
DELETE FROM dtb_order_item WHERE product_id NOT IN( SELECT id FROM dtb_product );
DELETE FROM dtb_product_category WHERE product_id NOT IN( SELECT id FROM dtb_product );
DELETE FROM dtb_customer_favorite_product WHERE product_id NOT IN( SELECT id FROM dtb_product );
ALTER TABLE dtb_product_class ADD CONSTRAINT FK_1A11D1BA4584665A FOREIGN KEY (product_id) REFERENCES dtb_product (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_product_image ADD CONSTRAINT FK_3267CC7A4584665A FOREIGN KEY (product_id) REFERENCES dtb_product (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_product_tag ADD CONSTRAINT FK_4433E7214584665A FOREIGN KEY (product_id) REFERENCES dtb_product (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_product_tag ADD CONSTRAINT FK_59F696DE4584665A FOREIGN KEY (product_id) REFERENCES dtb_product (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_order_item ADD CONSTRAINT FK_A0C8C3ED4584665A FOREIGN KEY (product_id) REFERENCES dtb_product (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_product_category ADD CONSTRAINT FK_B05778914584665A FOREIGN KEY (product_id) REFERENCES dtb_product (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_customer_favorite_product ADD CONSTRAINT FK_ED6313834584665A FOREIGN KEY (product_id) REFERENCES dtb_product (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
# dtb_product_class
DELETE FROM dtb_tax_rule WHERE product_class_id NOT IN( SELECT id FROM dtb_product_class );
DELETE FROM dtb_order_item WHERE product_class_id NOT IN( SELECT id FROM dtb_product_class );
DELETE FROM dtb_cart_item WHERE product_class_id NOT IN( SELECT id FROM dtb_product_class );
DELETE FROM dtb_product_stock WHERE product_class_id NOT IN( SELECT id FROM dtb_product_class );
ALTER TABLE dtb_tax_rule ADD CONSTRAINT FK_59F696DE21B06187 FOREIGN KEY (product_class_id) REFERENCES dtb_product_class (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_order_item ADD CONSTRAINT FK_A0C8C3ED21B06187 FOREIGN KEY (product_class_id) REFERENCES dtb_product_class (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_cart_item ADD CONSTRAINT FK_B0228F7421B06187 FOREIGN KEY (product_class_id) REFERENCES dtb_product_class (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE dtb_product_stock ADD CONSTRAINT FK_BC6C9E4521B06187 FOREIGN KEY (product_class_id) REFERENCES dtb_product_class (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
# dtb_product_tag
DELETE FROM dtb_product_tag WHERE tag_id NOT IN( SELECT id FROM dtb_tag );
ALTER TABLE dtb_product_tag ADD CONSTRAINT FK_4433E721BAD26311 FOREIGN KEY (tag_id) REFERENCES dtb_tag (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
# dtb_tag
DELETE FROM dtb_product_tag WHERE tag_id NOT IN( SELECT id FROM dtb_tag );
ALTER TABLE dtb_product_tag ADD CONSTRAINT FK_4433E721BAD26311 FOREIGN KEY (tag_id) REFERENCES dtb_tag (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
EC-CUBE 商品画像の保存場所
EC-CUBEの商品画像は、以下のパスに保存されます。
/html/upload/save_image/
EC-CUBE 管理画面からアップした画像ディレクトリのパス
EC-CUBEの管理画面からアップロードした画像は、user_data内に格納されます。
/html/user_data/assets/