浅谈MySQL数据库的设计流程

article/2025/9/19 8:43:46

系列文章目录

本次文章的内容是记录有关于MySQL学习中对数据库设计流程的一个记录和在设计流程中需要注意的一些事情。


文章目录

  • 系列文章目录
  • 前言
  • 一、数据库设计
    • 1.1为什么要着重于对数据库的详细设计
    • 1.2数据库的设计流程
      • (1)根据应用系统的功能,分析数据实体(实体就是要存储的数据对象)
      • (2)提取实体的数据项(数据项就是实体的属性)
      • (3)根据数据库设计三范式规范视图的数据项
      • (4)绘制E-R图(实体关系图,只管展示实体与实体之间的关系)
      • (5)数据库建模
      • (6)利用设计好的数据库模型思路进行建库建表
  • 总结


前言

MySQL数据库作为数据存储的介质为应用系统提供数据存储的服务,我们如何设计出合理的数据库,数据表以满足应用系统的数据存储需求呢?


提示:以下是本篇文章正文内容,下面案例可供参考

一、数据库设计

1.1为什么要着重于对数据库的详细设计

作为一个后端开发者而言,在编写服务器的同时对于数据库的设计同样是非常重要的,那么深入理解一下该如何进行数据库的一个设计。

  • 车库:用于存放车辆的,车库都需要划分车位,若不划分车位,车子杂乱无章的存放可能会导致车辆堵塞,同时也可能造成场地的浪费为了使得一个有限的场地能够停放尽可能多的车辆所以不得不进行对车库的一个规范。同理,对于数据库而言为了使的有限的内存空间(尽管平时可能电脑的内存完全够,但是我们还是要有这个意识,这是开发者的基本素养,哈哈~~)
  • 数据库:用于存放数据的,我们需要设计合理的数据表–能够完成数据的存储,同时能够方便地提取应用系统所需的数据。

1.2数据库的设计流程

数据库是为应用系统服务的,数据库存储什么样的数据也是由应用系统来决定的,当我们进行应用系统开发时,我们首先要明确应用系统的功能需求 – 软件系统的需求分析

(1)根据应用系统的功能,分析数据实体(实体就是要存储的数据对象)

如以下案例

  • 电商系统中的数据实体有:商品、用户、订单…
  • 教务管理系统:学生、课程、成绩…

(2)提取实体的数据项(数据项就是实体的属性)

如以下案例

  • 商品(商品名称、商品图片、商品描述…)
  • 用户(姓名、登录名、登录密码…)

(3)根据数据库设计三范式规范视图的数据项

如果实体的数据项不满足三范式,可能会导致数据的冗余,从而引起数据的维护困难、破坏数据一致性等问题

数据库设计三范式:
第一范式:数据表字段不可再分
错误 案例如下:
图中将“联系方式”进行了再划分,这就违反了第一范式中的字段不可再分性
在这里插入图片描述
改正如下:
将“联系方式”中的字段提取出来进行单独自修改成字段加入数据表中在这里插入图片描述

第二范式:不存在非关键字段对关键字段的部分依赖
错误案例如下:
在这里插入图片描述
改正如下:
单独分离出来作为三个新表出现
在这里插入图片描述

第三范式:不存在非关键字段之间的传递依赖(即不存在简接对主键的依赖)
错误案例如下:
在这里插入图片描述
改正如下:
在这里插入图片描述

(4)绘制E-R图(实体关系图,只管展示实体与实体之间的关系)

在这里插入图片描述

案例如下

在这里插入图片描述

(5)数据库建模

  • 三线图进行设计表设计
    如下图students表的三线图设计
    在这里插入图片描述
  • 利用各种开发工具进行设计例如PDMan、PowerDesigner等

(6)利用设计好的数据库模型思路进行建库建表

使用建模工具后或者使用Navicat工具进行最后的SQL建库语句的编写

总结

以上就是今天要讲的内容,本文仅仅简单介绍了数据库的设计流程,以及自己需要注意的一些问题,作为自己今天的收获,最后祝我们能够在开发这条路上一起前进互助。

http://chatgpt.dhexx.cn/article/BjU54o7i.shtml

相关文章

数据库设计说明书

目录 1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2外部设计 2.1标识符和状态 2.2使用它的程序 2.3约定 2.4专门指导 2.5支持软件 3结构设计 3.1概念结构设计 3.2逻辑结构设计 3.3物理结构设计 4运用设计 4.1数据字典设计 4.2安全保密设计 数据库设计说明…

MySQL之数据库设计六个步骤

前言 今天有个前同事去面试,被面试官问了一个这样的问题:如果让你去设计数据库你改怎么设计?或者有哪些步骤?被问到这里可能我们就懵逼了,是啊,该怎么去设计呢。 在软件开发的过程中,数据库设…

用mysql设计数据库的步骤_数据库设计的主要步骤是什么

数据库设计的主要步骤是什么 发布时间:2020-08-12 10:00:24 来源:亿速云 阅读:141 作者:小新 这篇文章给大家分享的是有关数据库设计的主要步骤是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过…

关系数据库设计步骤

看这篇文章之前,希望大家能够对数据库系统、数据模型有知识储备,如果有疑惑可以看我的另外一篇博客数据库系统。 还需要对关系型数据库基础知识有所了解,有疑惑朋友可以看关系型数据库基础知识 文章目录 数据库设计的步骤概念结构设计E-R模型…

数据库设计步骤(超级详细)|数据库

数据库设计 我们先来看这样一个问题 假如遇到下面这样的设计需求,我们如何完成数据库的设计呢? 设计需求: 假设商品经销商有基本实体集:供应商Vendors、产品目录Products、顾客信息Customers和顾客订单Orders。 各个实体的属性集…

nginx跨域|配置nginx跨域详解

在项目的nginx配置目录中,添加如下命令即可解决跨域问题,亲测有效。 # $http_origin动态获取请求客户端请求的域 不用*的原因是带cookie的请求不支持*号 add_header Access-Control-Allow-Origin $http_origin; # 表示请求头的字段 动态获取 add_head…

nginx跨域配置步骤

假设接口服务器地址:http://192.168.2.1:8081 1、先查看接口本身是否能调通(随便找个get接口在浏览器测试下,如:http://192.168.2.1:8081/testmanage/test/deleteTest) 2、找到nginx的压缩目录,修改conf/…

Nginx跨域配置详解

一、概念 Ningx,是轻量级、开源的web服务器,具有高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。 优势: 以事件驱动的方式编写,使其具有高并发高性能可扩展性好热部署 应用场景 静态资源服务&#xff0…

CORS解决跨域问题(Nginx跨域配置)

背景: 同域:域名(父域名和子域名都相同),端口,协议都相同 跨域:非同域的请求 问题: 浏览器上,我们访问127.0.0.1:80,但是127.0.0.1:80 会去请求127.0.0.1:…

Nginx配置反向代理解决跨域问题

通过Nginx配置反向代理结果跨域问题 第一步:下载Nginx 一、下载 官网下载地址:http://nginx.org/en/download.html 我下载的版本:http://nginx.org/download/nginx-1.15.2.zip (我也是参考网上的步骤,所以下载的不是…

Nginx配置跨域及解析

一、代码 先放上nginx配置代码 # 以代理百度地图api为例location /mymap/ {proxy_pass http://api.map.baidu.com/;# 配置跨域代理 add_header Access-Control-Allow-Origin $http_origin;add_header Access-Control-Allow-Methods GET,POST,OPTIONS…

nginx配置详解,nginx跨域问题

文章目录 前言更改hosts文件新增velocityerp.top.conf配置文件nginx配置header参数(解决跨域),接口方配置nginx反向代理(解决跨域),发送方配置nginx端口转发(解决跨域)nginx内部跳转nginx配置优先级详解 前言 本文介绍…

nginx 配置支持跨域

在nginx.conf文件内,server中加入以下内容 #允许跨域请求的域,*代表所有 add_header Access-Control-Allow-Origin *; #允许带上cookie请求 add_header Access-Control-Allow-Credentials true; #允许请求的方法,比如 GET/POST/PUT/DELETE a…

通过Nginx来解决跨域问题

Nginx跨域实现 首先大家要搞清楚什么是跨域,为什么会有跨域情况的出现。哪些情况属于跨域? 跨域:由于浏览器的同源策略,即属于不同域的页面之间不能相互访问各自的页面内容 注:同源策略,单说来就是同协议&a…

Nginx 解决跨域

项目准备 前端网站地址:http://localhost:8080 服务端网址:http://localhost:8081 确认服务端是没有处理跨域的,先用postman测试服务端接口是正常的 当前端网站8080去访问服务端接口时,就产生了跨域问题,那么如何解…

1 Nginx跨域配置

跨域问题在之前的单体架构开发中,其实是比较少见的问题,除非是需要接入第三方SDK时,才需要处理此问题。但随着现在前后端分离、分布式架构的流行,跨域问题也成为了每个Java开发必须要懂得解决的一个问题。 跨域问题产生的原因 产…

Nginx跨域配置

随着越来越多的项目走向了前后端分离,前端服务,需要访问到不同的后端地址,经常遇到跨域问题。本文主要介绍使用Nginx解决跨域问题。 1.什么是跨域 由于浏览器的同源策略,用来限制从一个源加载的文档或脚本与来自另一个源的资源进…

flyai中的dataset对象

Help on Dataset in module flyai.dataset object:class Dataset(builtins.object) | Methods defined here: | | __init__(self, epochs5, batch32, val_batch32) | :param epochs: 训练的轮次,最大不超过100 | :param batch: 训练的批次大小&#xff…

FlyAI资讯:Uber正式开源分布式机器学习平台:Fiber

摘要:在过去的几年中,计算机不断增强的处理能力推动了机器学习的进步。算法越来越多地利用并行性,并依赖分布式训练来处理大量数据。然而,随之而来的是增加数据和训练的需求,这对管理和利用大规模计算资源的软件提出了…