作为IT工程师,我将为您设计一个高效的文章附件表结构。以下是详细的设计方案:
CREATE TABLE article_attachments (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '附件ID',
article_id BIGINT NOT NULL COMMENT '关联的文章ID',
file_name VARCHAR(255) NOT NULL COMMENT '原始文件名',
file_path VARCHAR(512) NOT NULL COMMENT '文件存储路径',
file_size BIGINT NOT NULL COMMENT '文件大小(字节)',
file_type VARCHAR(100) NOT NULL COMMENT '文件MIME类型',
file_extension VARCHAR(20) COMMENT '文件扩展名',
download_count INT DEFAULT 0 COMMENT '下载次数',
upload_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
uploader_id BIGINT COMMENT '上传者ID',
description TEXT COMMENT '附件描述',
sort_order INT DEFAULT 0 COMMENT '排序权重',
is_deleted TINYINT(1) DEFAULT 0 COMMENT '是否删除(0-否,1-是)',
delete_time DATETIME COMMENT '删除时间',
storage_type TINYINT DEFAULT 1 COMMENT '存储类型(1-本地,2-OSS,3-CDN等)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章附件表';
-- 文章ID索引(高频查询)
ALTER TABLE article_attachments ADD INDEX idx_article_id (article_id);
-- 上传者ID索引
ALTER TABLE article_attachments ADD INDEX idx_uploader_id (uploader_id);
-- 组合索引(用于管理后台查询)
ALTER TABLE article_attachments ADD INDEX idx_article_uploader (article_id, uploader_id);
文件存储策略:
安全性考虑:
性能优化:
版本控制:
缩略图支持:
上传流程:
删除策略:
查询优化:
此设计平衡了功能需求与性能考虑,可根据实际业务需求进一步调整。