1.SQL(Structured Query Language)
结构化查询语言(Structured Query Language)
用于存储数据以及查询、更新和管理关系数据库系统
2.数据库:保存有组织的数据的容器(通常是一个文件或者一组文件)
数据库管理管理系统:DBMS
3.分类
数据定义语言(DDL)
CREATE 、ALTER 、DROP
数据操纵语言(DML)
增加(insert)、删除(delete)、更新(update)、查询(select)
数据控制语言(DCL)
分配(grant)、回收(revoke)、拒绝(deny)
4.表
5.常用数据类型
char:固定长度字符串
varchar:可变长度字符串
6.数据冗余
在一个数据集合中重复的数据称为数据冗余。
7.范式
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式。
第一范式(1st NF)
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式。
第一范式的目标是确保每列的原子性。
第二范式(2st NF)
如果一个关系满足1NF,并且除主键外的其它列,都完全依赖于该主键,则满足第二范 式。
第二范式要求每个表只描述一件事情。
胜者得分只跟难度有关系时,则省者得分不是用来描述游戏的,而是描述难度的。
第三范式(3st NF)
如果一个关系满足2NF,并且所有非主属性对任何候选关键字都不存在传递依赖,则满足第三范式。
第三范式要求确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
示例
S1(SNO,SNAME,DNO,DNAME,LOCATION)
学号 姓名 所在系 系名称 系地址
关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。
原因:关系中存在传递依赖造成的。即SNO1->1DNO。而DNO1->nSNO却不存在,而DNO->LOCATION存在,因此关键辽SNO对LOCATION函数决定是通过传递依赖SNO->LOCATION实现的。也就是说,SNO不直接决定非主属性LOCATION。
解决目地:每个关系模式中不能留有传递依赖。
解决方法:分为两个关系S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)
注意:关系S中不能没有外关键字DNO。否则两个关系之间失去联系