全栈开发流程——数据表的分析与创建详解实战演示(一)

简介: 全栈开发流程——数据表的分析与创建详解实战演示(一)

引言

当我们拿到项目需求后,有时候可能会感到迷茫,不知道整体流程和接下来该做什么。为了能够不断实战并快速提高自己,我们需要找到适合自己的一套开发流程。这样我们就能够有条不紊地进行项目开发,并且及时发现和修正自己的不足之处


以最常用的java全栈开发为例,这个系列以MySQL数据库,后端以SpringBoot,MybatisPlus,Redis,Spring security,前端以vue,微信小程序的技术栈组合,进行步骤细化。


环境安装与前后端启动

要完成目标项目首先我们要确定合适的技术栈组合,然后检查环境是否安装正确完整

  • 首先是数据库的安装配置

常用的主要有mysqlmongodb还有可视化工具HeidiSQL

  • 接下来就是后端还有前端的环境安装

jdk

idea

maven


redis

node

vscode

  • 当然还有微信开发工具

这些工具可自行安装,出现问题可在评论区留言讨论


启动过程

// 前端(VsCode)
// 1. 下载安装 Node.js(18 版本)
// 2. 安装 Vue 脚手架
npm i -g @vue/cli
// 3. 安装前端依赖
npm i
// 4. 启动前端项目
npm run dev
// 后端(Idea) 
// 2. 配置 Maven、开启redis(否则系统无法启动)
// 3. 导入数据库,建议 MySQL8,若 5.7 版本需设置编码为 UTF-8,否则会提示密码错误
// 4. 等待后端依赖下载,完成后启动项目,或编译后执行 mvn spring-boot:run


数据库的设计

1.首先我们要确定项目需求

拿最常用的登录系统为例,最简单的自然是一种用户,我们使用数据库存储他的账号和密码。

  • 我们自定义一个题目设计三种用户登录:管理员教师学生
  • 我们自定义一个题目设计三种用户登录的规则:一个管理员可能管理多个教师/学生一个教师可能教授多个学生

以上定为项目需求

2.我们要明确数据流程

根据自拟的登录系统题目来看,我们来想象一下数据流程

用例名称:管理员登录

参与者:管理员
前置条件:管理员已注册账号
后置条件:管理员成功登录系统
基本流程:
管理员打开管理员端应用。
系统显示登录界面。
管理员输入用户名和密码。
点击登录按钮。
系统验证用户名和密码是否匹配。
如果验证通过,系统跳转至管理员主页面。
如果验证失败,系统提示用户名或密码错误。


用例名称:管理员注销

参与者:管理员
前置条件:管理员已登录系统
后置条件:管理员成功注销账号
基本流程:
在管理员主页面,点击注销按钮。
系统弹出确认注销提示框。
点击确认注销按钮。
系统退出管理员账号,并跳转至登录页面。

用例名称:教师注册

参与者:教师
前置条件:教师未注册账号
后置条件:教师成功注册账号
基本流程:
教师打开用户端应用。
系统显示注册页面。
教师输入工号和密码。
点击注册按钮。
系统验证工号是否已被注册。
如果工号未被注册,系统将教师信息存储至数据库。
如果工号已被注册,系统提示工号已被注册,请重新输入。

用例名称:学生注册

参与者:学生
前置条件:学生未注册账号
后置条件:学生成功注册账号
基本流程:
学生打开用户端应用。
系统显示注册页面。
学生输入学号和密码。
点击注册按钮。
系统验证学号是否已被注册。
如果学号未被注册,系统将学生信息存储至数据库。
如果学号已被注册,系统提示学号已被注册,请重新输入。

3.那么我们接下来就要确定所需要存储的数据类型和关系

需要存储的数据类型和可能如下:


管理员信息:


用户名

密码

角色权限

教师信息:


用户名

密码

工号

基本信息(姓名、性别、联系方式等)

学生信息:


用户名

密码

学号

基本信息(姓名、性别、联系方式等)

管理员与教师/学生的关系:


一个管理员可能管理多个教师/学生

教师与学生的关系:


一个教师可能教授多个学生

4. 画E-R图

   +--------------+       +--------------+       +--------------+
   |  Administrator |       |    Teacher   |       |    Student   |
   +--------------+       +--------------+       +--------------+
   | -username    |       | -username    |       | -username    |
   | -password    |       | -password    |       | -password    |
   | -role        |       | -employee_id |       | -student_id  |
   +--------------+       +--------------+       +--------------+
           |                    |                     |
           |                  have                  |
           |                  many                  |
           |                    |                     |
           |                  +-----------+          |
           +------------------|  Manages  |----------+
                              +-----------+
                              | -manager_id |
                              | -teacher_id |
                              | -student_id |
                              +-----------+
                                     |
                                     |
                               +-----------+
                               |  Teaches  |
                               +-----------+
                               | -teacher_id |
                               | -student_id |
                               +-----------+

这个ER图较为简单,主要就是管理员,老师,学生之间的关系,根据ER图可以一目了然了 ,那么接下来我们根据ER图进行建表

5.设计数据库表结构

根据提供的ER图,设计数据库的表结构如下:

表名:Administrator
字段名称:username,password,role
字段类型:VARCHAR,VARCHAR,VARCHAR
约束:无
表名:Teacher
字段名称:username,password,employee_id
字段类型:VARCHAR,VARCHAR,INT
约束:无
表名:Student
字段名称:username,password,student_id
字段类型:VARCHAR,VARCHAR,INT
约束:无
表名:Manages
字段名称:manager_id,teacher_id,student_id
字段类型:INT,INT,INT
约束:外键约束,其中manager_id参考Administrator表的username字段,teacher_id参考Teacher表的employee_id字段,student_id参考Student表的student_id字段
表名:Teaches
字段名称:teacher_id,student_id
字段类型:INT,INT
约束:外键约束,其中teacher_id参考Teacher表的employee_id字段,student_id参考Student表的student_id字段

结构既然已经确定,那么就开始建库建库了

6.建库

CREATE DATABASE SchoolDB;

根据以上的表结构设计,可以创建一个名为"SchoolDB"的数据库,并在该数据库中创建以下的表:

表名:Administrator

字段名 类型 约束
username VARCHAR
password VARCHAR
role VARCHAR


表名:Teacher

字段名 类型 约束
username VARCHAR
password VARCHAR
employee_id INT


表名:Student

字段名 类型 约束
username VARCHAR
password VARCHAR
student_id INT


表名:Manages

字段名 类型 约束
manager_id INT 外键参考Administrator表的username字段
teacher_id INT 外键参考Teacher表的employee_id字段
student_id INT 外键参考Student表的student_id字段

表名:Teaches

字段名 类型 约束
teacher_id INT 外键参考Teacher表的employee_id字段
student_id INT 外键参考Student表的student_id字段


以上表结构中的"INT"类型表示整数类型,"VARCHAR"类型表示可变长度字符串类型。在表结构中的约束部分,外键约束指明了该字段必须参考另一个表的特定字段,并且保证参考的字段值在参考表中存在。

7.运行sql语句

可以使用以下的SQL语句来创建表和约束:


创建Administrator表:

CREATE TABLE Administrator (
    username VARCHAR,
    password VARCHAR,
    role VARCHAR
);

创建Teacher表:

CREATE TABLE Teacher (
    username VARCHAR,
    password VARCHAR,
    employee_id INT
);

创建Student表:

CREATE TABLE Student (
    username VARCHAR,
    password VARCHAR,
    student_id INT
);


创建Manages表:

CREATE TABLE Manages (
    manager_id INT,
    teacher_id INT,
    student_id INT,
    FOREIGN KEY (manager_id) REFERENCES Administrator(username),
    FOREIGN KEY (teacher_id) REFERENCES Teacher(employee_id),
    FOREIGN KEY (student_id) REFERENCES Student(student_id)
);


创建Teaches表:

CREATE TABLE Teaches (
    teacher_id INT,
    student_id INT,
    FOREIGN KEY (teacher_id) REFERENCES Teacher(employee_id),
    FOREIGN KEY (student_id) REFERENCES Student(student_id)
);

这样就可以根据给定的表结构,在名为"SchoolDB"的数据库中创建以上的表。

8.运行sql看看是否出错以及修改方法

在使用上述代码运行过程中遇到了两个代码错误


  • 未指定字段类型和长度
  • 外键约束在 Manages 表中,参照的列和被参照的列类型不兼容。manager_id 是 INT 类型,而 Administrator 表中的 username 列是 VARCHAR(255) 类型。


则完整代码如下,并正确运行

CREATE DATABASE SchoolDB;
USE SchoolDB;
CREATE TABLE Administrator (
    username VARCHAR(255),
    password VARCHAR(255),
    role VARCHAR(255),
    PRIMARY KEY (username)
);
CREATE TABLE Teacher (
    username VARCHAR(255),
    password VARCHAR(255),
    employee_id INT,
    PRIMARY KEY (employee_id)
);
CREATE TABLE Student (
    username VARCHAR(255),
    password VARCHAR(255),
    student_id INT,
    PRIMARY KEY (student_id)
);
CREATE TABLE Manages (
    manager_id VARCHAR(255),
    teacher_id INT,
    student_id INT,
    FOREIGN KEY (manager_id) REFERENCES Administrator(username),
    FOREIGN KEY (teacher_id) REFERENCES Teacher(employee_id),
    FOREIGN KEY (student_id) REFERENCES Student(student_id)
);
CREATE TABLE Teaches (
    teacher_id INT,
    student_id INT,
    FOREIGN KEY (teacher_id) REFERENCES Teacher(employee_id),
    FOREIGN KEY (student_id) REFERENCES Student(student_id)
);

运行如图:

Administrator

Student

Teacher



9.验证数据库和表的创建

验证库:

DESCRIBE SchoolDB;


验证表:

DESCRIBE Administrator;
DESCRIBE Teacher;
DESCRIBE Student;


总结

在我们刚刚拿到项目时,首先,需要详细了解业务需求和数据流程,明确数据的输入和输出,确定需要存储的数据类型和关系。再设计数据库,其中可以画出ER图进行辅助,那么建好数据库之后,我们就完成了第一个工作——数据库设计和创建


那么接下来,就正式开始后端开发

相关文章
|
6月前
|
SQL 存储 数据库
数据库开发表操作案例的详细解析
数据库开发表操作案例的详细解析
39 0
|
XML 开发框架 前端开发
J2EE之自定义框架知识(下篇 综合运用增删改查)
J2EE之自定义框架知识(下篇 综合运用增删改查)
61 0
|
2月前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
3月前
|
编译器 API C#
C# 12 新增功能实操!
C# 12 新增功能实操!
|
4月前
|
存储 关系型数据库 MySQL
MySQL数据库开发进阶:精通数据库表的创建与管理22
【7月更文挑战第22天】数据库的创建与删除,数据表的创建与管理
48 1
|
6月前
|
数据库
第四章数据查询基础
第四章数据查询基础
|
6月前
|
SQL 存储 关系型数据库
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
374 0
|
数据可视化 安全 关系型数据库
从零开始安装MySQL数据库,并使用可视化DBevaer创建数据 | 开始搞全栈(一)
从零开始安装MySQL数据库,并使用可视化DBevaer创建数据 | 开始搞全栈(一)
275 0
从零开始安装MySQL数据库,并使用可视化DBevaer创建数据 | 开始搞全栈(一)
|
测试技术 数据安全/隐私保护 索引
DAO社区治理系统模式开发规则详情 | DAO社区治理系统开发源码示例(Python语言版)
DAO(Data Access Object)社区治理模式是一种去中心化的社区治理模式,它将权力下放到社区中,让社区成员自主决策、自我管理,从而实现社区的自主治理。在DAO社区治理模式中,权力下放到社区中,社区成员可以自由地发表自己的意见和建议,并且能够直接参与到社区的决策过程中。
|
SQL 关系型数据库 MySQL
数据库学习-复习作业示例(电子商城项目)【带源码】
数据库电子商城项目示例,包含源码,清楚明了。
116 1
数据库学习-复习作业示例(电子商城项目)【带源码】