CMS管理系统你真的拿下了嘛?——数据库的设计与连接

引言

CMS代表内容管理系统,它是用于创建、编辑和管理数字内容的工具。CMS管理系统可以帮助你轻松地管理和更新网站、博客、电子商务平台或其他在线平台上的内容。😊
一篇文章帮你彻底解决cms管理系统后台 文章篇幅较长,将设置成专栏,建议收藏哦
在这里插入图片描述

流程

cms在企业中是一个非常常见并最为简单的项目,那么我们在企业中该如何对项目下手呢?

1. 需求分析 
2. 设计(概要设计,详细设计)
3. 技术选型
4. 初始化/引入需要的技术
5.Demo
6. 写代码(实现业务逻辑)
7. 测试(单元测试,系统测试)
8. 代码提交./代码评审
9. 部署
10. 发布上线 

1. 需求分析

cms管理系统是一种非常常见的项目,基本实现过程简单,大致主要为登录注册,用户管理以及用户校验

在很多开发框架中,有一种常见的架构模式被广泛采用,即 MVC(Model-View-Controller) 模式。在这种模式中,软件系统被分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)

在这个模式中,控制器层负责处理用户的请求并调度相应的业务逻辑,而模型层负责处理数据的持久化和管理。

用户管理增删改查(CRUD) 操作通常涉及对数据库中的实体类(或数据对象)进行操作。因此,将这些操作放在控制器层是很常见的做法。控制器接收来自用户的请求,调用相应的服务方法来执行CRUD操作,并将结果返回给视图层或前端。

另一方面,登录注册等逻辑通常包含更多的业务规则和验证过程,例如用户身份验证、密码加密等。将这些逻辑放在服务层可以提供更好的分离和组织。服务层可以封装业务逻辑,处理用户的注册和登录请求,并协调与用户相关的操作。

这种分层架构的设计有助于代码的可维护性和可测试性,使得不同的组件职责清晰,并易于扩展和修改。

技术选型

  • 后端
 + java
 + spring(依赖注入框架,帮助你管理 Java 对象,集成一些其他的内容)
 + springmvc(web 框架,提供接口访问、restful接口等能力)
 + mybatis(Java 操作数据库的框架,持久层框架,对 jdbc 的封装)
 + mybatis-plus(对 mybatis 的增强,不用写 sql 也能实现增删改查)
 + springboot(快速启动 / 快速集成项目。不用自己管理 spring 配置,不用自己整合各种框架)
 + junit 单元测试库
 + mysql 数据库
  • 部署:服务器 / 容器(平台)

初始化项目

后端初始化

  1. GitHub 搜现成的代码
  2. SpringBoot 官方的模板生成器(https://start.spring.io/
  3. 直接在 IDEA 开发工具中生成 (一般都是自己创建工程)

如果要引入 java 的包,可以去 maven
中心仓库寻找(http://mvnrepository.com/
新建好工程,然后整合 MyBatis-Plus 跟着官网来就可以了

数据库的设计

数据库设计主要有这么几个步骤

确切地说,数据库设计包括以下几个主要步骤:

1. 需求分析:了解系统的需求和功能,确定需要存储的数据类型和数量。

2. 概念设计:根据需求分析,定义数据库中的实体(表)和它们之间的关系。这通常使用实体关系模型(ER模型)进行表示和设计。

3. 逻辑设计:将概念设计转化为逻辑模型,确定每个表的属性(字段)以及它们的数据类型和约束。这通常使用类似实体关系模型的工具,例如ER图或UML类图。

4. 物理设计:在逻辑模型的基础上,将表和字段映射到具体的数据库管理系统(如MySQL、Oracle等)所支持的数据类型。考虑性能需求和优化,例如选择合适的索引类型和建立索引。

5. 范式化:根据数据库规范化理论,将数据设计为符合一定范式级别(如第一范式、第二范式、第三范式等)的结构,以减少数据冗余和提高数据一致性。

6. 设计表和字段:根据实体和属性的定义,创建每个表并指定它们的字段。每个字段应有正确的数据类型、长度和约束,并命名合适的字段名。

7. 添加索引:根据查询需求和性能优化的考虑,选择适当的字段添加索引。索引可以加快查询速度,但也会增加插入、更新和删除操作的开销。需要谨慎评估和平衡。

8. 表与表之间的关联:根据实体之间的关系,使用外键在表之间建立关联。这能够保持数据的关联性和完整性,以支持数据的关联查询和约束。

  • 有那些表(模型对象)
  • 表中有那些字段(属性)
  • 字段的类型
  • 数据库字段是否添加索引
  • 表与表之间的关联

我们可以在idea中进行设计

逻辑删除:逻辑删除是指在数据库中不是真正删除记录,而是标记为已删除,使得这些记录在系统中
看起来像已被删除。这比物理删除更加安全、可靠,也能够满足许多场景下的需求。

用户表 (User)

  • id (主键) - bigint
  • username (昵称) - varchar
  • userAccount (登录账号) - varchar
  • avatarUrl (头像) - varchar
  • gender (性别) - tinyint
  • userPassword (密码) - varchar
  • phone (电话) - varchar
  • email (邮箱) - varchar
  • userStatus (用户状态) - int (0: 正常)
  • createTime (创建时间) - datetime
  • updateTime (更新时间) - datetime
  • isDelete 是否删除 0 1(逻辑删除)tinyint
  • userRole (用户角色) - int (0: 普通用户, 1: 管理员)

在这里插入图片描述
需要注意的字段为
在这里插入图片描述
完整代码如下:

create table user
(
username varchar(256) null comment '用户昵称',
id bigint auto_increment comment 'id' primary key,
userAccount varchar(256) null comment '账号',
avatarUrl varchar(1024) null comment '用户头像',
gender tinyint null comment '性别',
userPassword varchar(512) not null comment '密码',
phone varchar(128) null comment '电话',
email varchar(512) null comment '邮箱',
userStatus int default 0 not null comment '状态 0 - 正
常',
createTime datetime default CURRENT_TIMESTAMP null comment '创建时间',
updateTime datetime default CURRENT_TIMESTAMP null on update
CURRENT_TIMESTAMP,
isDelete tinyint default 0 not null comment '是否删除',
userRole int default 0 not null comment '用户角色 0
- 普通用户 1 - 管理员',
userCode varchar(512) null comment '用户编号'
) comment '用户';

当然在spring boot中数据库的连接需要application.xml文件

spring:
  application:
    name: cms-demo1
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xuebi?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    username: root
    password: 123456

server:
  port: 8080

后端连接数据库

将数据库创建完成之后,我们对数据库和后端进行连接,这里我们推荐如下图插件
在这里插入图片描述
下载安装重启idea之后进行使用
右键点击数据表,选择第一个
在这里插入图片描述
可以生成以下文件,实现数据库的连接
在这里插入图片描述

  • domain:实体对象
  • mapper:操作数据库的对象
  • mapper.xml:定义了 mapper 对象和数据库的关联,可以在里面自己写 SQL
  • service:包含常用的增删改查
  • serviceImpl:具体实现 service

报错注意
mybatis-plus会对下划线进行转换,添加以下配置代码即可关闭掉下划线转换

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false

那么将数据库与后端连接后,我们进行业务逻辑设计

  • 34
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
CMS数据库设计 在园子里也混了三年多,随笔200多,一开始只是想把自己的经验写一下,后来呢弄出来了一个"自然框架",主要精力就放在了介绍自然框架的思路上面了。随笔多了就发现一个问题:有点乱。虽然博客有分组,但是只支持一级分组,不支持n级的。博客里也没有"栏目"这一类的设置。所以对于随笔的管理有有点力不从心了。有些兄弟看到我的博客,看到我说自然框架,然后就会很迷茫,自然框架到底是什么?能做什么?如果想看看的话,从什么地方开始看,按照什么顺序来看?   博客的这种形式就不大好解决这种需求了,当然也许是我对博客还不了解,没有用好吧。所以我想做一个网站,这个网站专门介绍自然框架。一开始只想做一个静态的,内容也不多嘛,做几个页面,介绍一下,把博客里的随笔整理一下做个目录便于阅读。但是试了一下才发现,静态页面好麻烦呀,也许是我太懒了吧,总是想简单一些。于是就想做一个简单的CMS,然后用这个CMS来做自然框架的介绍网站。   您可能会说了,海洋又在重复制造轮子了,网上有一大堆现成的,有很多成熟的不去用,自己写什么呀?   首先呢,我是程序员(嘿嘿),我先想到的是我自己能不能做出来?别人能做我为什么不行?我不是顾客,我也不是有钱人,到处去弄现成的。其次呢,做一个CMS也是一个练手的机会,同时也是自然框架的一个Demo,比较大的、完整的Demo。借此来说明自然框架的使用方式,和在网页里的作用。最后就是想借此说一下我的设计数据库的思路。我觉得我的设计数据库的思路还是有点特色的。   好了,开始进入正题。   首先是了解需求。一个网站会有什么?首页、新闻(图文形式的信息)、产品介绍、文件下载、图片浏览、在线视频等。这些都算是"内容"的几种形式吧,当然还可以有其他的形式。 CMS数据库设计全文共5页,当前为第1页。  这个需求比较简单,也比较简陋,暂时就以这个需求来进行设计吧。如果是按照面向对象的方式要如何设计呢?这个我不太清楚,也许是要画一个UML吧,也许要建模。尝试一下,画了一个UML不知道对不对,拿出来请大家批批。 CMS数据库设计全文共5页,当前为第1页。 【CMS的类图】   图很简单也没什么具体的属性,因为需求是变化的,现在也没有太具体的需求,所以属性就先设置几个主要的。另外俺英文不好,怕查出来的英文单词不正确产生歧义,所以直接用汉字了。可能您看着很别扭,但是至少不会产生什么歧义,理解起来也会比较容易吧,呵呵。   "内容"作为父类,其他的作为子类。内容是一种"抽象",把各种形式的内容的共同部分提炼出来,比如标题、内容、添加人、添加日期、点击量等。子类负责各自特有的属性。   我觉得这种提炼的方式比较好,在设计数据库表结构的时候可以借鉴一下。于是就有了这样的数据库设计CMS数据库设计全文共5页,当前为第2页。【CMS ER图】 CMS数据库设计全文共5页,当前为第2页。   "内容"作为主体和中心,其他的都是为了这个中心(内容)来服务的。左面是对内容的限制,栏目相当于大分类,分类就是小分类(可以是n级的),类型就是内容的形式,比如图文、下载、视频、图片等。右面是扩展。扩展和类型是一一对应的。   这就形成了一个"骨架",骨架是以"内容"为中心,ArticleID作为关联字段,可以增加扩展表,但是都要以ArticleID作为关联字段。至于有多少扩展表,那就可以根据实际需求来变化,表里的字段也是可以根据需求来增减。   设置这种"骨架"的好处:虽然扩展表、字段会有变化,但是"骨架"结构是不变的。这样一是可以让结构清晰,抓住中心、重点;二是当需求变化的时候,对结构的影响降到最低;三是,如果对于这种"骨架"习惯、掌握了之后,在看到其他项目的设计就会很容易进入和读懂。关于第三点,以后大家就会理解的。 CMS数据库设计全文共5页,当前为第3页。  基本思路就是这样,抛砖引玉了。 CMS数据库设计全文共5页,当前为第3页。 CMS数据库设计全文共5页,当前为第4页。ps:CMS的字段说明 CMS数据库设计全文共5页,当前为第4页。 表编号 字段编号 字段名 中文名 类型 大小 默认值 允许空 说明 5000 0 CMS_Channel 网站栏目           5000 10 ChannelID 主键 int 4 1 0 主键,自增 5000 20 channelName 栏目名称 nvarchar 30 _ 0 栏目名称 5000 30 Sort 排序 int 4 10 0 小号在前 5000 40 URL 栏目的网址 nvarchar 50 _ 0 新闻内容     5005 0 CMS_ArticleClass 内容的n级分组           5005 10 ClassID 主键 int 4 1 0 主键,自增
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值