Mysql梳理1——数据库概述(下)

YIDUY笔记来源:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 https://www.bilibili.com/video/BV1iq4y1u7vj

目录

[11.6 关系型数据库设计规则](#11.6 关系型数据库设计规则)

[11.6.1 表、记录、字段](#11.6.1 表、记录、字段)

[11.6.2 表的关联关系](#11.6.2 表的关联关系)

表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示

[11.6.2.1 一对一关联(one-to-one)](#11.6.2.1 一对一关联(one-to-one))

[16.6.2.2 一对多关系(one-to-many)](#16.6.2.2 一对多关系(one-to-many))

[16.2.2.3 多对多(many-to-many)](#16.2.2.3 多对多(many-to-many))

[16.2.3.4 自我引用(Self reference)](#16.2.3.4 自我引用(Self reference))


11.6 关系型数据库设计规则

关系型数据库的典型数据结构就是 数据表 ,这些数据表的组成都是结构化的(Structured)。 将数据放到表中,表再放到库中。 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中"类"的设计

11.6.1 表、记录、字段

E-R(entity-relationship,实体-联系)模型中有三个主要概念:实体集、属性、联系集
一个实体集 (class)对应于数据库中的一个表( table),一个实体 (instance)则对应于数据库表中的一行 (row),也称为一条记录 (record)。一个属性 (attribute)对应于数据库表中的一行 (row),也称为一条记录 (record)。一个属性 (attribute)对应于数据库表中的一列 (column),也称为一个字段(filed)。

复制代码
ORM思想(Object Realational Mappping)体现:
数据库中的一个表<---->Java或Python中的一个类
表中的一条数据<---->类中的一个对象(或实体)
表中的一个列<---->类中的一个字段、属性(filed)

11.6.2 表的关联关系

表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示

四种:一对一关联、一对多关联、多对多关联、自我引用

11.6.2.1 一对一关联(one-to-one)

在实际的开发中应用不多,因为一对一可以创建成一张表。

举例:设计 学生表 :学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急 联系人、...

拆为两个表:两个表的记录是一一对应关系。

基础信息表 (常用信息):学号、姓名、手机号码、班级、系别

档案信息表 (不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人

两种建表原则:

外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。

外键是主键:主表的主键和从表的主键,形成主外键关系。

16.6.2.2 一对多关系(one-to-many)

常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表 。

举例: 员工表:编号、姓名、...、所属部门 部门表:编号、名称、简介

一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

16.2.2.3 多对多(many-to-many)

关系,必须创建第三个表,该表通常称为联接表 ,它将多对多关系划分为两个一对多关系将这两个表的主键都插入到第三个表中

举例1:学生-课程 学生信息表 :一行代表一个学生的信息(学号、姓名、手机号码、班级、系别...)

课程信息表 :一行代表一个课程的信息(课程编号、授课老师、简介...)

选课信息表 :一个学生可以选多门课,一门课可以被多个学生选择

举例2:产品-订单 "订单"表和"产品"表有一种多对多的关系,这种关系是通过与"订单明细"表建立两个一对多关系来 定义的。

一个订单可以有多个产品,每个产品可以出现在多个订单中。

产品表 :"产品"表中的每条记录表示一个产品。

订单表 :"订单"表中的每条记录表示一个订单。

订单明细表 :每个产品可以与"订单"表中的多条记录对应,即出现在多个订单中。

一个订单 可以与"产品"表中的多条记录对应,即包含多个产品。

举例3:用户-角色 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向 各自一方的主键。

16.2.3.4 自我引用(Self reference)

上级对下级为一对多的关系,而上级和下级同属为员工,是自我引用。

相关推荐
小苹果13571 小时前
阿里云mysql数据丢失,如何通过服务器备份在其他服务器上恢复数据,并获取mysql丢失数据,完成mysql数据恢复
服务器·mysql·阿里云
张璐月2 小时前
mysql join语句、全表扫描 执行优化与访问冷数据对内存命中率的影响
数据库·mysql
ruan1145142 小时前
MySQL4种隔离级别
java·开发语言·mysql
全干engineer4 小时前
ClickHouse 入门详解:它到底是什么、优缺点、和主流数据库对比、适合哪些场景?
数据库·clickhouse
Hellyc6 小时前
基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
java·数据库·设计模式·rocketmq
lifallen6 小时前
Paimon LSM Tree Compaction 策略
java·大数据·数据结构·数据库·算法·lsm-tree
慕木兮人可9 小时前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器
{⌐■_■}10 小时前
【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
数据库·分布式·mysql·kafka·go
isNotNullX10 小时前
数据中台架构解析:湖仓一体的实战设计
java·大数据·数据库·架构·spark