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)

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

相关推荐
勇往直前plus4 分钟前
Redis&Python 梳理
数据库·redis·python
千云7 分钟前
100w大表0停机回滚:我们为什么放弃Undo Log,选择表名切换?
数据库·后端·mysql
SXJR8 分钟前
使用docker 部署向量数据库Milvus
数据库·docker·容器·milvus·向量数据库
这个DBA有点耶13 分钟前
时序数据库深度对比:2026 年主流 TSDB 架构演进与选型指南
数据库·sql·云原生·架构·运维开发·时序数据库
AC赳赳老秦14 分钟前
用 OpenClaw 制定技术学习计划:根据目标岗位自动生成学习路线、推荐学习资源
开发语言·c++·人工智能·python·mysql·php·openclaw
计算机安禾23 分钟前
【数据库系统原理】第9篇:SQL的结构化思维:DDL、DML与DCL的职责分离
数据库·sql·oracle
计算机安禾27 分钟前
【数据库系统原理】第12篇:视图机制:外模式在SQL层级的逻辑数据独立性实现
数据库·sql·oracle
前进的李工32 分钟前
MySQL性能优化:索引与子查询实战技巧
数据库·sql·mysql·性能优化
疯狂成瘾者39 分钟前
API Key 生成和鉴权机制:从随机凭证生成到请求拦截校验
数据库·oracle
Volunteer Technology1 小时前
SpringSecurity中的权限管理
java·数据库·servlet