数据库课程设计案例:构建Pixel Dream Workshop用户作品社交平台

张开发
2026/4/10 5:33:01 15 分钟阅读

分享文章

数据库课程设计案例:构建Pixel Dream Workshop用户作品社交平台
数据库课程设计案例构建Pixel Dream Workshop用户作品社交平台1. 项目背景与需求分析Pixel Dream Workshop是一个AI绘画创作社区用户可以在平台上生成、分享和讨论AI绘画作品。随着用户量和作品数量的快速增长我们需要设计一个高效的数据库系统来支撑平台的核心功能。这个数据库需要满足以下业务需求用户注册与个人信息管理AI绘画作品的上传、存储与展示作品分类与标签系统用户互动点赞、收藏、评论热门作品推荐与内容发现2. 数据库概念设计2.1 核心实体分析我们识别出系统的主要实体包括用户(User)平台使用者作品(Artwork)用户生成的AI绘画标签(Tag)作品分类标记评论(Comment)用户对作品的评价收藏(Favorite)用户收藏的作品2.2 ER图设计以下是简化版ER图的关键关系[用户] 1---N [作品] [用户] 1---N [评论] [用户] N---N [作品] (通过收藏) [作品] N---N [标签]3. 数据库逻辑设计3.1 数据表结构设计用户表(users)CREATE TABLE users ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, avatar_url VARCHAR(255), bio TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_username (username), INDEX idx_email (email) );作品表(artworks)CREATE TABLE artworks ( artwork_id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, title VARCHAR(100) NOT NULL, description TEXT, image_url VARCHAR(255) NOT NULL, prompt TEXT, model_used VARCHAR(50), view_count INT DEFAULT 0, like_count INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(user_id), INDEX idx_user_id (user_id), INDEX idx_created_at (created_at), FULLTEXT INDEX ft_title_desc (title, description) );标签表(tags)CREATE TABLE tags ( tag_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );作品标签关联表(artwork_tags)CREATE TABLE artwork_tags ( artwork_id INT NOT NULL, tag_id INT NOT NULL, PRIMARY KEY (artwork_id, tag_id), FOREIGN KEY (artwork_id) REFERENCES artworks(artwork_id), FOREIGN KEY (tag_id) REFERENCES tags(tag_id), INDEX idx_tag_id (tag_id) );评论表(comments)CREATE TABLE comments ( comment_id INT PRIMARY KEY AUTO_INCREMENT, artwork_id INT NOT NULL, user_id INT NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (artwork_id) REFERENCES artworks(artwork_id), FOREIGN KEY (user_id) REFERENCES users(user_id), INDEX idx_artwork_id (artwork_id), INDEX idx_user_id (user_id) );收藏表(favorites)CREATE TABLE favorites ( user_id INT NOT NULL, artwork_id INT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, artwork_id), FOREIGN KEY (user_id) REFERENCES users(user_id), FOREIGN KEY (artwork_id) REFERENCES artworks(artwork_id), INDEX idx_artwork_id (artwork_id) );4. 数据库优化设计4.1 索引优化策略为提高查询性能我们在以下场景添加了索引用户表的用户名和邮箱字段高频查询作品表的用户ID和创建时间个人作品列表和最新作品展示作品表的标题和描述全文索引搜索功能评论表和收藏表的外键字段关联查询4.2 热门作品推荐查询-- 获取过去30天内最热门的10件作品按点赞数和浏览量加权计算 SELECT a.artwork_id, a.title, a.image_url, u.username, u.avatar_url, (a.like_count * 0.7 a.view_count * 0.3) AS hot_score FROM artworks a JOIN users u ON a.user_id u.user_id WHERE a.created_at DATE_SUB(NOW(), INTERVAL 30 DAY) ORDER BY hot_score DESC LIMIT 10;4.3 用户作品收藏查询-- 获取某个用户收藏的所有作品 SELECT a.artwork_id, a.title, a.image_url, a.like_count, a.view_count, GROUP_CONCAT(t.name SEPARATOR , ) AS tags FROM favorites f JOIN artworks a ON f.artwork_id a.artwork_id LEFT JOIN artwork_tags at ON a.artwork_id at.artwork_id LEFT JOIN tags t ON at.tag_id t.tag_id WHERE f.user_id ? GROUP BY a.artwork_id ORDER BY f.created_at DESC;5. 数据库实施建议5.1 数据量预估与分表策略随着平台发展建议考虑以下优化用户表和作品表单表数据超过500万时考虑分表评论表按作品ID哈希分表收藏表按用户ID范围分表5.2 缓存策略高频访问数据建议使用Redis缓存热门作品列表用户个人资料作品详情页5.3 定期维护任务设置定时任务执行更新作品热度分数清理无效的图片引用重建全文索引6. 总结这个数据库设计为Pixel Dream Workshop社交平台提供了完整的解决方案涵盖了用户管理、作品展示、互动功能和内容发现等核心场景。通过合理的表结构设计和索引优化能够支持平台的高效运行和未来发展。在实际课程设计中可以根据具体需求进一步扩展功能如增加作品版本控制、协作创作等功能表。对于数据库课程设计来说这个案例展示了从需求分析到逻辑设计的完整过程包含了ER图设计、表结构定义、SQL查询优化等关键环节是一个全面而实用的教学案例。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章