模式(SCHEMA)是对数据库内的数据描述(列和表),以及任何相关对象和各种连接方式的描述。
1 外键
外键是表中的某一列,它引用用另一个表的主键
关于外键:
(1)外键可能与它引用的主键名称不同
(2)外键使用的主键也称为父键,主键所在的表又称为父表
(3)外键能用于确认一张表中的行与另一表中的行相对应
(4)外键的值可以值NULL,即使主键值不可为NULL
(5)外键值不需要唯一,事实上,外键通常不唯一
外键为NULL,表示在父表中没有相符的主键,要确认外键包含意义、已存储在父表中,可以通过约束实现。
插入外键列的值必须已经存在父表的来源表中,这是引用完整性。
创建外键的方法:
方法一:
create table emp(
emp_id char(8) primary key,
emp_name char(30)
);
create table salary(
id char(8),
salary float,
foreign key (id) references emp (emp_id)
);
方法二:
alter table TABLE_NAME
add constraint FK_TABLE_NAME
foreign key (AA) references TABLE_NAME2 (AA);
2 表与表之间的关系
表间的关系:一对一、多对一、多对多
连接表(junction table):遇到多对多关系,可以在中间新建表以满足范式的要求,减少重复数据。
组合键由多个列组成的主键。
3 函数依赖
当某列的数据必须随着另一列的数据的改变而改变时,表示第一列函数依赖于第二列。
T.x→T.y 表示在关系表T 中,
部分函数依赖指非主键的列依赖于组合主键的某个部分(但不是完全依赖于组合主键)
传递函数依赖指如果改变任何非键列可能造成其他列的改变
4 范式
第一范式(1NF)
规则1:每个数据行必须包含具有原子性的值
规则2:每个数据行必须有独一无二的识别项——主键
第二范式(2NF)
规则1:先符合1NF
规则2:没有部分函数依赖性
只要所有列都是主键的一部分或者表中有唯一主键列符合1NF的表也符合2NF
第三范式(3NF)
规则1:符合2NF
规则2:没有传递函数依赖性