赞
踩
数据data
数据库DB
数据库管理系统
数据库系统DBS
数据模型是一种形式机制,用于数据建模,描述数据、数据之间的联系、数据的语义、数据上的操作和数据的完整性约束条件
概念模型(信息模型):实体-联系(E-R)模型是一种广泛使用的概念模型
数据模型的三要素
目前最流行的数据模型是关系模型
关系的每个属性必须取原子值
三级模式
二级映像
外模式–模式映像
模式–内模式映像
扩展
实体:客观存在并且可以相互区分的任何事物,可以是实际对象,也可以是抽象模型
实体集:具有相同属性的实体的集合
码:
属性:
联系是多个实体之间的相互联系
联系集是相同类型联系的集合
联系的类型
关系模型只包含单一的数据结构 – 关系
域:一个具有相同数据类型的值的集合 – 顺序的取值范围
基数:一个域允许的不同取值个数
笛卡尔积:域上面的一种集合运算 – 得到每个域中元素的所有可能的组合 – 基数相乘
关系:笛卡尔积的子集叫做其在域上的集合(可以用二维表和集合来表示关系)
除了语义约束外,对关系的限制主要有两点:
关系模式概念对应于程序设计语言中的类型概念,是对关系型的描述,可以表示为R(U, D, DOM, F) – 关系模式名(关系模式的诸属性,属性对应的域,U到D的映射,属性间的数据依赖集定义)
二维表表示关系时列的次序不重要
外码是另外一个表的主码
属性处理
实体集处理
联系集处理
方法一:联系转换成关系模式
方法二:合并
关系语言的分类 :关系代数、关系演算、SQL语言
完整性分类:
基本运算:选择(一元运算符)、投影(一元运算符)、并、差、笛卡尔积
附加运算:交、除、连接、自然连接(必须有同名属性才能进行)
1NF要求关系的所有属性值都是原子的,是对关系模式的基本要求,不满足1NF的数据模式不能称为关系模式,即所有关系模式都是1NF
2NF对于任意的非平凡函数依赖X→A∈F+ :A是主属性,X不是R的任意码的真子集
3NF对于任意的非平凡函数依赖X→A∈F+:A是主属性,X是R的码
BCNF 限制R中成立的所有函数依赖要么是平凡的,要么是对码的依赖。对于任何关系模式R,以下两种两数依赖必定成立:平凡的函数依赖;任意属性对超码的依赖
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:一个属性没有在任何候选码中出现过,这个属性就是非主属性。
部分函数依赖:设有关系R(A,B,C),若AB→C,A→C,则C部分函数依赖于AB。
完全函数依赖:设有关系R(A,B,C),若AB→C,A!→C,B!→C,则C完全函数依赖于AB。
传递函数依赖:设有关系R(A,B,C),若A→B,B→C,则C传递函数依赖于A。
1NF:关系中的每个属性都不可再分。
2NF:在1NF的基础之上,消除了非主属性对于候选码的部分函数依赖。
3NF:在2NF的基础之上,消除了非主属性对于候选码的传递函数依赖。
**BCNF:**在3NF的基础之上,消除主属性对于候选码的部分函数依赖与传递函数依赖。
数据库在物理设备上的存储结构和存取方法就称为数据库的物理结构
数据库的物理结构设计∶就是为一个给定数据库的逻辑结构选取一个最适合应用环境的物理结构和存取方法的过程,目的是为了提高数据库的访问速度并有效地利用存储空间
常用索引方法 – 聚簇:为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为取簇码)上具有相同值的元组集中存放在同一个物理块或若干个相邻的物理块或柱面内
对已有关系建立聚簇,将导致关系中元组物理存储位置的变化,并使此关系上原有的索引无效,必须重建
确定数据库的物理结构主要指:
确定数据的存放位置和存储结构要综合考虑
存取时间
存储空间利用率
维护代价
为了提高系统性能,应该根据应用情况将数据的易变部分与稳定部分,经常存取部分和存取频率较低部分分开存放
DBMS产品一般都提供了一些系统配置变量、存储分配参数、供设计人员和DBA对数据库进行物理优化
模式
目录(catlog) – 模式(schema) – 对象
符号说明:
模式的定义:
模式删除:DROP SCHEMA<模式名> CASCADE|RESTRICT
表
表的定义:CREATE TABLE<表名>
列级约束的定义:[CONSTRAINT<约束名>]<列约束>
表级约束的定义:[CONSTRAINT<约束名>]<表约束>
修改基本表:ALTER TABLE<表名>
删除基本表:DROP TABLE<表名>{CASCADE|RESTRICT}
索引
SELECT
SELECT后可以使用集合量词ALL或DISTINCT,缺省时为ALL;ALL不删除结果的重复行,而DISTINCT将删除结果中的重复行
BETWEEN表达式:<值表达式>[NOT] BETWEEN<下界>AND<上界>
IN表达式:
LIKE表达式:[NOT] LIKE<匹配串>[ESCAPE‘<换码字符>']
NULL表达式:<值表达式><子查询>IS [ NOT ] NULL
排序:ORDER BY<排序列>[ASC | DESC] {,<排序列>[ASCDESC]}
聚集函数
分组语句group by:GROUP BY<分组列>{,<分组列>}[HAVING<分组选择条件>]
对于带GROUP BY子句的SELECT语句,SELECT子句中的结果列必须是GROUPBY子句中的<分组列>或聚集函数;分组语句细化了聚集函数作用的作用对象
连接查询、嵌套查询、子查询、集合查询
数据更新
例:
1.在产品表(Products)中找出库存大于50的产品的所有信息,按产品编号升序排序。
SELECT * FROM Products WHERE UnitsInStock>=50 ORDER BY ProductID
2.查询顾客表(Customers)中所有不重复的所在城市,并升序排序。
SELECT DISTINCT City FROM Customers ORDER BY City
3.在顾客表(Customers)中找出所在城市为London、Madrid、Torino和Paris的顾客编号及电话。
SELECT CustomerID,Phone FROM Customers WHERE City IN ('London','Madrid','Torino','Paris')
4.在产品表(Products)中找出单位数量中有box的产品名和产品编号。
SELECT ProductName,ProductID FROM Products WHERE QuantityPerUnit LIKE '%box%'
5.在顾客表(Customers)中找出公司名的首字母为F,第5位为k的顾客编号和联系人名。
SELECT CustomerID,ContactName FROM Customers WHERE CompanyName LIKE 'F___k%'
6.统计在’1997-10-1’ 到’1997-10-7’期间,订单中每个员工的订单数,并按订单数降序排序。
SELECT EmployeeID"员工编号",COUNT(ORDERID)"订单数" FROM Orders WHERE OrderDate BETWEEN '1997-10-1'ANd'1997-10-7' GROUP BY EmployeeID ORDER BY COUNT(OrderID) DESC
7.请查询平均价格在30元及以上的产品类型。
SELECT CategoryID,AVG(UnitPrice)'平均价格' FROM Products GROUP BY CategoryID Having AVG(UnitPrice)>=30
8.查询’1997-10-7’当天所售商品的库存情况,包括商品编号、名称、库存。
SELECT Products.ProductID,ProductName,UnitsInStock FROM Products,Orders,[Order Details] WHERE Products.ProductID=[Order Details].ProductID AND [Order Details].OrderID=Orders.OrderID AND OrderDate='1997-10-7'
定义:CREATE VIEW<视图名>[(<列名>,…,<列名>)]AS<查询表达式>[WITH CHECK OPTION]
删除:DROP VIEW<视图名>[ CASCADE |RESTRICT ]
视图的优点:
视图能够简化用户的操作
视图使用户能以多种角度看待同一数据
视图重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
视图能够更清晰的表达
数据库的完整性是指数据库中数据是正确的(数据库的数据是符合语义约束的数据)、一致的(数据之间的逻辑关系是正确的)和相容的(同一个事实的两个数据应当是一致的)
约束的分类:(就被约束的数据对象而言)
约束的分类:(从约束的状态的角度)
DBMS必须提供完整性控制的机制有:定义完整性约束条件的方法、完整性检查机制、违约处理
可以实现级联操作的短语是:CASCADE
实体完整性要求:
违反的操作: 插入新元祖、修改元祖的主码、DBMS自动检查、SQL支持实体完整性
参照完整性要求:
违法的操作:向参照关系R插入、修改参照关系R外码上的值、删除(修改)被参照关系S的元组
向数据库表中插入数据违法参照完整性规则时,系统所做的操作是:拒绝
用户自定义的完整性约束:用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求,用户定义的完整性可以是:
域约束:每个属性都必须在一个值域上取值
属性约束:属性的取值必须来自其定义的值域
关系约束:说明关系的合法取值,常常涉及同一关系的多个属性和或多个元祖
断言与数据库约束:断言是一种命名约束,表达了数据库状态必须满足的逻辑条件
CREATE TRIGGER
CREATE TRIGGER `register` AFTER UPDATE ON `student` FOR EACH ROW BEGIN
UPDATE driver_school SET total_number = (total_number + 1) WHERE driver_school.id = student.school_id;
END
CREATE PROCEDURE <procedureName> --<procedureName>存储过程名称
[(<@parameterName><datatype>[=<defaultValue>][OUTPUT]--<@parameterName> 参数名
[,<@parameterName><datatype>[=<defaultValue>][OUTPUT]])]--OUTPUT输出参数
As
<SQL-Statements>
用户标识与鉴别是系统提供的最外层安全保护措施
其基本方法是:系统提供一定的方式让用户标识自己的名字或身份;系统内部记录着所有合法用户的标识;每次用户要求进入系统(与数据库连接)时,由系统核对用户提供的身份标识;通过鉴别的合法用户才能进入系统,建立数据库连接
自主存取控制不能阻止副本的非授权传播
强制存取控制( Mandatory Access Control ,简称MAC)是系统为保证更高程度的安全性所采取的强制存取检查手段
在MAC中,DBMS所管理的全部实体被分为主体和客体两大类:
敏感度标记:绝密、机密、秘密、公开
仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
事务
并发控制
封锁协议:
活锁与死锁:活锁又称饥饿,是某个事务因等待锁而处于无限期等待状态(解决–先来先服务);死锁是两个或两个以上的事务之间的循环等待现象(解决–一次封锁法、顺序封锁法)
死锁的检测与解除:超时法和等待图法
解除死锁:选择一个或多个处于死锁状态的事务,将其撤销并释放这些事务持有的所有的锁,从而打破了循环等待条件,解除死锁,使得其他事务能够继续运行。当然,被撤消的事务对数据库的更新必须恢复(回滚),并且要在稍后需要重新运行
存储器类型:
采用冗余独立磁盘阵列可以保证单个磁盘的故障不会导致数据丢失
数据访问通过input和output将块在主存和磁盘之间移动
基于日志的恢复技术
基于检查点的恢复技术
提高系统故障恢复效率的基本方法是使用检查点技术
在建立检查点时,不允许事务执行任何更新动作,如写缓冲块或写日志记录;建立检查点之后,所有在检查点前发生的更新都已经输出到数据库中,尚未完成的事务都登记在检查点记录中;这样,发生系统故障时,只需要从最近的检查点记录开始扫描日志
对于事务故障用处不大,对于系统故障能提高效率
缓冲技术
转储
其他恢复技术
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。