コンテンツにスキップ

tags テーブル定義

テーブル概要

商品タグのマスターテーブルです。商品に複数のタグを付与し、柔軟な分類・検索を可能にします。

テーブル名: tags 説明: 商品タグマスター 用途: 商品のタグ管理(人気、新商品、セール等)

カラム定義

カラム名 NULL デフォルト キー 説明
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PK 主キー
name VARCHAR(255) NOT NULL - UNIQUE タグ名
border_color VARCHAR(7) NULL NULL - 枠線色(HEX形式、例: #FF5733)
bg_color VARCHAR(7) NULL NULL - 背景色(HEX形式、例: #FF5733)
text_color VARCHAR(7) NULL NULL - 文字色(HEX形式、例: #FF5733)
sort_order INTEGER NOT NULL 0 INDEX 表示順序
created_at TIMESTAMP NULL NULL - 作成日時
updated_at TIMESTAMP NULL NULL - 更新日時

インデックス

種別 名称 対象カラム 説明
PRIMARY KEY pk_tags id 主キー
UNIQUE KEY uk_tags_name name タグ名の重複防止
INDEX idx_tags_sort_order sort_order 表示順序別検索

外部キー制約

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

リレーション

関連先テーブル 関連タイプ 外部キー 参照先 ON DELETE ON UPDATE 説明
product_tags_rel 1:N tag_id id CASCADE RESTRICT タグ削除時に中間テーブル側も削除
products N:N product_id id (product_tags_rel経由) タグは複数の商品に付与される

データ例

| id | name | border_color | bg_color | text_color | created_at | updated_at | |----|------|--------------|----------|------------|------------|------------|------------| | 1 | 人気 | #FF5733 | #FFE5E5 | #000000 | 2025-01-01 10:00:00 | 2025-01-01 10:00:00 | NULL | | 2 | 新商品 | #33FF57 | #E5FFE5 | #000000 | 2025-01-01 10:00:00 | 2025-01-01 10:00:00 | NULL | | 3 | セール | #FF3333 | #FFE5E5 | #FFFFFF | 2025-01-01 10:00:00 | 2025-01-01 10:00:00 | NULL | | 4 | 限定 | #3357FF | #E5E5FF | #000000 | 2025-01-01 10:00:00 | 2025-01-01 10:00:00 | NULL | | 5 | おすすめ | #FF33FF | #FFE5FF | #000000 | 2025-01-01 10:00:00 | 2025-01-01 10:00:00 | NULL |

備考・注意事項

タグの特徴

柔軟な分類

  • カテゴリとの違い: カテゴリは階層構造、タグはフラット
  • 複数付与: 1つの商品に複数のタグを付与可能
  • 動的: 必要に応じてタグを追加・削除

命名規則

  • name: 表示用(「人気」「新商品」等)

タグ管理のベストプラクティス

タグの種類

  1. 状態タグ: 人気、新商品、セール
  2. 特徴タグ: 限定、おすすめ、ベストセラー
  3. 用途タグ: ギフト、日常使い、特別な日
  4. 季節タグ: 春、夏、秋、冬

タグ数制限

  • 1商品あたり: 3-5個程度が適切
  • 全体数: 50-100個程度に制限
  • 重複回避: 似た意味のタグは統合

パフォーマンス考慮

  • インデックス: nameにUNIQUE制約
  • キャッシュ: 人気タグはキャッシュ化
  • Eager Loading: 一括取得を推奨

将来の拡張

タグの色・アイコン

  • border_colorカラム: タグの枠線色をHEX形式で保存(例: #FF5733)
  • bg_colorカラム: タグの背景色をHEX形式で保存(例: #FFE5E5)
  • text_colorカラム: タグの文字色をHEX形式で保存(例: #000000)
  • 実装済み: カラーピッカーで3つの色を個別に選択可能

タグの階層化

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

-- タグにグループを追加
ALTER TABLE tags
ADD COLUMN tag_group_id BIGINT UNSIGNED NULL,
ADD FOREIGN KEY (tag_group_id) REFERENCES tag_groups(id);

タグの使用頻度

-- タグの使用頻度を記録
ALTER TABLE tags
ADD COLUMN usage_count INT UNSIGNED DEFAULT 0 COMMENT '使用回数';

-- 使用頻度の更新(トリガーまたはアプリケーション側)
UPDATE tags SET usage_count = (
    SELECT COUNT(*) FROM product_tags_rel WHERE tag_id = tags.id
);