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)

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

相关推荐
DCTANT40 分钟前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
程序员岳焱2 小时前
Java 与 MySQL 性能优化:MySQL全文检索查询优化实践
后端·mysql·性能优化
喜欢敲代码的程序员3 小时前
SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:项目搭建(一)
spring boot·mysql·elementui·vue·mybatis
AI、少年郎3 小时前
Oracle 进阶语法实战:从多维分析到数据清洗的深度应用(第四课)
数据库·oracle
赤橙红的黄3 小时前
自定义线程池-实现任务0丢失的处理策略
数据库·spring
钢铁男儿3 小时前
C# 委托(调用带引用参数的委托)
java·mysql·c#
叁沐3 小时前
MySQL 02 日志系统:一条SQL更新语句是如何执行的?
mysql
DataGear3 小时前
如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板
javascript·数据库·sql·信息可视化·数据分析·echarts·数据可视化
weixin_438335403 小时前
分布式锁实现方式:基于Redis的分布式锁实现(Spring Boot + Redis)
数据库·redis·分布式
RunsenLIu4 小时前
基于Vue.js + Node.js + MySQL实现的图书销售管理系统
vue.js·mysql·node.js