随笔 - 38  文章 - 0  评论 - 0  阅读 - 6120

数据库设计

ACID 原则

  • 原子性:要么都成功,要么都失败
  • 一致性:事务前后的数据完整性要一致
  • 隔离性:多个用户并发的访问数据库时,数据库为每一个用户开启的事务不能被其他事务的操作所干扰,事务之间相互隔离
  • 持久性:事务一旦提交则不可逆,被持久化到数据库中

脏读 幻读 不可重复读

  • 脏读:一个事务读取了另一个事务未提交的数据
  • 不可重复读:在一个事务内读取表中的某一行数据,多次读取的结果不同
  • 虚读(幻读):在一个事务内读取到了别的事务插入的数据,导致见后读取不一致

索引

索引是帮助MySQL高效获取数据的数据结构。

索引就是数据结构

索引分类

  • 主键索引 (primary key)

    • 唯一的标识,主键不可重复,只能有一个列作为主键
  • 唯一索引 (unique key)

    • 避免重复的列出现,唯一索引可以重复,多个列都可以标识为唯一索引
  • 常规索引 (key/index)

    • 默认的,可以用index或key来设置
  • 全文索引 (fulltext)

    • 在特定的数据库引擎下才有 MyISAM
    • 快速的定位数据

在一个表中,主键索引只能有一个,可以有多个唯一索引

数据库的设计

  • 收集信息,分析需求:分析业务和需要处理的数据库的需求
  • 概要设计:设计关系图 E-R图

(未完,待续)

设计个人博客

  • 收集信息,分析需求

    • 用户表(用户登录和注销,用户的个人信息,写博客,创建分类)
    • 分类表 (文章的分类)
    • 文章表 (具体的文章的信息)
    • 有链表 (友链信息)
  • 标识实体(把需求落实到每一个字段)

三大范式

关系型数据库设计:三大范式的通俗理解 - 景寓6号 - 博客园 (cnblogs.com)

  • 第一范式

原子性:要求数据库的每一列都是不可分割的原子数据项,就是你的数据库的每一列信息都不可以再拆分,比如数据库有一列家庭信息可以拆分为人口,家庭地址,学校信息里有学历,大几,研几可以被拆分,就不符合第一范式

  • 第二范式

先得满足第一范式,第二范式需要保证数据库表中的每一列都和主键相关,不能只与主键一部分相关,每张表只描述一件事,内容得和主键有关

  • 第三范式

先得满足第一和第二范式

,第三范式需要确保数据库表中的每一列数据都和主键直接相关,而不能间接相关,个人理解在这主要是为了解决表的冗余问题

但是实际生产中,需要注意

  • 关联查询的表不得超过3张表
    • 考虑商业化需求和目标。数据库的性能更加重要
    • 在规范性能问题的时候,需要适当的考虑规范性
    • 故意给表增加一些冗余字段,就能在查询的时候夺标查询变成单表查询
    • 故意增加一些计算列(从大数据量降低为小数据量的查询:索引)
posted on   懵逼的程序小白  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示