数据库总结
数据库总结
数据库=实体+关系
实体:实体就是一个实际的对象,即主键.
关系:外键
三个范式:
第一范式:
1.一个行的每个列必须具有原子性,即任何给定行的列只能包含一个值
2.表中的每行必须包含相同数量的列,假如每个列只能包含一个值,即意味着每行必须包含相同数量的值.
3.一个表中的所有行必须是不同的,虽然可能包含相同的值,但每行作为一个整体必须在整个表中试唯一的.
第二范式:
非主必须依赖于主键列键列(设计一个实体必须是它的固有属性)
第三范式:
非主键列之间必须相互独立(不能通过一个字段知道另一个字段的值)
注:NF1和NF2必须满足.
实体:
强实体:能脱离主键列而单独存活
弱实体:脱离了主键列就不能存活(没有什么意义)
关系:
实体与实体之间的关系(一对一,一对多,多对多)
一对一:从一边到另一边是一对一,反过来还是一对一
一对多:从一边到另一边是一对多,反过来是一对一
多对一:反过来就是一对多
多对多:从一边到另一边是一对一,反过来还是多对多,但实际中一般不用多对多而用一对多或多对一
注:找关系一定是以“一”为标准,从一个实体的一条记录出发。
主键:用来对实体的唯一标识
代理主键:没有什么实际的意义
业务主键:与业务有关,一般情况下,业务变更业务主键也要相应的变更
外键:表示表与表之间的关系,表不一定要有外键才有关系
例如:在学生表中,学号(学生表)和科目编号(科目表)是独立主键
学号+科目编号(成绩表)是复合主键。
创建序列:
SELECT*FROMemp
CREATESEQUENCEtt
CREATETABLEt_class(
cidNUMBER(5)PRIMARYKEY,
cnameVARCHAR2(8)
)
INSERTINTOt_class(cid,cname)VALUES(tt.NEXTVAL,'1');
INSERTINTOt_class(cid,cname)VALUES(tt.NEXTVAL,'2');
INSERTINTOt_class(cid,cname)VALUES(tt.NEXTVAL,'3');
INSERTINTOt_class(cid,cname)VALUES(tt.NEXTVAL,'4');
SELECT*FROMt_class
创建同义词:
CREATEPUBLICSYNONYMyyFORt_class
SELECT*FROMyy
视图理解:
CREATEORREPLACEVIEW视图名
AS
SQL查询;
例如:
CREATEORREPLACEVIEWT_EMP
AS
SELECT*FROMEMPELEFTJIONDEPTDONE.DEPTNO=E.DEPTNO
删除:
DROPVIEW视图名
视图的作用:
1.保护数据安全
2.简化数据的查询和处理操作
3.有利于数据交换操作
4.有利于简化对用户权限的管理