数据库重点

关系模型的完整性约束条件包括三大类:
实体完整性、参照完整性和用户自定义的完整性
实体完整性的相关定义——

primary key;unique + not null;identity

CREATE TABLE SC(
            Sno CHAR(5) ,
            Cno CHAR(3) , 
            Grade   real,
            Primary key (Sno, Cno),
Foreign key(sno) references student(sno),
Foreign key(cno) references course(cno));


候选码:若关系(二维表)中的某一属性组的值能唯一标识一个元祖,该属性组即为候选码
有多个候选码,可选定其中一个为主键
候选码的诸属性为主属性,不包含在任何候选码中的属性称为非主属性或非码属性
外键:如果关系模式R中的某属性集不是R的主键,而是另一个关系R1的主键,则属性集是关系模式R的外键
以另一个关系的外键作主键的表被称为主表,具有外键的表称为主表的从表。


事务:用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)ACID

原子性

整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性

一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间 并发事务有多少
隔离性
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为 串行 化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
持续性
在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。



1NF的定义

如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。

第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。

(1) 数据冗余
(2) 插入异常
(3) 删除异常
(4) 修改异常


2NF的定义

定义5.6  若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。
例:SLC(Sno, Sdept, Sloc, Cno, Grade) ∈1NF
          SLC(Sno, Sdept, Sloc, Cno, Grade) ∈2NF
          SC(Sno, Cno, Grade) ∈ 2NF
          SL(Sno, Sdept, Sloc) ∈ 2NF


3NF的定义

定义5.8  关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z  Y), 使得X→Y,Y → X,Y→Z,成立,则称R<U,F> ∈ 3NF。
例, SL(Sno, Sdept, Sloc) ∈ 2NF
         SL(Sno, Sdept, Sloc) ∈ 3NF 
          SD(Sno, Sdept) ∈ 3NF
         DL(Sdept, Sloc)∈ 3NF


若R∈3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。
即:如果R∈3NF,则R也是2NF。



BCNF
设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。

每一个决定属性集(因素)都包含(候选)码
所有非主属性都完全函数依赖于每个候选码
所有主属性都完全函数依赖于每个不包含它的候选码
没有任何属性完全函数依赖于非候选码的任何一组属性



FD中所有的决定因素都包含了R的一个候选码
SJP(S,J,P)  FD={SJ→P,JP→S}
S:学生;J:课程;P:名次
(S,J),(J,P)都是候选码,都由2个属性组成,而且是相交的。
该关系模式种没有属性对码的传递依赖和部分依赖,所以属于3NF
除了(S,J),(J,P)之外没有其他决定因素,所以也属于BCNF



如何快速求候选码
将R(U,F)的所有属性分组
L型:只在F的函数依赖左边出现的属性
R型:只在F的函数依赖右边出现的属性
LR型:在F的函数依赖左右两边都出现的属性
N型:在F的函数依赖中没有出现的属性
候选码一定包括L型,N型
一定不包括R型
可能包括LR型,将LR型与L和N型组合在一起判断
确定该属性组合是否是可以唯一确定U中其他属性,并且其任何真子集都不能再唯一确定U中其他属性



索引:
索引是对数据库中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库中的特定信息
代价:
1)增加数据库的存储空间
2)插入和修改数据时要花费较多的时间(因为索引也要随之变动)


CREATE UNIQUE INDEX Stusno ON Student(Sno desc);
Alter TABLE Student DROP INDEX Stusno;

数据库创建索引的作用:
创建索引可以大大提高系统的性能
1)通过创建索引唯一性索引,可以保证数据库表中每一行数据的唯一性
2)可以大大加快数据的检索速度
3)可以加速表和表之间的连接,特别是实现数据的完整性方面特别有意义
4)在使用分组(group by)和排序(order by)字句进行数据检索时,同样可以减少查询中分组和排序的时间
5)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能


哪些列中应该使用索引
1)经常需要检索的列上创建索引
2)作为主键的列上创建索引,强制该列的唯一性和组织表中的数据的排列结构
3)连接的列,加快连接速度
4)经常需要排列的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序的查询时间
5)经常需要根据范围进行搜索的列上创建索引
6)经常使用where子句中的列上面创建索引,加快条件的判断速度


SQL语句
数据查询(select)、数据定义(create、drop、alter)、数据操纵(insert、update、delete)、数据控制(grant、revoke)


数据查询

SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]...
FROM<表名或视图名>[,<表名或视图名>]...
[WHERE <条件表达式>]
[GROUP BY<列名1>[HAVING <条件表达式>]]
[ORDER BY<列名2>[ASC|DESC]]

定义基本表

CREATE TABLE 	<表名>	(<列名><数据类型>[列级完整性约束条件]
						[,<列名><数据类型>[列级完整性约束条件]]
						...
						[,<表级完整性约束条件>]);

修改基本表

ALTER TABLE <表名>
[ADD <新列名><数据类型>[完整性约束]]
[DROP <完整性约束>]
[MODIFY COLUMN <列名><数据类型>]


删除基本表

DROP TABLE <表名>  [cascade|restrict];


插入元组

INSERT INTO table1(field1,field2...)
VALUES(value1,value2...);

修改数据

UPDATE table1
SET field1=value1,field2=value2
WHERE 范围

删除数据

DELETE 
FROM table1
WHERE 范围;


设计概念结构的四类方法
自顶向下
自底向上
逐步扩张
混合策略


按照规范设计方法,将数据库设计分为6个阶段
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运行和维护



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值