数据库总章

数据库简介

概念存储和管理数据的仓库,数据按照一定的格式进行存储, 可以高效得对数据库中的数据进行增加、修改、删除、查询等操作

作用: 更方便、更高效的对数据进行管理和持久化储存

分类:关系型(二维结构)和非关系型
特点:持久化存储;读写速度极高;保证数据的有效性

关系型数据库

通过二维表格来表示数据与数据之间的关系,一个数据库可以包含多个表。

  • 二维表的 称为 记录元组
  • 二维表的 称为 字段属性可以用来标识记录的字段称为关键词
  • 多行记录和多列字段组成一张表
  • 多个表组成一个数据库
姓名工号性别出生日期手机号
阿大0011989.02.03188****1214
阿二0021989.05.21137****6254
阿三0032000.03.06137****9562

如表3-1所示:
三名员工所占有的三行都是记录
每列表头(如:工号,姓名等)皆为字段
其中每个记录中的工号是唯一的,也就是字段工号可以用来标识记录,所以工号可为关键词

数据库管理系统

数据库管理系统(RDBMS)是为管理关系型数据库而设计的应用软件,若要使用关系型数据库就需要安装数据库管理系统。

其分为: 服务端软件客户端软件

关系型数据库服务端软件

作用:主要负责接受客户端的请求,管理数据,和操作数据,每个数据库里面会有一系列 数据文件(存储有数据)。 其实数据库就是一系列数据文件的集合

关系型数据库客户端软件

作用:主要负责和关系型数据库服务端软件进行通信, 例如:发送用户请求至服务端,并显示请求结果

分类:shell终端 和 图形化界面(navicat

工作流程

在这里插入图片描述
实现过程:

  1. 用户操作关系型数据库客户端,实现数据库相关操作。
  2. 关系数据库客户端借助网络使用SQL语言和关系型数据库服务端进行数据通信
  3. 关系型数据库服务端管理着不同的数据库,根据用户的操作指令去操作指定数据库中的数据文件里的数据

注意:SQL语言是数据库客户端和服务端通讯的唯一语言

数据库存储数据要求

为了更加准确的存储数据,保证表中数据的准确性和完整性,可以在创建表的时候,为表字段添加一些强制性的验证(如:数据类型和约束)

数据类型

作用:在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来

使用原则

  • 大小选择 看数据的表示范围 选择尽可能小的数据类型
  • 有无符号 看数据由没有负数
  • 定长变长 看数据长度是否固定

数据库明细连接

MYSQL 本人博客链接

Redis 本人博客链接

数据库设计三范式

第一范式(1NF): 强调的是字段的原子性,即列不能够再分成其他几列。
第二范式(2NF): 满足 1NF,另外包含两部分内容,一是表必须有一个主键;二是非主键字段 必须完全依赖于主键,而不能只依赖于主键的一部分。
第三范式(3NF): 满足 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。

第一范式

如图所示的表结构:

在这里插入图片描述

说明:

  • 不满足第一范式,
  • 要符合 1NF 我们只需把列拆分,即:把 contact 字段拆分成 name 、tel、addr 等字段。

第二范式

如图所示的表结构:

第二范式的问题

说明:

  • Discount(折扣),Quantity(数量)完全依赖于主键(OrderID)
  • 而 UnitPrice单价,ProductName产品名称 只依赖于 ProductID
  • 所以 OrderDetail 表不符合 2NF
  • 可以把【OrderDetail】表拆分为【OrderDetail】(OrderID,ProductID,Discount,Quantity)和【Product】(ProductID,UnitPrice,ProductName)这样就符合第二范式了。

第三范式

如图所示的表结构:

第三范式的问题

说明:

  • OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF
  • 但是 CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF
  • 可以把【Order】表拆分为【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)从而达到 3NF。

E-R模型

E-R模型即实体-关系模型,E-R模型就是描述数据库存储数据的结构模型。
在这里插入图片描述

  • 实体: 用矩形表示,并标注实体名称
  • 属性: 用椭圆表示,并标注属性名称,
  • 关系: 用菱形表示,并标注关系名称
    • 一对一:一个人对应一张身份证,一张身份证对应一个人
    • 一对多:一个班级拥有多个学生,一个学生只能够属于某个班级
    • 多对多:一个学生可以选修多门课程,一个课程可以被多个学生选修

关系处理

  • 一对一
    在这里插入图片描述
    在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面

  • 一对多
    在这里插入图片描述
    班级是1端,学生是多端,多端里面应该放置1端的主键,即学生表里面放置班级表中的主键

  • 多对多关系
    在这里插入图片描述
    对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表示1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值