数据库数据表设计思想二

数据库数据表设计思想二

引言✨🌟帅的人都先看我

数据库设计一般交由后端开发人员直接设计(无论是否有经验),而不会让经验丰富的开发人员包揽(做评审即可)。

  1. 数据没必要一次完整的设计出来,开发过程中,难免会对数据库进行调整的,保证数据的骨架没有问题 【 增删字段、添加中间表、加视图都不会造成多大的影响 】
  2. 数据库设计是后端部分需求转换的过程(一般业务),类比原型设计是前端部分需求转化的过程,通过数据库分库、分表就能大致划分后端功能结构,如果后端开发人员跳过了数据库的设计,大概率会出现分不清功能结构的状况,只能根据页面原型猜测需要哪些接口,这种看到一个功能开发一个接口的工作模式,大多数情况会出现开发进度不可控、开发了多余的接口、漏写接口的问题,故数据库设计是每个后端人员都必须掌握的技能

✨命名规范

在这里插入图片描述

  1. 分库(由架构师或技术负责人完成)
  2. 分表(由开发人员完成)
  3. 增加冗余字段、视图(由开发人员完成)

另外,索引、段类型、字段长度等,实际开发过程中添加即可

1 分库(由架构师或技术负责人完成)

1 分库原则(每个子系统对应一个数据库)

在这里插入图片描述

2 目的

  1. 降低单个数据库的数据表的复杂度(更容易理解)
  2. 后续扩展服务器是,可以更有针对性地扩展(扩展压力大的)

2 分表(由开发人员完成)

按照当前模块的业务功能而定的。

分表后,一个模块的基本功能大概就勾勒出来了,在开发的时候明显就能分清那些功能是主要的、哪些是次要的,就能明确开发计划,便于前后端联调分段完成

1 从主功能逻辑中抽离主要的几张表

在这里插入图片描述

2 根据功能点补充表

在这里插入图片描述

3 检查多对多关系

在这里插入图片描述

1 多对多关系解决办法
1 使用字段记录

适合改动频率低或不更新字段

2 建立中间表

适合改动频率较高场景

3 增加冗余字段、视图(由开发人员完成)

评论列表既要显示评论内容,还要显示博客名称—>添加冗余字段,在评论表中记录博客名称(博客表中已记录博客名称)

在这里插入图片描述

4 增加视图(由开发人员完成)

数据库视图(Database View)是一个虚拟的表,它基于一个或多个实际数据库表的查询结果而创建。视图不存储实际数据,而是提供对底层数据的一种虚拟表示。实际上就是一组预先写好的sql语句

-- 创建一个名为 "EmployeeView" 的视图,该视图从 "Employees" 表中选择特定的字段
CREATE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE Department = 'Sales';

热门博客列表

在这里插入图片描述

热门:根据点赞数、收藏数、评论数乘以权重

热门博客列表可使用视图,建立博客热度虚拟表

这样用过一条sql就可以查询热度前三的博客(实际项目需要添加redis缓存)

5 视图、存储过程、函数的解释

1 存储过程(Stored Procedure)

  • 定义:存储过程是一组 SQL 查询和操作的集合,它们可以在数据库中存储并命名,通常用于执行一系列数据库操作和事务处理。
  • 示例代码:下面是一个示例存储过程,它接受两个参数并将它们相加并插入到数据库中:
DELIMITER //
CREATE PROCEDURE AddNumbers(IN num1 INT, IN num2 INT)
BEGIN
    INSERT INTO CalculationResults(Result) VALUES (num1 + num2);
END //
DELIMITER ;

2 函数(Function)

  • 定义:函数是可调用的代码块,它接受输入参数并返回单个值。函数通常用于计算和返回一个值,例如执行数学运算、字符串操作或聚合数据。
  • 示例代码:下面是一个示例函数,它接受两个参数并返回它们的和:
DELIMITER //
CREATE FUNCTION AddNumbers(num1 INT, num2 INT) RETURNS INT
BEGIN
    DECLARE result INT;
    SET result = num1 + num2;
    RETURN result;
END //
DELIMITER ;

3 视图(View)

  • 定义:视图是虚拟的表,基于一个或多个实际数据库表的查询结果而创建。视图不存储数据,而是提供对底层数据的一种虚拟表示。
  • 示例代码:下面是一个示例视图,它从一个名为 “Employees” 的表中选择特定的字段,并将其命名为 “EmployeeView”:
CREATE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees;

4 区别

  1. 视图

    不是直接调用,而是通过查询引用,视图不返回值,但提供查询结果,简化数据访问、隐藏底层表的复杂性和提供虚拟数据表示

  2. 存储过程

    通过名称调用,没有返回值,执行一系列数据库操作和事务处理。

  3. 函数

    函数有明确定义的返回值,可嵌入sql语句查询中

  4. 用途

    • 存储过程用于执行一系列数据库操作和事务处理。
    • 函数用于计算和返回值。
    • 视图用于简化数据访问、隐藏底层表的复杂性和提供虚拟数据表示。
  5. 返回值

    • 存储过程通常不返回结果集,但可以使用输出参数返回结果。
    • 函数返回一个值(或表格变量)。
    • 视图不返回值,而是提供对数据的虚拟视图。
  6. 调用方式

    • 存储过程通过名称调用,可以执行一系列操作。
    • 函数可以嵌入到 SQL 查询中,并返回单一值。
    • 视图不是直接调用,而是通过查询引用。
  7. 数据操作

    • 存储过程可以执行数据插入、更新、删除等修改操作。
    • 函数通常不执行修改操作,而是计算和返回值。
    • 视图本身不执行数据操作,但可以在其基础上执行操作。
  8. 返回类型

    • 存储过程没有返回类型,但可以使用输出参数传递值。
    • 函数有明确定义的返回类型。
    • 视图不返回值,但提供查询结果。
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NIIMP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值