• MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas
  • 1-MySQL基础.pdf、2-MySQL约束与设计.pdf、3-MySQL多表查询与事务的操作.pdf
  1. MySQL学习笔记01【数据库概念、MySQL安装与使用】【day01】
  2. MySQL学习笔记02【SQL基本概念与通用语法、数据库的CRUD操作】【day01】
  3. MySQL学习笔记03【数据库表的CRUD操作、数据库表中记录的基本操作、客户端图形化界面工具SQLyog】【day01】

  4. MySQL学习笔记04【数据库的查询操作、表的约束】【day01、day02】

  5. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】【day02】

  6. MySQL学习笔记06【多表查询、子查询、多表查询练习】【day03】

  7. MySQL学习笔记07【事务、用户管理和权限管理】【day03】

目录

09 多表操作

多表关系介绍

多表关系_一对多关系实现

多表关系_多对多关系实现

多表关系_一对一关系实现

多表关系_案例

10 三大范式

范式概述

三大范式详解

11 数据库的备份和还原

命令行

图形化工具


09 多表操作

多表关系介绍

数据库的设计——1. 多表之间的关系

1. 分类:
    1. 一对一(了解):
        * 如:人和身份证
        * 分析:一个人只有一个身份证,一个身份证只能对应一个人。
    2. 一对多(多对一):
        * 如:部门和员工
        * 分析:一个部门有多个员工,一个员工只能对应一个部门。
    3. 多对多:
        * 如:学生和课程
        * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择。

多表关系_一对多关系实现

数据库的设计——1. 多表之间的关系

1. 分类:
    1. 一对一(了解):
        * 如:人和身份证
        * 分析:一个人只有一个身份证,一个身份证只能对应一个人。
    2. 一对多(多对一):
        * 如:部门和员工
        * 分析:一个部门有多个员工,一个员工只能对应一个部门。
    3. 多对多:
        * 如:学生和课程
        * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择。

    2. 实现关系:
        1. 一对多(多对一):
            * 如:部门和员工
            * 实现方式:在多的一方建立外键,指向一的一方的主键。

多表关系_多对多关系实现

    2. 实现关系:
        1. 一对多(多对一):
            * 如:部门和员工
            * 实现方式:在多的一方建立外键,指向一的一方的主键。
        2. 多对多:
            * 如:学生和课程
            * 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。
        3. 一对一(了解):
            * 如:人和身份证
            * 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。

多表关系_一对一关系实现

    2. 实现关系:
        1. 一对多(多对一):
            * 如:部门和员工
            * 实现方式:在多的一方建立外键,指向一的一方的主键。
        2. 多对多:
            * 如:学生和课程
            * 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。
        3. 一对一(了解):
            * 如:人和身份证
            * 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。

多表关系_案例

-- 创建旅游线路分类表 tab_category
-- cid 旅游线路分类主键,自动增长
-- cname 旅游线路分类名称非空,唯一,字符串 100
CREATE TABLE tab_category (cid INT PRIMARY KEY AUTO_INCREMENT,cname VARCHAR (100) NOT NULL UNIQUE
) ;-- 创建旅游线路表 tab_route
/*
rid 旅游线路主键,自动增长
rname 旅游线路名称非空,唯一,字符串 100
price 价格
rdate 上架时间,日期类型
cid 外键,所属分类
*/
CREATE TABLE tab_route (rid INT PRIMARY KEY AUTO_INCREMENT,rname VARCHAR (100) NOT NULL UNIQUE,price DOUBLE,rdate DATE,cid INT,FOREIGN KEY (cid) REFERENCES tab_category (cid)
) ;/*创建用户表 tab_user
uid 用户主键,自增长
username 用户名长度 100,唯一,非空
password 密码长度 30,非空
name 真实姓名长度 100
birthday 生日
sex 性别,定长字符串 1
telephone 手机号,字符串 11
email 邮箱,字符串长度 100
*/
CREATE TABLE tab_user (uid INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR (100) UNIQUE NOT NULL,PASSWORD VARCHAR (30) NOT NULL,NAME VARCHAR (100),birthday DATE,sex CHAR(1) DEFAULT '男',telephone VARCHAR (11),email VARCHAR (100)
) ;/*
创建收藏表 tab_favorite
rid 旅游线路 id,外键
date 收藏时间
uid 用户 id,外键
rid 和 uid 不能重复,设置复合主键,同一个用户不能收藏同一个线路两次
*/
CREATE TABLE tab_favorite (rid INT, -- 线路idDATE DATETIME,uid INT,-- 用户id-- 创建复合主键PRIMARY KEY (rid, uid),-- 联合主键FOREIGN KEY (rid) REFERENCES tab_route (rid),FOREIGN KEY (uid) REFERENCES tab_user (uid)
) ;

10 三大范式

范式概述

2. 数据库设计的范式

* 概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求。

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

* 分类:
        1. 第一范式(1NF):每一列都是不可分割的原子数据项。
        2. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖)。
        3. 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。

三大范式详解

2. 数据库设计的范式

* 概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求。

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

* 分类:
        1. 第一范式(1NF):每一列都是不可分割的原子数据项。
        2. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖)。

* 几个概念:
                1. 函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A。
                    例如:学号-->姓名。  (学号,课程名称) --> 分数
                2. 完全函数依赖:A-->B, 如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值。
                    例如:(学号,课程名称) --> 分数
                3. 部分函数依赖:A-->B, 如果A是一个属性组,则B属性值的确定只需要依赖于A属性组中某一些值即可。
                    例如:(学号,课程名称) --> 姓名
                4. 传递函数依赖:A-->B, B-->C。如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称C传递函数依赖于A。
                    例如:学号-->系名,系名-->系主任
                5. 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码。
                    例如:该表中码为:(学号,课程名称)
                    * 主属性:码属性组中的所有属性
                    * 非主属性:除过码属性组的属性
        3. 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。

  

11 数据库的备份和还原

1. 命令行:
    * 语法:
        * 备份:mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
        * 还原:
            1. 登录数据库
            2. 创建数据库
            3. 使用数据库
            4. 执行文件。source 文件路径
2. 图形化工具

命令行

  

  

图形化工具

  

    

MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】相关推荐

  1. MySQL学习笔记 | 05 - 普通用户新增、删除、授权、撤销登录权限

    MySQL学习笔记 | 01-为什么要使用数据库 MySQL学习笔记 | 02 - MySQL在Windows下的安装.配置.服务启动/停止.用户登录.查看版本号 MySQL学习笔记 | 03 - M ...

  2. MySQL学习笔记 05、触发器、存储过程、存储函数、定时任务

    文章目录 前言 一.触发器 提前准备测试表 1.1.创建触发器 1.2.删除触发器 二.存储过程 2.1.认识变量 2.1.1.系统变量 2.1.2.用户变量 2.2.存储过程创建 2.3.删除存储过 ...

  3. mysql 学习笔记03修改表以及其他操作

    首先创建一张表 在现有表的结构上增加字段 alter table users add image varchar(100) not null defalut '' comment '图片路径'; 修改 ...

  4. vba移动文件_VBA学习笔记8:工作表操作

    学习资源:<Excel VBA从入门到进阶>第10集 by蓝色幻想 一.Excel工作表的分类 Excel工作表有两大类,一类是我们平常用的工作表(worksheet),另一类是图表.宏表 ...

  5. mysql学习笔记14 多表查询初步

    对数据分组的总结 举例:统计各个部门的平均工资,并且是大于1000的,并且按照平均工资从高到底排序 mysql> select avg(stsal) as myavgsal, stdepno f ...

  6. mysql 学习笔记05 统计函数的相关使用

    合计函数count, 统计多少条记录 统计共有多少学生 select count(*) from students; 查询数学成绩大于等于90的学生数量 select count(*) from st ...

  7. mysql 学习笔记 02创建表

    表结构的创建 比如: create table userinfo (id int unsigned comment 'id号'name varchar(60) comment '用户名'passwor ...

  8. MySQL学习笔记(6)之设计范式

    设计范式(NF = Normal Format) 范式:规范的格式. 范式是设计关系数据库必须遵守的规则. 如果我们满足了设计范式的要求,则数据库会简洁,结构清晰. 反之,会出现数据冗余,还有插入.删 ...

  9. MySQLi学习笔记 :二(  排序查询,聚合函数,分组查询,分页查询) 约束     多表之间的关系   范式     数据库的备份和还原

    # DQL:查询语句     1. 排序查询         * 语法:order by 子句             * order by 排序字段1 排序方式1 ,  排序字段2 排序方式2... ...

最新文章

  1. 作为JavaScript开发人员,这些必备的VS Code插件你都用过吗
  2. 团队项目第一阶段冲刺站立会议1(4月18日)
  3. forms oracle runtime_Oracle EBS R12 clone 完毕后,登陆到系统,在运行FORMS程序的时候出现FRM-92101...
  4. ***检测与网络审计产品是孪生兄弟吗?
  5. Django(part16)--URL反向解析
  6. datatables每页显示数据刷新后不变_2019北京积分落户名单数据的一些分析
  7. python难学吗-Python为什么那么受欢迎?学习Python难不难?
  8. Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
  9. android的wake_lock介绍
  10. adb shell 操作
  11. c语言中用什么表示空串,C语言怎么表示空串
  12. 基于Python语言的文件与文件夹管理
  13. IPv6动态地址DNS解析
  14. 以华为2016年笔试题为例,详解牛客网的在线判题系统(OJ模式)
  15. IT项目经理如何正确做好项目实施
  16. 虚拟信用卡免费申请(工行E卡充值entropay虚拟信用卡)
  17. eslint 换行_预计的换行符是apos;LFapos;,但在Eslint中使用gulp发现apos;CRLFapos;换行符 Dovov编程网...
  18. SpringMVC中使用ajax
  19. 手把手教你PyTorch项目:YOLO v3目标检测
  20. 官方也无力回天?“SharedPreferences 存在什么问题?”

热门文章

  1. 网页全文搜索字符和全局搜索文件名【Edge和谷歌浏览器均适用】
  2. 因服务器升级维护 造成不便敬请谅解,《梦幻西游》2020年5月20日维护公告
  3. 微型计算机最早提出于,计算机基础题1、世界上第一台电子计算机诞生于A)1943年B-查字典问答网...
  4. 如何复制java卡,使用java做一个简单的集卡程序
  5. 何杰月c语言课程,多线程 - 何杰leo的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Mysql -uroot -p 登陆不上_MySQL命令行登陆,远程登陆MySQL 的方法
  7. kali kda安装 linux_全昭妍미연Bea MillerWolftylaKDA-THE BADDEST
  8. 九十三、动态规划系列之股票问题(下)
  9. 六十四、SpringBoot中的模板引擎Thymeleaf
  10. 聚焦视频文本检索:一文概览视频文本检索任务最新研究进展