经典系统重塑(sql层)

server/2024/12/23 5:39:19/

内容

这个音乐门户网站是我一直在写的一个项目,因为周期较长,虽然功能都给予了大体实现,但是确实无论是sql层面还是业务层面都有很大缺陷。

先看最主要的music表,这music字段指的是音乐地址,名字需要改一下,还有musician_id和musician明显不符合三范式,删掉musician字段,与musician表进行连表查询,由于是发布专辑,专辑里有歌曲,所以歌曲相当于专辑的一个子,生命周期的create是相同的,所以把create_time字段转移到musician表中,其实可以把duration(歌曲时间),这种字段,新建一个music_data表然后移进去,但是现在关于歌曲信息的字段就一个,因为点赞数和评论数等信息是使用redis和count函数完成的,后期对点赞和评论系统进行优化的时候会进行涉及处理。这个create_time字段与这个time字段写重了,修改后music表结构为:

 在mybatis-plus里的思想是一个表对应一个controller类,一个service接口,一个service实现类,一个mapper接口,一个Po实体类,但是由于是表分立的思想,所以他对连表的支持其实比较有限,需要嵌入sql语句,可读性和封装型都不如写mybatis的注解或xml。

对于表的修改还有就是对这个专辑表的专辑风格进行了修改,之前是varchar形式,现在修改成id。

当写这篇文章的时候,对于原系统的改造就已经彻底完成了,包括oss的文件转移到前端去实现。以及全部sql的改写

总结

 总体来说,这次改造可以使系统结构更加清晰,可扩展性,抗压性,稳定性,合理性都有了质的突破,因为如果不进行重塑,该系统下的其他功能将会很乱,变成屎山。比如musician_name和musician_id同时存在,就只单单查询这一条sql业务简单了一点点,可能速度快了一点点点,但是面对音乐人注销,音乐人改名,这个业务就会变得及其复杂,难以维护


http://www.ppmy.cn/server/152416.html

相关文章

【批量生成WORD和PDF文件】根据表格内容和模板文件批量创建word文件,一次性生成多个word文档和批量创建PDF文件

如何按照Word模板和表格的数据快速制作5000个word文档 ? 在与客户的合作的中需要创建大量的合同,这些合同的模板大概都是一致的,是不是每次我们都需要填充不一样的数据来完成? 今天用表格数据完成合同模板的填充,批量…

分类模型的预测概率解读:3D概率分布可视化的直观呈现

背景 在分类模型中,预测概率不仅是结果,更是模型决策的关键依据。为了更直观地理解这些概率分布,3D可视化提供了一种生动的展示方式,本文通过3D概率分布图,直观展示分类模型的预测概率 代码实现 基于时间序列的3D分…

RBF分类-径向基函数神经网络(Radial Basis Function Neural Network)

RBF分类详细介绍 源码 什么是RBF分类? RBF分类(径向基函数分类)是一种基于**径向基函数神经网络(Radial Basis Function Neural Network, RBFNN)**的分类算法。RBF神经网络是一种前馈神经网络,广泛应用于…

城市灾害应急管理集成系统——系统介绍

1 项目概述 1.1选题背景 城市灾害已经成为影响我国发展的重要因素,近年来我国高度重视城市灾害应急研究。其中洪涝、团雾、火灾和地面塌陷等多种灾害是当前影响人民群众生产生活的主要灾害。中共中央提出,在第十四个五年计划期间要提升城市治理水平,加强城市治理中的风险防…

鸿蒙项目云捐助第十九讲云捐助百度智能名片识别

鸿蒙项目云捐助第十九讲云捐助百度智能名片识别 在鸿蒙云捐助项目中添加智能元素,这里实现鸿蒙云捐助的名片识别功能,用户只需要上传一张名片,就可以识别出地址和名字,根据地址和名字进行真实信息的确认。 首先找到OCR的名片识别…

Dapper

Dapper 简介 Dapper 是一个轻量级的 ORM(对象关系映射)库,由 Stack Overflow 团队开发并维护。它旨在提供高效的数据库访问,同时保持代码的简洁性和性能。Dapper 的核心功能是将 SQL 查询结果自动映射到 C# 对象,而不…

Java web的发展历史

目录 前言: 一.Model I和Model II 1.Model I开发模式 ​编辑 2.Model II开发模式 二. MVC模式 前言: 该篇文章主要介绍了Java web的发展历史,以及MVC相关内容 一.Model I和Model II 1.Model I开发模式 Model1的开发模式是&#xff…

uniapp自定义树型结构数据弹窗,给默认选中的节点,禁用所有子节点

兼容H5、安卓App、微信小程序 实现逻辑&#xff1a;给默认选中节点的所有子节点添加一个disabled属性&#xff0c;以此禁用子节点。 /components/sonTreeNode/sonTreeNode.vue 封装成组件 <template><view><view :class"[item,item.is_level1?pL1:item…