Physical Database Design

Physical Database Design

DB名 : minder_mutunet_db

1. mutunet_users

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK User ID
email VARCHAR(255) NOT NULL UNIQUE Email Address
password_hash CHAR(64) NOT NULL, CHARACTER SET ascii – Password Hash
is_deleted BOOLEAN NOT NULL, DEFAULT FALSE – Deletion Flag
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – Update Timestamp

2. user_attributes

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK Attribute ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) INDEX, UNIQUE(user_id, attribute_key) User ID
attribute_key VARCHAR(255) NOT NULL UNIQUE(user_id, attribute_key) Attribute Key
attribute_value TEXT NULL – Attribute Value
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – Update Timestamp

3. tracks

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK Track ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) INDEX User ID
instrument_name VARCHAR(100) NOT NULL INDEX Instrument Name
file_url TEXT NOT NULL – File URL
is_deleted BOOLEAN NOT NULL, DEFAULT FALSE – Deletion Flag
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – Update Timestamp

4. track_attributes

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK Attribute ID
track_id BIGINT NOT NULL, FOREIGN KEY (tracks.id) INDEX, UNIQUE(track_id, attribute_key) Track ID
attribute_key VARCHAR(255) NOT NULL UNIQUE(track_id, attribute_key) Attribute Key
attribute_value TEXT NULL – Attribute Value
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – Update Timestamp

5. projects

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK Project ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) INDEX User ID
status_id TINYINT NOT NULL, DEFAULT 1, FOREIGN KEY (mst_project_statuses.id) FK Project Status ID (Default 1: Calling for collaborators)
is_deleted BOOLEAN NOT NULL, DEFAULT FALSE – Deletion Flag
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp
updated_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP – Update Timestamp

6. project_attributes(Project Attributes)

An EAV structure table for managing variable attributes such as project title, summary, genre and the URL for the final audio file.

Column name Data types Constraints Index Explanation
id BIGINT UNSIGNED PRIMARY KEY, AUTO_INCREMENT PRIMARY Property ID
project_id BIGINT UNSIGNED NOT NULL, FOREIGN KEY (projects.id) ON DELETE CASCADE FK Target Project ID
attribute_key VARCHAR(255) NOT NULL INDEX Properties name(title, description, genre, completed_track_url )
attribute_value TEXT NULL – Property value
created_at TIMESTAMP NULL – Date created
updated_at TIMESTAMP NULL – Date and time of update

7. mst_project_track_statuses

Column Name Data Type Constraints Index Description
id INT PRIMARY KEY, AUTO_INCREMENT PK Status ID
name VARCHAR(50) NOT NULL UNIQUE Status Name
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp

8. project_tracks

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK Project Track ID
project_id BIGINT NOT NULL, FOREIGN KEY (projects.id) UNIQUE(project_id, track_id) Project ID
track_id BIGINT NOT NULL, FOREIGN KEY (tracks.id) INDEX, UNIQUE(project_id, track_id) Track ID
status_id INT NOT NULL, FOREIGN KEY (mst_project_track_statuses.id) INDEX Status ID
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp

9. favorite_users

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK Favorite User Entry ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) UNIQUE(user_id, favorite_user_id) User ID
favorite_user_id BIGINT NOT NULL, FOREIGN KEY (users.id) INDEX, UNIQUE(user_id, favorite_user_id) Favorite User ID
display_order INT NOT NULL, DEFAULT 0 – Display Order
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp

10. favorite_projects

Column Name Data Type Constraints Index Description
id BIGINT PRIMARY KEY, AUTO_INCREMENT PK Favorite Project Entry ID
user_id BIGINT NOT NULL, FOREIGN KEY (users.id) UNIQUE(user_id, project_id) User ID
project_id BIGINT NOT NULL, FOREIGN KEY (projects.id) INDEX, UNIQUE(user_id, project_id) Favorite Project ID
display_order INT NOT NULL, DEFAULT 0 – Display Order
created_at DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP – Creation Timestamp