数据库
首页 > 数据库> > 2021.1.5.- 外键约束 - 数据库与表之间的关系 - 三大范式 - 多表查询 - 事务 - DCL

2021.1.5.- 外键约束 - 数据库与表之间的关系 - 三大范式 - 多表查询 - 事务 - DCL

作者:互联网

外键约束
1.目的:限制表添加信息的类型
2.添加外键的语法:constrain 外键约束名称 foreign key(外键的字段名称) reference 主表的表名(一般管关联主键)
3.一般来说都是在从表中添加外键,指定主表的主键,达到连接的目的
4.格式:alter table 从表表名 add constrain 外键约束的名称 foreign key(外键的字段名称) reference 主表的表名(主键字段名)
5.点击左上角表图标,再点击右下角一个ER图表,点开之后就能阿卡拿到哪些表之间有外键约束
6.删除外键:alter table 从表表名 drop froeign key 外键名称;
7.注意:对于已经存在的表删除外键,必须先删除相关联标的非法数据
8.外键约束代码

级联操作:两张表之间已经有啦主外键关联
1.概念:在修改或者删除朱标的时候,同时他会更新或者删除从表中的外键值,这种操作称为级联
2.修改表中的数据,修改课程信息,不能修改为非法数据
3.删除主表的数据:如果删除之后导致从表数据会非法,那么就不能被删除调
4.更新级联:on update cascade 只能在创建表的时候创建级联,当更新主表中的主键,从表中的外键会同步更新
5.删除级联:on delete cascade 删除主表中的主键的时候,从表中含有该字段的记录会同步删除
6.级联代码

约束总结:
1.主键约束 primary key 唯一不为空
2.默认约束 defalut 插入数据,字段没有赋值时候 系统,就会自动赋默认值
3.非空约束 not null 不为null
4.唯一约束 unique 该字段在数据在整个表中只能出现一次
5.外键约束 foreign key 从表中加外键关联主表的主键

表与表之间的关系
1.一对一关系:通常写在一个表里面
2.一对多关系:
3.多对多关系:

多对多建表:需要建立中间表

一对多建表:设计的时候先创建主表再创建从表

表与表之间的关系总结
1.一对一建表:
直接把两个表合在一起,非要分开就是互为外键约束
2.多对多建表:
需要建立中间表:中间表内部分别添加外键约束关联各对应的主键
3.一对多建表
在从表的那一方(多的那一方)建立外键被主表的主键约束,先创建主表再创建从表

数据库设计的范式
1.概念:

2.前三种范式的介绍

  1. 函数依赖:A--->B 如果通过A属性的值,可以确定唯一的B属性值,可以称B依赖于A,,,,,就相当于通过学号可以找到学生-->学生就依赖于学号.
  2. 完全函数依赖:A--->B 如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值,就相当于学号-->课程---->每个课程的成绩,就会成绩的的确定需要依赖于学号中所有的课程才能得到
  3. 部分函数依赖:A--->B B属性的确定需要依赖于,A数学组中一个或者部分的数据才能得到
  4. 传递函数依赖: A--->B ,B--->C如果通过A属性组的值可以唯一确定B属性组属性的值,再通过B属性的值可以唯一确定C属性的值,这时候就可以称C传递函数依赖于A.
  5. 码:如果在一张表中,一个属性或者属性组,被其他所有属性锁完全依赖,则称这个属性为该表的码.
    主属性:码属性组中的所有属性
    非主属性:除了主属性之外的其他属性.

第三范式:3NF :如上图所示,还是有很多冗余,比如一个学号对应姓名多次,就没有得到优化,到了第三范式基本上都是单独的表在表决心单独的删除和增加并不会说影响其他表的数据,就大大避免了操作失误.任何非主属性不依赖于其他的非主属性(消除传递函数依赖)

三种范式总结:

多表连接查询
分类:内连接(显示内连接和隐式内连接)和外连接(左外连接和右外连接).

事务
.概念

开启事物: satrt transaction ;开启事物,那么后面的sql操作就会不会修改数据库中的数据
提交事物:commit;提交提交事务使得它能改变数据库中的数据
回滚事务:rollbank;在sql语句有错误的时候就不会提交事务,会回滚事务,把数据还原

事务的四大特性:

事务的隔离级别:

标签:2021.1,与表,多表,外键,查询,范式,主表,主键,属性
来源: https://www.cnblogs.com/tushao/p/14243316.html