コンテンツにスキップ

brands テーブル定義

テーブル概要

商品ブランドのマスターテーブルです。商品にブランド情報を付与し、ブランド別の商品管理を可能にします。

テーブル名: brands 説明: ブランドマスター 用途: 商品のブランド情報管理(ブランド名、ロゴ画像、有効性等)

カラム定義

カラム名 NULL デフォルト キー 説明
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PK 主キー
name VARCHAR(255) NOT NULL - - ブランド名
slug VARCHAR(255) NOT NULL - UNIQUE URL用スラッグ
logo_image VARCHAR(255) NULL NULL - ブランドロゴ画像パス
images JSON NULL NULL - ブランド画像(複数、JSON配列)
description TEXT NULL NULL - ブランド説明(リッチエディタ対応)
is_active BOOLEAN NOT NULL TRUE INDEX 有効フラグ
sort_order INTEGER NOT NULL 0 INDEX 表示順序
created_at TIMESTAMP NULL NULL - 作成日時
updated_at TIMESTAMP NULL NULL - 更新日時

インデックス

種別 名称 対象カラム 説明
PRIMARY KEY pk_brands id 主キー
UNIQUE KEY uk_brands_slug slug URL用スラッグの重複防止
INDEX idx_brands_is_active is_active 有効フラグ別検索
INDEX idx_brands_sort_order sort_order 表示順序別検索

外部キー制約

なし(マスターテーブルのため)

リレーション

関連先テーブル 関連タイプ 外部キー 参照先 ON DELETE ON UPDATE 説明
products 1:N id brand_id SET NULL RESTRICT 1つのブランドは複数の商品を持つ

データ例

id name slug logo_image is_active
1 ナイキ nike brands/nike-logo.png TRUE
2 アディダス adidas brands/adidas-logo.png TRUE
3 プーマ puma brands/puma-logo.png TRUE
4 アンダーアーマー under-armour brands/under-armour-logo.png FALSE

備考・注意事項

ブランド管理

命名規則

  • name: 表示用(「ナイキ」「アディダス」等)
  • slug: URL用(「nike」「adidas」等)
  • 日本語と英語の両方に対応

有効フラグ管理

  • is_active: ブランドの有効/無効を制御
  • FALSEの場合、フロントエンドで非表示
  • 商品が属するブランドは無効化不可(UI側で制御)

画像管理

  • logo_image: ブランドロゴ画像のパス(単一画像、VARCHAR型)
  • images: ブランド画像(複数画像、JSON配列形式)
  • 例: ["brands/image1.jpg", "brands/image2.jpg"]
  • ファイルアップロードはpublic/brands/ディレクトリに保存
  • 画像形式: JPG, PNG, GIF等(FilamentのFileUploadコンポーネントで制御)

リッチエディタ管理

  • description: ブランド説明文(TEXT型、リッチエディタ対応)
  • FilamentのRichEditorコンポーネントを使用
  • HTML形式で保存可能

パフォーマンス考慮

  • インデックス: is_activeにインデックスを設定して有効ブランド検索を高速化
  • Eager Loading: 商品とブランドを一括取得
  • キャッシュ: ブランド一覧は頻繁に変更されないためキャッシュ推奨

将来の拡張

ブランドの詳細情報

-- ブランドの詳細情報を追加
ALTER TABLE brands
ADD COLUMN description TEXT NULL COMMENT 'ブランド説明',
ADD COLUMN website_url VARCHAR(255) NULL COMMENT 'ブランド公式サイトURL',
ADD COLUMN country VARCHAR(100) NULL COMMENT 'ブランドの国';

ブランドの階層化

-- ブランドグループの追加
CREATE TABLE brand_groups (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    sort_order INT UNSIGNED DEFAULT 0
);

-- ブランドにグループを追加
ALTER TABLE brands
ADD COLUMN brand_group_id BIGINT UNSIGNED NULL,
ADD FOREIGN KEY (brand_group_id) REFERENCES brand_groups(id);

ブランドの表示順序(実装済み)

  • sort_order: ブランドの表示順序を制御(INTEGER型、デフォルト値0)
  • 管理画面でドラッグ&ドロップによる並び替えが可能
  • インデックスidx_brands_sort_orderが設定されており、ソート処理が高速化

削除時の注意

外部キー制約: ON DELETE SET NULL

  • ブランド削除時、関連商品のbrand_idは自動的にNULLに設定される
  • 商品本体は残る(削除されない)
  • UI推奨: 削除前に所属商品数を表示し、警告を出す
  • 例: 「このブランドには5件の商品があります。ブランドを削除すると、商品は『ブランドなし』になります。よろしいですか?」
  • 削除後、商品は「ブランドなし」として表示される