数据库

record
field
unique

数据模型
数据库层级关系:层次数据模型->每个子数组都有一个母数据(树结构)
hierarchical data model
网状数据模型:network data model->每个子数据都可以有多个母数据(多路树结构)
用指针(point)连接数据表示它们的关系。指针就是表示数据在硬盘上的存储位置的结构。

关系数据模型:relational data model
以二元表格(table)为基础 ->relation

行row -> record
列colum -> field

键(key)

主键(primary key )识别数据功能

投影(projection)抽取列的运算

运算:笛卡尔积(Cartesian product)、除(division)、差(difference)、交(intersection)、并(union)、补、连接(join)、选择(selection)、投影(project)

外键(foreign key):外键参照其他表中的主键时,通过连接,可以将两个表格粘合

除:从‘被除’中调取‘除表格’中包含的所有行,然后再总从中去掉‘除表格’中所有行的运算。

E-R模型掌握整体
E:entity(实体)
R:relationship(关系)
一对一(one to one)
多对多(many to many)
一对多(one to many)
实体之间对应的个数->基数(cardinality)

表格规范化(normallization)
非范式:没有除去数据重复的表格

first normal form:将表格分割成单纯的二元表格,既一栏中只有一个项目,每一列都是不可分割的基本数据项

second normal form:按照通过可识别数据的键来确定其他列值的原则分割表格。
函数依赖(functionally dependant)->通过某一列的值确定其他列的值。第二范式是
根据主键和其他列之间的函数依赖关系分割表格的。

third normal form:按照只能由主键确定其他列值的原则分配表格。
传递依赖(transitively depandant):通过某一列的值间接确定其他列的值。
第三范式是去除传递依赖而分割表格的。

外键参照其他表格的主键

设计数据库模式:
概念模式(conceptual schema):将现实世界的模型化的阶段进而,是确定数据库理论结构的阶段。概念模式设计是通过E-R模式把握现实世界,进而规范化表格来实现的。
内部模式(internal schema):从计算机内部看到的数据库,是确定数据库物理构造的阶段。内部模式通过设计数据库高速检索方法来实现。

外部模式(external schema):从用户和应用的角度来观察数据库。外部模式的设计是通过设计应用程序所必要的数据来实现的。

SELECT 中指定想要调取的列名,在FROM短语中指定想要调取的表格名称。

计算函数:(集合函数-aggregate function)
COUNT(*) 求行数
COUNT(列名)   求取非空值行数
COUNT(DISTINCT列名) 求取排除空值及重复行的行数
SUM(列名)     求取各行的合计值
AVG(列名) 求取各行的平均值
MAX(列名) 求取各行的最大值
MIN(列名) 求取各行的最小值

数据定义语言DDL(data definition language)生成表格
数据操作语言DML(data manipulation language)输入、调取数据
数据控制语言DCL(data control language)管理用户的访问等

SELECT *            ->(列)
FROM  表单
WHERE 条件 LIKE '%瓜'

通配符(%,_)
%表示任意字符串
_表示一个字符

BETWEEN 150 AND 200

WHERE 单价 IS NULL

分组计算
GROUP BY

SELECT 地域,AVG(单价)
FROM 商品
GROUP BY 地域
HAVING AVG(单价)>=200

计算与分组化

使用子查询(subquery)检索

提取(fetch):使用游标抽取每行的数据

SQL具有数据定义功能,数据操作功能和数据约束功能
检索数据时使用SELECT命令
指定条件时使用WHERE命令
插入、更新、删除数据时使用INSERT UPDATE DELETE命令
制作表格时使用CREATE TABLE命令

事务(transaction)

锁(lock)

提交(commit)->确认处理过程

用户仅进行读取操作的时,使用共享锁,上共享锁间,其他用户能够读取数据,但不能写入。
用户想要进行写入操作时,就上独占锁。上独占锁时,其他用户既不能读取也不能写入。

同时执行控制(concurrence):使用锁控制多个事务。

回滚(rollback):取消事务。

事务必须由提交或者回滚中的任何一个来结束。

通过索引提高速度


数据库的故障恢复
日志


前卷法(roll forward):参照更新数据时更新后的值进行回复。


用户的一连贯操作,我们称之为数据库事务(Transaction)


数据库事务具有的性质ACID PROPERTIES
A(atomicity) 原子性 数据库事务必须结束于提交或回滚中的任意一个任务


C(consistency) 一致性 执行数据库事务时不能损坏数据库的一致性


I(isolation) 隔离性  两个事务的执行是互不干扰的,一个事务不可能看到其他事务的运行时,中间某一时刻的数据


D(durability) 持久性  在事务完成之后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚


数据库事务要具有原子性。数据库事务需由提交或回滚来结束。提交是指确定数据库事务处理的指令。回滚是指取消数据库事务处理的指令


关系型SQL -》COMMIT , ROLLBACK


loss update 更新遗失
资源:作为数据库操作对象的表格和行等单位


由于可序列化(serializable),就有必要进行同时执行控制(concurrency control),读取数据时使用共享锁(shared lock),写入操作时使用独占锁(exclusive lock)
可序列化:多个事务并行处理和逐个处理得到的结果一样。


使用共享锁时, 其他事务可以加设共享锁,但是不能加设独占锁。使用独占锁时,无论时共享锁还是独占锁,其他事务都不可以加设。


使用两相锁确保可序列化:各事务都是由加锁和解锁两相构成。


注意锁的粒度(granularity):加锁的范围。


其他同时执行控制:
时间戳控制(timestamp control)
乐观控制(optimistic control):暂时允许各事务读取的处理方法。从写入点开始,确认是否由其他的事务更新了数据。若其他事务更新了数据则回滚。


隔离级别(isolation level)设置
SET TRANSACTION
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE


SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;


脏读(dirty read)
非重复读(non-repeatable read)
虚读(phantom)
未设置隔离级别的情况下,默认为SERIALIZABLE。


数据库安全:
GRANT SELECT , UPDATE ON 商品 TO 外国部; --赋予操作权限


赋予其他用户权限:
GRANT SELECT, UPDATE ON 商品 TO 外国部
WITH GRANT OPTION;


收回权限:REVOKE SELECT, UPDATE ON 商品 TO 外国部;


使用索引进行快速检索
索引方法由
B tree:在B树的每个节点可以有多个子数据,从而控制树的高度。除根节点,其他节点拥有的子数据最多为2n个, 最少为n个


散列(hash):对数据键值运用散列函数,求得存储地址的方法。但不适合用于条件检索和模糊检索。


最优化查询:
先执行选择减少行数
再执行投影减少与结果无关的列
最后执行连接


SELECT 日期, 商品名称
FROM 商品, 销售
WHERE 单价 >= 200
AND 商品.商品编码=销售.商品编码


选择方法:全条件检索方法和索引检索方法。
连接方法:
嵌套循环(neated loop)
一张表格的一行比较另一张表格所有行的方法


分类合并(sort merge)
重新排列各表格的行后,进行连接的方法。


散列(hash)
将一张表格根据散列函数进行分割后,与另一张表格中具有相同散列值的行进行连接的方法。


最优化标准
规则导向(rule based)
预先确定多个规则,按照规则决定的优先顺序选择方法的方式。
成本导向(cost based):
根据数据库内部的统计信息,选择方法的方式。


故障恢复:
事务故障:事务不完备为导致事务不能结束的情况。-》回滚
系统故障:因停电等原因造成系统停运的情况。-》回滚与前卷
介质故障:硬盘损伤的情况。可以基于备份文件进行故障恢复。对备份后提交的事务进行前卷处理。


检查点和恢复
为提高向数据库中写入的效率,多采用暂时将数据写入缓存的方法。写进缓存的内容与检查点中的数据是一致的。检查时对已提交的事务是不必进行故障恢复的。检查时未提交的事务才是故障恢复的对象。


分布式数据库:
在提交时必须使分散的多个数据库不发生矛盾。


存储程序和触发器
触发器(trigger):在数据更新时程序就会自动启动


三层c/s:表示层(客户端)通过web浏览器操作-》功能层(服务器)-》数据层(数据库服务器)


使用存储器
存储过程:没有处理步骤的返回值的程序
存储功能:返回从处理步骤来的返回值的程序
触发:在数据库中进行操作前后启动的程序


分布式数据库(distributed database)
透明度(transparency):用户可以不管数据的位置和移动使用分布式数据库。
水平分布
垂直分布


分配数据
水平分配方式
垂直分配方式


防止两阶段提交的矛盾
数据被提交时不能与任何一个服务器的数据产生矛盾。


两阶段提交(two-phase commit)
由协调者(coordinator)和参与者(participant)构成。
在两阶段提交的第一阶段,协调者查询各参与者是否能够提交。参与者能够提交时,回复OK -》安全确认(secure),第二阶段,协调者发出提交指令,由各参与者进行提交。


第一阶段一个参与者安全确认失败,将会对所有参与者发出回滚指令。


分布式数据库中的表格连接
嵌套循环
分类合并
半连接(semi join):仅将与连接相关的列发送至与之连接的服务器,并减少行之后进行连接的方法。
散列半连接:先求取A服务器中的散列值,并发送至B服务器。在服务器B中也求取散列值。通过散列值之间的检查连接。


复制的配置:
复制的方式:
读取专用:生成并下载从主服务器的主数据库中读取的专用方法。复制是在主服务器连接时生成的。复制仅可读取。
可更新主服务器:
从主服务器生成复制。该复制能够更新。更新复制时被反映在主服务器的主数据库中。
可更新各个服务器:各服务器之间拥有相同主服务器的方法。




XML:替代性数据表现手段


面向对象数据库
对每个对象都添加标识符进行显示,对象称作示例(instance)

封装(encapsulation)

漫画数据库知识记录


图如果侵权,请联系我删除

相关文章:

  • 2022-12-23
  • 2021-12-30
  • 2021-04-22
  • 2021-12-26
猜你喜欢
  • 2021-07-25
  • 2022-12-23
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
相关资源
相似解决方案