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商品あたり: 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);