从 0 到 1 设计数据库:需求→E-R 图→三范式→建表,一篇就够!(五)

分析设计网上书店数据库,并画E-R图         分析并设计网上书店数据库,绘制E-R图,网上书店具有如下功能: 1、会员的注册、登录 2、网上预订图书 3、图书信息浏览 训练技能点: 1、会将E-R图转换为表 2、理解数据规范化 4、将分析在SQL Server数据库中实现具体的表 Sql server三范式的理解: 第一范式:数组的每个属性只能包含一个值; 关系中的每个数组必须包含相同的数量的值; 关系中的每个数组一定不能相同。 第二范式:如果一个数据表已经满足第一范式,而且该数据表中的任何一个非 阅读详情

从 0 到 1 设计数据库:需求→E-R 图→三范式→建表,一篇就够!(五)

作者:鄢晓波

日期:2025-08-03

关键词:数据库设计、需求分析、E-R 图、三范式、表设计、中间表


全文可复制的 MySQL 代码 + 手绘示意图,跟着做就能跑通一个小型“书评网站”数据库。


一、为什么一定要先画蓝图?
没做需求分析就建库 ≈ 没图纸就盖楼:

  • 盖完发现缺楼梯(缺功能)
  • 多盖了 3 层(功能过度)
  • 楼歪了(数据不一致)

正确姿势:

需求定义 → 设计 → 开发 → 引入 → 运营

二、需求定义:把“一句话需求”拆成可落地的功能
以“书评网站”为例:

需求用户故事页面
用户注册我想注册账号注册页
浏览图书我想看最新图书图书列表
写评论我想给书打分图书详情+评论页
收藏图书我想收藏书单收藏夹

把讨论结果写成《需求定义文档》,所有人签字画押。


三、提取实体 & 属性:把“东西”变“表”
先把页面里出现的名词圈出来 → 实体 → 再补属性:

实体 属性示例
用户 用户名、密码、个人简介
图书 书名、作者、登记日期
评论 标题、内容、发表时间
收藏 用户ID、图书ID


四、E-R 图:一眼看懂“谁和谁勾搭”
用 3 个符号就能画:

  • 矩形:实体
  • 椭圆:属性
  • 菱形:关系(箭头指向“多”)

手绘示意图:

用户 1 ──────→ 多 评论
图书 1 ──────→ 多 评论
用户 多 ←───→ 多 图书   (收藏夹)

五、三范式:拒绝数据“自我复制”
把 Excel 大宽表拆成“乐高”小表。

5.1 第一范式 1NF:列里不能再套娃

非范式(×) 1NF(√)
一行存 3 个学生 一行只存 1 个学生

5.2 第二范式 2NF:把“依赖”拆开
把“课程名称→教师姓名”拆出去,单独建课程表。

5.3 第三范式 3NF:继续拆从属
“教师姓名→教师联系方式”再拆一层,独立教师表

最终得到 3 张小表:

  • 课程表(course)
  • 教师表(teacher)
  • 学生表(student)

六、建表实战:书评网站 4 张表

6.1 用户表 users

CREATE TABLE users (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  name        VARCHAR(50) NOT NULL,
  password    VARCHAR(100) NOT NULL,
  biography   TEXT,
  created_at  DATETIME DEFAULT CURRENT_TIMESTAMP
);

6.2 图书表 books

CREATE TABLE books (
  id            INT AUTO_INCREMENT PRIMARY KEY,
  title         VARCHAR(200) NOT NULL,
  author_name   VARCHAR(100) NOT NULL,
  created_at    DATETIME DEFAULT CURRENT_TIMESTAMP
);

6.3 评论表 reviews

CREATE TABLE reviews (
  id       INT AUTO_INCREMENT PRIMARY KEY,
  book_id  INT NOT NULL,
  user_id  INT NOT NULL,
  title    VARCHAR(200) NOT NULL,
  comment  TEXT NOT NULL,
  FOREIGN KEY (book_id) REFERENCES books(id),
  FOREIGN KEY (user_id) REFERENCES users(id)
);

6.4 收藏夹中间表 favorites(多对多)

CREATE TABLE favorites (
  id       INT AUTO_INCREMENT PRIMARY KEY,
  user_id  INT NOT NULL,
  book_id  INT NOT NULL,
  FOREIGN KEY (user_id) REFERENCES users(id),
  FOREIGN KEY (book_id) REFERENCES books(id),
  UNIQUE (user_id, book_id)   -- 防止重复收藏
);

七、命名规范:让同事一眼看懂

规则 好例子 坏例子
小写+下划线 user_id UserID
表名单数 book books
布尔 is_xx is_deleted delete_flag
外键统一 表名单数_id uid, bid 混用


八、一张脑图总结

需求 → 实体&属性 → E-R图 → 三范式 → 建表+约束

九、彩蛋:一键初始化脚本
复制即可跑通:

-- 一键建库
CREATE DATABASE book_review DEFAULT CHARSET utf8mb4;
USE book_review;

-- 上面 4 个建表语句跑一遍
-- 插几条演示数据
INSERT INTO users(name, password) VALUES ('alice','123'),('bob','456');
INSERT INTO books(title, author_name) VALUES ('MySQL 图解','Kimi');
INSERT INTO reviews(book_id, user_id, title, comment)
VALUES (1,1,'好书','通俗易懂');
INSERT INTO favorites(user_id, book_id) VALUES (1,1),(2,1);

至此,一个符合三范式、带外键、可扩展的书评数据库就设计完成啦!

如果觉得有用,记得点赞 + 收藏 + 转发!
在这里插入图片描述

数据库设计之学生选课系统 版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。     博客地址:http://blog.youkuaiyun.com/shuxiao9058     原始作者:季亚 一、概要设计 1.1 目的和意义     随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用 阅读详情

相关推荐

数据库 - 数据库设计和E-R(实体关系)模型

文章目录一,实体集1,实体集表示为表2,有复合属性的实体集3,有多值属性的实体集二,联系集1,联系集的定义与性质2,联系集的度三,映射基数四,键、码五,约束1,基数约束2,参与约束3,关系约束的另一种表示法六,E-R 图1,E-R 图1.2 角色2,具有三元联系的E-R图3,二元与非二元联系4,弱实体集七,扩展的E-R特性1,特化与概化2,对特化/概化的设计约束3,聚集4,E-R图表示法中使用的符...

壮壮不太胖的学习笔记 7454

MySQL实战篇0:数据库设计实战----从需求到建表的完整流程

电商订单系统数据库设计实践 本文记录了从零设计电商订单数据库的过程。通过需求分析确定核心实体(用户、订单、订单明细),绘制E-R图理清关系(用户-订单一对多,订单-明细一对多)。详细说明了各表字段设计,强调避免违反三范式(如不存储冗余的用户名)。提供了完整的建表SQL,包含合理的索引和外键约束。最后通过实际查询验证设计合理性,如按城市查询用户订单、查找购买特定商品的用户等。整个设计过程注重数据一致性和查询效率,为后续SQL优化奠定基础。

2301_76657443的博客 1374

使用crow E-R图描述数据库关系

在设计数据库模型时,使用E-R图的方式可以帮我们理清各数据库实体信息及实体与实体之间的关系。本文描述的为:E-R Crow画法 绘图工具: draw.io 离线版 文章目录1 E-R图2 E-R图说明2.1 属性2.2 关系2.3 实体3 图例及参考3.1 crow方法图列3.2 示例4 参考 1 E-R图 实体关系图(ERD)或ER模型代表任何系统中的数据。您可以使用它们来说明业务流程中数据的结构,或详细说明关系数据库中数据的存储方式。ER图不一定显示数据的处理方式或经过的确切过程,而是数据实体的结构和

Andy Tools 1万+

数据库设计之概念结构设计---------E-R图详解

0、试述采用E-R方法进行数据库概念设计的过程。 答:采用E-R方法进行数据库概念设计,可以分成3步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式进行优化,得到最终的E-R模式,即概念模式。 1、某大学实现学分制,学生可根据自己情况选课。每名学生可同时选修多门课程,每门课程可由多位教师主讲;每位教师可讲授多门课程。其不完整的E-R图如图1所

zxq1138634642的专栏 22万+

数据库设计 数据建模 E-R图 PowerDesigner 物理设计

数据建模是抽象,抽象是理解-区分-命名-表达现实世界需要理解:现实中的卡片、单据、表格、报表… …理解的标志是区分:表与表的区分,表内数据项的区分,数据项之间关系的区分,表之间关系的区分?区分的标志是命名:命名表、命名数据项、命名表之间的联系抽象的最终结果是正确的表达:用其他人能理解的表达方法来表达(E-R图/Crow's Foot/IDEF1X)1.现实世界的个体:个体是一个实际存在的且可以被识别的事物。可以是可接触的具体事物,如学生。也可以是不可接触的抽象概念,如课程。

Rain_0000的博客 3492

预定酒店的类图与E-R模型

本文主要对某年代澳大利亚某线上酒店预订网站进行数据库建模,相关的业务文档: https://download.youkuaiyun.com/download/qq_33559972/10366961 上一步的用例建模工作参考我上一篇博客,上面开头把澳大利亚写成了意大利,特此更正: https://blog.youkuaiyun.com/qq_33559972/article/details/80044209 ...

爱上牛奶巧克力 9365

数据库课程设计mysql——个人博客数据管理系统

本篇是我大二数据库课程的结课作业,想分享给大家,文中理解有误的地方,请多多指正~ 文章目录需求分析概念结构设计抽象出系统的实体2.2 设计E-R图全局E-R图逻辑结构设计数据库物理设计与实施创建数据库建立和管理基本表建立基本表与管理基本表插入数据建立和管理视图建立视图管理视图访问数据库数据查询数据更新数据库维护备份数据库创建触发器总结与心得 需求分析 随着互联网的发展,越来越多的人拥有了自己的个人博客。但是大多数采用的是网上别人做好的博客模板,众所周知,网上的模板并不是单独为个人而定制,而是面向大多数人

2302_77250325的博客 8743

数据库建表原则

 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个

lovegod12的专栏 8664

一篇文章教会你需求分析文档怎么写

首先我们先理解什么是需求分析,看下图 下面我们只讲解四个大阶段,这四个大阶段都是理论型的阶段,至于下面两个个阶段介均是实践型阶段,故不给予讲解。 一.需求分析 在这个阶段,我们主要是要分析项目的一个组织和结构。首先确定使用者,我们要知道自己的项目会有多少种角色,比如说接下来的举例是针对于一个培训平台的模式来进行讲解。 一个培训平台,我们能确定的角色有用户,机构以及管理员。确定完角色,接下来就是业务流程。什么叫业务流程?业务流程就是你...

普通天才的精彩博客 7万+

怎样在EA中画E-R图

一点睛 1什么是E-R图? E-R图也称为实体-联系图,提供了表示实体类型、属性和联系的方法,用来描述显示世界的概念模型。 2E-R包括什么? 实体:客观存在并可以相互区别的事物。 属性:实体所具有的一个属性。 关系:实体和实体之间以及实体内部的关系。 3E-R中的关系? 1对1:一个应聘人员对应一个应聘人员账号。 1对多:一个角色可以对应多个用户。...

实践求真知 6570

CubeMX实战:ETH+LWIP+FreeRTOS网络工程从零搭建与AC6编译优化

本文手把手教你使用STM32CubeMX从零搭建集成以太网(ETH)、LWIP协议栈和FreeRTOS的嵌入式网络工程。文章详细解析了外设配置、协议栈调优、任务规划等关键步骤,并重点分享了如何解决ARM Compiler 6(AC6)的兼容性问题,实现编译速度与稳定性的双重提升,助你快速构建稳定的网络应用原型。

n2o3p4的博客 410

mysql数据库的设计(三范式、E-R模型)

数据库设计 关系型数据库建议在E-R模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制定出表结构,这是项目开始的第一步 在开发中有很多设计数据库的软件,常用的如power designer,db desinger等,这些软件可以直观的看到实体及实体间的关系 设计数据库,可能是由专门的数据库设计人员完成,也可能是由开发组成员完成,一般是项目经理带领组员来完成 我们初学者现阶段不需要...

liucy113的博客 2850

CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(一)

CHB-MIT癫痫EEG脑电数据处理CHB-MIT头皮脑电图数据介绍CHB-MIT头皮脑电图数据下载CHB-MIT头皮脑电图数据处理提取原始数据滤波(0.1~50hz)数据分块(时间窗口) CHB-MIT头皮脑电图数据介绍 该数据库收集自波士顿儿童医院,其中包括患有难治性癫痫发作的儿科患者的脑电图记录。停用抗癫痫药物后最多持续几天对受试者进行监测,以表征其癫痫发作并评估其对手术干预的候选资格。 从22位受试者中收集了23个病例的记录(5例男性,3至22岁; 17例女性,1.5至19岁)。 (案例chb21是

AI_DOG的博客 1万+

[MySQL]E-R图转关系模型

一、转化原则 内容不变,形式改变; 实体一一对应(即,ER图中的实体 在对应的关系模型中也一定存在)。 二、E-R图联系类型 1:1 1:n n:m 三、实例 ①1:1联系类型 部门表: 部门号(主键) 部门名 1 开发部门 2 测试部门 3 销售部门 经理表: 经理号(主键) 经理名 电话 001 张三 1...

shichimiyasatone的博客 8810

Matlab实战:3种雷达间歇采样干扰的仿真与识别(附完整代码)

本文通过Matlab实战,详细仿真了雷达有源间歇采样干扰的三种核心样式:直接转发、重复转发和循环转发干扰。文章提供了完整的代码实现,并深入探讨了基于时频分析和循环平稳分析的特征提取与识别方法,为雷达抗干扰技术的学习与实践提供了清晰的工程实现路径。

weixin_29053695的博客 364

【数字图像处理第四版课后习题答案】第2章 数字图像基础(含英文原版)

如图 P2.3 所示,视网膜图像中与点相对应的直径 x 是由类似的三角形得到的。即得出 x = 0.085d。根据第 2.1 节中的讨论,并结合一些自由解释,我们可以将眼窝视为一个方形传感器阵列,拥有大约 337,000 个元素,这相当于一个大约 580×580 个元素的阵列。假设元素间距相等,则在 1.5 毫米长的直线上有 580 个元素和 579 个空间,共计 1,159 个。换句话说,如果一个点的直径 d<1.3×10-6 m,或者 d<15.3×10 m,眼睛就无法检测到这个点。

weixin_56463218的博客 1万+

软考大题做题技巧——数据流图、数据库E-R图、UML、算法、设计模式(干货!)

小编在软考最后一周,破釜沉舟的学习软考的大题,找到了一些大题的做题技巧,特此分享给大家,希望所有参加软考的同学都能尽自己百分百的努力,收获最好的结果。 做题时可以重点找一下每类问题考察的考点以及提问问题的形式,然后分析解题的方法。 【一】数据流图题: 本题考察的是软考书上第六章,结构化开发方法,主要是数据流图相关内容,重点难点部分是关于加工与数据流的相关知识,以及一些数据流平衡和数据流是否异...

Ariel_欢 1万+

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2933

MySQL 8.0 数据库设计实战:从E-R图到第三范式的5个关键步骤

本文详细介绍了MySQL 8.0数据库设计的完整流程,从E-R图构建到第三范式实现的5个关键步骤。通过电商系统实例,讲解如何将概念模型转换为关系模式,应用规范化理论消除数据冗余,并利用MySQL 8.0的高级特性进行物理优化和完整性控制,帮助软件设计师构建高性能、高可用的数据库系统。

weixin_34401479的博客 465

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致是财务顾问和会计人员最常遇到的棘手问题之一

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致问题主要源于四大原因:1)违规手工记账(最常见),直接通过总账录入资产科目凭证而未通过资产模块;2)折旧运行问题,包括执行失败、跨年度问题或配置冲突;3)主数据与配置错误,如科目确定或折旧键设置不当;4)业务流程遗漏,如单据未生成凭证或汇率差异。解决方案包括运行对账报表、检查凭证来源、补跑折旧及核对配置。关键预防措施是坚持"资产模块发起→自动生成凭证→总账审核"的标准流程。

金牌架构师 428

13、基因相似性度量的相关性及特征选择研究

本文研究了基因相似性度量和特征选择在生物学中的应用,详细介绍了GO术语相似性度量的多种方法,包括语义度量和路径长度度量,并分析了不同方法在酵母和人类数据集上的表现。研究发现,Avg-sum方法和基于路径长度的度量在多数情况下效果较好。此外,通过晚期辐射毒性预测的案例研究,探讨了特征选择的重要性及可能面临的过拟合和噪声干扰问题,并提出了相应的解决策略。

js777的博客 127

数据库:根据学校的业务规则画出E-R图以及数据库模型图,并构建一个简单的数据库

梳理完实体之间以及它们的属性后,我们要思考它们之间的代数关系,代数关系包括一对一、多对一/一对多、多对多(1-1、N-1/1-N、M-N)。接下来我们就要考虑每一个实体应该包含哪些属性,因为这在我们这道题中并没有表明,所以我们可以进行发散性思维,如学生必然是有学号的,当然还有姓名、性别、电话、邮箱等等,那么年级肯定要有编号、具有唯一性,科目有课程编号、课程名称,成绩有考试时间、考试成绩等。、姓名、性别、年级编号、手机号码、出生日期、家庭住址、邮箱、身份证号)4,成绩(学号、课程编号、考试时间、考试成绩)

AXDRXS的博客 3144

Python蓝色跳动的爱心(完整代码)

Python语言实现蓝色跳动的爱心的完整代码。 代码分析 这段代码使用了 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样。以下是对这段代码的详细分析: 用于创建图形用户界面(GUI)。 用于生成随机数,主要用于控制爱心图案的扩散效果。 中的 , , , 用于数学计算,生成爱心形状和扩散效果。 包含了 等常量,用于控制控件的对齐方式。 2. 全局变量定义 , : 定义画布的大小。 , : 爱心的中心坐标。 : 用于定义爱心形状的缩放

AIGC 1920

【0基础学习数据库】数据库设计(E-R图)

本文摘要:数据库设计是一个系统化的过程,主要包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、实施和维护六个阶段。需求分析阶段需明确用户的信息需求、处理需求及安全性要求,通过多种调查方法获取需求并建立数据字典。概念结构设计阶段将需求转化为E-R模型,需注意实体、属性和联系的划分原则。逻辑结构设计阶段将E-R图转换为关系模型,物理设计则优化存储和存取方法。数据库设计需重视基础数据,采用迭代方法,并解决命名、属性和结构冲突,最终通过规范化消除冗余,建立高效可靠的数据库系统。

2301_79701725的博客 1243

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

E-R图转成关系规则及范式理解

E-R模型,是下午题的一个必考题,遇到这样的题,最好是能脑补出数据库中的二维表格。 在要求添加关系时,一定要审好题,题目是要求添加几个关系。不同的要求,添加的关系也完全不一样。 1、E-R模型:实体一联系模型 实体是矩形来表示的。实体的特征就是属性。属性用椭圆表示。 联系,有一对多,一对一,一对多(E1每个实体与另一个实体集E2中任意个实体0或多个有联系,而E2中每个实体最多只有一个与E1...

guangod的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数据库三大范式、E-R图

第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性; 例如:userInfo:山东省烟台市 131777368781 userAds:山东0省烟台市 userTel:131777368781 第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描...

qq_40722284的博客 3万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 数据库防坑指南:一文吃透数据类型 + 约束 + 事务 + 死锁!(四)
下一篇: 从 0 到 1 安全运营数据库:内部部署 vs 云服务、成本、备份、加密全攻略(六)
andyyah晓波
博客等级 码龄7年 3368粉丝 454原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值