54 lines
2.7 KiB
SQL
54 lines
2.7 KiB
SQL
|
|
-- ============================================================
|
|||
|
|
-- 05_media.sql
|
|||
|
|
-- 素材库:媒体资源、标签
|
|||
|
|
-- 对应 proposal.md 第 6 节
|
|||
|
|
-- ============================================================
|
|||
|
|
|
|||
|
|
-- -----------------------------------------------------------
|
|||
|
|
-- 6.2 素材库
|
|||
|
|
-- -----------------------------------------------------------
|
|||
|
|
CREATE TABLE IF NOT EXISTS `www_media` (
|
|||
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|||
|
|
`filename` VARCHAR(255) NOT NULL COMMENT '原始文件名',
|
|||
|
|
`file_path` VARCHAR(500) NOT NULL COMMENT '存储路径(相对 uploads/)',
|
|||
|
|
`file_type` VARCHAR(10) NOT NULL COMMENT '类型: image / video / file',
|
|||
|
|
`mime_type` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'MIME 类型',
|
|||
|
|
`file_size` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
|
|||
|
|
`width` INT DEFAULT NULL COMMENT '图片/视频宽度(px)',
|
|||
|
|
`height` INT DEFAULT NULL COMMENT '图片/视频高度(px)',
|
|||
|
|
`category` VARCHAR(20) NOT NULL DEFAULT 'other' COMMENT '分类: product / banner / news / brand / video / document / other',
|
|||
|
|
`thumbnail_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '缩略图路径(300px 宽)',
|
|||
|
|
`webp_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'WebP 版本路径(图片自动生成)',
|
|||
|
|
`ref_count` INT NOT NULL DEFAULT 0 COMMENT '引用计数',
|
|||
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
`deleted_at` DATETIME DEFAULT NULL COMMENT '软删除时间',
|
|||
|
|
PRIMARY KEY (`id`),
|
|||
|
|
KEY `idx_category` (`category`),
|
|||
|
|
KEY `idx_filename` (`filename`),
|
|||
|
|
KEY `idx_created` (`created_at`),
|
|||
|
|
KEY `idx_deleted` (`deleted_at`)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|||
|
|
COMMENT='素材库';
|
|||
|
|
|
|||
|
|
-- -----------------------------------------------------------
|
|||
|
|
-- 素材标签
|
|||
|
|
-- -----------------------------------------------------------
|
|||
|
|
CREATE TABLE IF NOT EXISTS `www_media_tags` (
|
|||
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|||
|
|
`tag_name` VARCHAR(50) NOT NULL COMMENT '标签名',
|
|||
|
|
PRIMARY KEY (`id`),
|
|||
|
|
UNIQUE KEY `uk_tag_name` (`tag_name`)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|||
|
|
COMMENT='素材标签';
|
|||
|
|
|
|||
|
|
-- -----------------------------------------------------------
|
|||
|
|
-- 素材-标签多对多关联
|
|||
|
|
-- -----------------------------------------------------------
|
|||
|
|
CREATE TABLE IF NOT EXISTS `www_media_tag_map` (
|
|||
|
|
`media_id` BIGINT UNSIGNED NOT NULL,
|
|||
|
|
`tag_id` BIGINT UNSIGNED NOT NULL,
|
|||
|
|
PRIMARY KEY (`media_id`, `tag_id`),
|
|||
|
|
KEY `idx_tag` (`tag_id`)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|||
|
|
COMMENT='素材-标签关联';
|