排行网站数据库表设计
以下是一个排行网站(如音乐、视频排行榜)的完整数据库表设计方案:
1. 核心表设计
媒体表 (media)
sql
CREATE TABLE `media` ( `id` int(
) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL COMMENT '媒体标题', `url` varchar(512) NOT NULL COMMENT '播放地址', `type` enum('audio','video') NOT NULL DEFAULT 'audio' COMMENT '媒体类型', `duration` int(11) DEFAULT NULL COMMENT '时长(秒)', `thumbnail` varchar(512) DEFAULT NULL COMMENT '缩略图URL', `description` text DEFAULT NULL COMMENT '描述', `views` int(11) DEFAULT 0 COMMENT '播放次数', `likes` int(11) DEFAULT 0 COMMENT '点赞数', `status` tinyint(1) DEFAULT 1 COMMENT '1-上架 0-下架', `created_at` timestamp NOT NULL DEFAULT current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), KEY `idx_views` (`views`), KEY `idx_created` (`created_at`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体资源表';
艺术家/创作者表 (artists)
sql
CREATE TABLE `artists` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL COMMENT '艺术家名称', `avatar` varchar(512) DEFAULT NULL COMMENT '头像URL', `bio` text DEFAULT NULL COMMENT '简介', `created_at` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺术家表';
媒体-艺术家关联表 (media_artists)
sql
CREATE TABLE `media_artists` ( `id` int(11) NOT NULL AUTO_INCREMENT, `media_id` int(11) NOT NULL COMMENT '媒体ID', `artist_id` int(11) NOT NULL COMMENT '艺术家ID', `role` varchar(50) DEFAULT NULL COMMENT '角色(主唱、作曲等)', PRIMARY KEY (`id`), UNIQUE KEY `uq_media_artist` (`media_id`,`artist_id`), KEY `idx_artist` (`artist_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体艺术家关联表';
2. 排行榜相关表
排行榜表 (charts)
sql
CREATE TABLE `charts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL COMMENT '排行榜名称', `slug` varchar(100) NOT NULL COMMENT 'URL标识', `description` varchar(512) DEFAULT NULL COMMENT '描述', `chart_type` enum('daily','weekly','monthly','all_time') NOT NULL COMMENT '排行榜类型', `media_type` enum('audio','video') NOT NULL DEFAULT 'audio' COMMENT '媒体类型', `is_active` tinyint(1) DEFAULT 1 COMMENT '是否激活', PRIMARY KEY (`id`), UNIQUE KEY `uq_slug` (`slug`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='排行榜定义表';
排行榜条目表 (chart_entries)
sql
CREATE TABLE `chart_entries` ( `id` int(11) NOT NULL AUTO_INCREMENT, `chart_id` int(11) NOT NULL COMMENT '排行榜ID', `media_id` int(11) NOT NULL COMMENT '媒体ID', `rank` int(11) NOT NULL COMMENT '排名', `previous_rank` int(11) DEFAULT NULL COMMENT '上次排名', `points` decimal(10,2) DEFAULT NULL COMMENT '得分(可选)', `chart_date` date NOT NULL COMMENT '排行榜日期', `created_at` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `uq_chart_media_date` (`chart_id`,`media_id`,`chart_date`), KEY `idx_chart_date` (`chart_id`,`chart_date`), KEY `idx_media` (`media_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='排行榜条目表';
3. 用户交互相关表
用户表 (users)
sql
CREATE TABLE `users` ( `id`
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.