DB物理設計

DB名 : minder_mutunet_db

1. mutunet_users(ユーザー本体)

カラム名 データ型 制約 インデックス 説明
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK ユーザーID
email VARCHAR(255) NOT NULL UNIQUE メールアドレス
password_hash CHAR(64) NOT NULL, CHARACTER SET ascii – パスワードハッシュ
is_deleted BOOLEAN NOT NULL, DEFAULT FALSE – 削除フラグ
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – 更新日時

2. user_attributes(ユーザー属性)

カラム名 データ型 制約 インデックス 説明
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK 属性ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) INDEX, UNIQUE(user_id, attribute_key) ユーザーID
attribute_key VARCHAR(255) NOT NULL UNIQUE(user_id, attribute_key) 属性キー
attribute_value TEXT NULL – 属性値
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – 更新日時

3. tracks(演奏トラック)

カラム名 データ型 制約 インデックス 説明
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK トラックID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) INDEX ユーザーID
instrument_name VARCHAR(100) NOT NULL INDEX 楽器名
file_url TEXT NOT NULL – ファイルURL
is_deleted BOOLEAN NOT NULL, DEFAULT FALSE – 削除フラグ
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – 更新日時

4. track_attributes(トラック属性)

カラム名 データ型 制約 インデックス 説明
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK 属性ID
track_id BIGINT NOT NULL, FOREIGN KEY (tracks.id) INDEX, UNIQUE(track_id, attribute_key) トラックID
attribute_key VARCHAR(255) NOT NULL UNIQUE(track_id, attribute_key) 属性キー
attribute_value TEXT NULL – 属性値
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – 更新日時

5. projects(プロジェクト) ※変更

status_id カラムを追加。

カラム名 データ型 制約 インデックス 説明
id BIGINT UNSIGNED PRIMARY KEY, AUTO_INCREMENT PRIMARY プロジェクトID
user_id BIGINT UNSIGNED NOT NULL, FOREIGN KEY (mutunet_users.id) FK プロジェクト作成ユーザーID
status_id TINYINT UNSIGNED NOT NULL, DEFAULT 1, FOREIGN KEY (mst_project_statuses.id) FK プロジェクトステータスID(デフォルト 1:コラボ募集中)
is_deleted BOOLEAN NOT NULL, DEFAULT 0 – 削除フラグ
created_at TIMESTAMP NULL – 作成日時
updated_at TIMESTAMP NULL – 更新日時

6. project_attributes(プロジェクト属性)

プロジェクトのタイトル、概要、ジャンル、完パケ音源URL等の可変属性を管理するEAV構造テーブル。

カラム名 データ型 制約 インデックス 説明
id BIGINT UNSIGNED PRIMARY KEY, AUTO_INCREMENT PRIMARY 属性ID
project_id BIGINT UNSIGNED NOT NULL, FOREIGN KEY (projects.id) ON DELETE CASCADE FK 対象プロジェクトID
attribute_key VARCHAR(255) NOT NULL INDEX 属性名(title, description, genre, completed_track_url 等)
attribute_value TEXT NULL – 属性値
created_at TIMESTAMP NULL – 作成日時
updated_at TIMESTAMP NULL – 更新日時

7. mst_project_track_statuses(プロジェクトトラック状態マスター)

カラム名 データ型 制約 インデックス 説明
id INT PRIMARY KEY, AUTO_INCREMENT PK ステータスID
name VARCHAR(50) NOT NULL UNIQUE ステータス名
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時

8. project_tracks(プロジェクト構成トラック)

カラム名 データ型 制約 インデックス 説明
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK 構成トラックID
project_id BIGINT NOT NULL, FOREIGN KEY (projects.id) UNIQUE(project_id, track_id) プロジェクトID
track_id BIGINT NOT NULL, FOREIGN KEY (tracks.id) INDEX, UNIQUE(project_id, track_id) トラックID
status_id INT NOT NULL, FOREIGN KEY (project_track_statuses.id) INDEX ステータスID
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時

9. favorite_users(お気に入りユーザー)

カラム名 データ型 制約 インデックス 説明
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK お気に入りユーザー管理ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) UNIQUE(user_id, favorite_user_id) ユーザーID
favorite_user_id BIGINT NOT NULL, FOREIGN KEY (users.id) INDEX, UNIQUE(user_id, favorite_user_id) 対象ユーザーID
display_order INT NOT NULL, DEFAULT 0 – 表示順
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時

10. favorite_projects(お気に入りプロジェクト)

カラム名 データ型 制約 インデックス 説明
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK お気に入りプロジェクト管理ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) UNIQUE(user_id, project_id) ユーザーID
project_id BIGINT NOT NULL, FOREIGN KEY (projects.id) INDEX, UNIQUE(user_id, project_id) 対象プロジェクトID
display_order INT NOT NULL, DEFAULT 0 – 表示順
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – 作成日時