文章目录

  • 约束 Constraint
    • 分类
  • 多表关系
    • 范式
      • 第一范式1NF、
      • 第二范式2NF
      • 第三范式3NF
      • BCNF

约束 Constraint

概念: 对表中数据进行限制,保证数据正确性、有效性、完整性。

分类

  1. 主键:primary key
    配合INT类型主键 可以加auto_increment插入数据输入null也可自动增长
  2. 非空:not null
  3. 唯一:unique (唯一约束限定可以有多个NULL)
  4. 外键:foreign key (外键名 和外键列名是两个东西)
# 创建时添加
create table 表名(...外键列,consstraint 外键名称 foreign key (外键列名) references 关联表名(主表列名));
#删除外键
alter table 表名 drop foreign key 外键名;
#通过alter增加外键(增加外键之前先增加外键列,不能一起写)
alter table 表名 add constraint 外键名称 foreign key (外键列名) references 关联表名(主表列名);
#建立级联 添加ON UPDATE CASCADE
alter table 表名 add constraint 外键名称 foreign key (外键列名) references 关联表名(主表列名) ON UPDATE CASCADE;
# 删除级联 ON DELETE CASCADE
CREATE TABLE student(name VARCHAR(20) NOT NULL,phone_number VARCHAR(20) UNIQUE,id VARCHAR(20) primary key,age intcity VARCHAR(20), #外键constraint city_name foreign key (city) references city(name))

多表关系

  • 一对一 (身份证和人)
    可以在任意一方增加外键,指向对方主键,并且将外键唯一。或者主键相同
  • 一对多 (员工和部门)
    多个员工同一个部门 n:1 关系, 在n侧建立外键指向1侧的主键
  • 多对多 (学生和课程)
    学生可选多个课程,课程可以有多个学生m:n关系,增加中间表,至少要包含两个键,例如:stu_idclass_id,两个键形成联合主键。通过中间表,表示多对多关系。

范式

第一范式1NF、

每一列都是不可分割的原子数据项。

第二范式2NF

1NF的基础上,非码属性必须完全依赖于候选码,即消除非码属性对主码的部分函数依赖
函数依赖:通过A->B,A属性或属性组可以唯一确定B的值,则B依赖A。
完全函数依赖:A是属性组,B需要通过A中的所有属性决定,则B完全函数依赖A。
部分函数依赖:A是属性组,但是A中的一个属性就可以确定B,则B部分函数依赖于A。
传递函数依赖:A->B,B->C ,则C传递函数依赖于A。
:一个属性或属性组被去他所有属性完全依赖,则称它为该表的码。

候选码: 如果关系中的某一属性组能唯一的标识一个元组,则成该属性组为候选码
主码: 如果一个关系有多个候选码,则选其中一个为主码
主属性: 候选码的所有属性称为主属性
非主属性: 不包含在任何候选码中的属性是非主属性

第三范式3NF

在2NF基础上,任何非主属性不依赖于其他非主属性,消除传递依赖。
例如:
系主任依赖于系名,系名又依赖于学号,产生传递依赖系主任->系名->学号。拆分后满足第三范式。

BCNF

  • 所有非主属性,对每一个候选码都是完全函数依赖。
  • 主属性对不包含它的码,也是完全函数依赖,我理解为主属性之间互相完全函数依赖。
  • 没有属性完全依赖于非码的任何一组属性,非主属性之间不能有依赖。
    例如学号学生名宿舍年龄:(假设学生名唯一)
  1. 宿舍,年龄都完全依赖于 学号和学生名
  2. 学号和学生名之间完全函数依赖
  3. 没有属性依赖于宿舍和年龄

数据库 约束(Constraint)、多表关系和范式相关推荐

  1. 03_Mysql_约束与多表关系

    课程笔记Day27 约束 多表关系 第一章 约束 第01节 基础理论 1.约束概述 什么是约束呢?约束有什么作用呢? 生活当中的约束:法律的约束.道德的约束前面学习过的约束:XML当中 DTD约束.S ...

  2. MYSQL数据库字段关联_MySQL数据库 字段操作 多表关系(更新中...)

    外键 (foreign key) ## 外键 ```mysql # 作者(author):id,name,sex,age,mobile, detail_id # 作者详情(author_detail) ...

  3. Day04_多表关系、范式

    文章目录 一.多表之间的关系 1.多表之间的关系 2.一对多案例 3.多对多案例 二.范式 一.多表之间的关系 1.多表之间的关系 1. 多表之间的关系1. 分类:1. 一对一:* 如:人和身份证2. ...

  4. MySQL基础教程 包含SQL语句、约束、表关系、设计范式、多表、事务等

    简介 数据库 ​ 数据库(Database):是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. ​ 我们也可以将数据存 ...

  5. MYSQL学习笔记06:列属性[NULL,default,comment],主键,自增长,唯一键,数据库设计规范[范式(1NF,2NF,3NF),逆规范化],表关系[1V1,1VN,NVN]

    列属性 列属性又称为字段属性. 在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自增长. NULL属性 NULL属性代表字段为空. 如果对应的值为yes表示该字段允许为null, ...

  6. 多表关系、数据库设计的范式、数据库的备份和还原、多表查询、事务、DCL(了解)

    文章目录 多表关系 数据库设计的范式 数据库的备份和还原 多表查询 多表查询的分类:内连接查询 隐式内连接:使用where条件消除无用数据 显式内连接 多表查询的分类:外连接查询 左外连接 右外连接 ...

  7. 数据库MySQL基础---约束、表关系、聚合函数、连接查询、分组查询和子查询

    约束 1.主键约束亦成为主码,关键字:primary key,设置了主键约束的列的数据要求:不能为空,不允许重复. 2.自增长策略针对主键,不需要手动给值,自动的值是当前表中该列最大值+1关键字:au ...

  8. oracle表违反主键约束,主键/约束/事务/表关系 Oracle

    1:创建一个主键 --创建一个表,有主键 create table studs( id varchar(32) primary key, name varchar(30) ); --主键也是数据库的对 ...

  9. 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集

    文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...

最新文章

  1. Java学习总结:4
  2. 消除warning方法
  3. 分布式缓存——缓存与数据库数据一致性
  4. 为什么程序员总是打扮成这样一幅鬼样子
  5. 作者:劳保强(1989-),男,中国科学院上海天文台助理工程师
  6. C/C++编程笔记:浅析 C 语言中宏定义的使用,知识点全解
  7. 使用csc手动编译cs文件
  8. 零基础转行自学前端,怎么学习更系统?
  9. BZOJ3668:[NOI2014]起床困难综合症(贪心)
  10. 手机发包工具_【发包工具】http多线程发包工具
  11. 软件设计工程——数据库设计
  12. 本地音乐上传到网易音乐云盘上
  13. AMI,HDB3编码译码
  14. 网络断网远程计算机会自动修复么,网络断网不怕,教你自己动手修复
  15. 计算机网络对等网实验报告,计算机网络实验报告_双机互联
  16. 金融工程 | 远期与期货的运用
  17. 分布式系统高可用实战之限流器(Go 版本实现)
  18. 【CSS】用CSS画太极图
  19. 连载:面向对象葵花宝典:思想、技巧与实践(10) - “抽象” 详解
  20. php怎么建留言本,php实现留言板功能的详细代码

热门文章

  1. b站如何进行屏幕录制?录屏最值得尝试的几款软件
  2. Git生成ssh ksy后进行项目管理
  3. 洒一瓣秋香,种一片月光
  4. 程序员如何修炼项目管理能力?
  5. Qt、C++实现五子棋人机对战与本地双人对战
  6. jnz和djnz_djnz(单片机djnz指令的功能)
  7. RabbitMQ五种工作模式
  8. i5 9400f参数 i5 9400f性能怎么样
  9. 实习报告大盘点 【建议收藏】
  10. 项目中关于图片上传与剪裁的流程