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)

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

相关推荐
未来之窗软件服务7 分钟前
JAVASCRIPT 前端数据库-V6--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟·东方仙盟数据库
寒山李白10 分钟前
MySQL复杂SQL(多表联查/子查询)详细讲解
sql·mysql·子查询·多表联查
冰橙子id19 分钟前
centos7编译安装LNMP架构
mysql·nginx·架构·centos·php
玛奇玛丶35 分钟前
面试官:千万级订单表新增字段怎么弄?
后端·mysql
一只爱撸猫的程序猿1 小时前
构建一个简单的智能文档问答系统实例
数据库·spring boot·aigc
nanzhuhe2 小时前
sql中group by使用场景
数据库·sql·数据挖掘
天天摸鱼的java工程师2 小时前
从被测试小姐姐追着怼到运维小哥点赞:我在项目管理系统的 MySQL 优化实战
java·后端·mysql
消失在人海中2 小时前
oracle sql 语句 优化方法
数据库·sql·oracle
Clang's Blog2 小时前
一键搭建 WordPress + MySQL + phpMyAdmin 环境(支持 PHP 版本选择 & 自定义配置)
数据库·mysql·php·wordpr
zzc9212 小时前
MATLAB仿真生成无线通信网络拓扑推理数据集
开发语言·网络·数据库·人工智能·python·深度学习·matlab