数据库的定义:数据库(DataBase简称DB)是长期存在计算机内,有组织的,可共享的大量数据集合。
数据库的特征:
- 数据按一定的数据模型住址,描述和存储。
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
结构化查询语言
结构化查询语言包含6个部分:
- 数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。
- 数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。
- 事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令,SAVEPOINT(保存点)命令,ROLLBACK(回滚)命令。
- 数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
- 数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。
- 指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
(来自百度百科)
数据与联系
数据抽象
- 物理层:最低层次的抽象,描述数据实际上如何存储的。
- 逻辑层:比物理层次稍高的层次的抽象,描述数据库中存储什么数据以及这些数据间存在什么关系。
- 视图层:最高层次的抽象,但只描述整个数据库的某个部分。使用户与系统交互更简单。
数据模型
数据模型是现实世界数据特征的抽象,用于描述一组数据的概念和定义。数据模型是数据库中数据的存储方式,是数据库系统的基础。在数据库中,数据的物理结构又称数据的存储结构,就是数据元素在计算机存储器中的表示及其配置;数据的逻辑结构则是指数据元素之间的逻辑关系,它是数据在用户或程序员面前的表现形式,数据的存储结构不一定与逻辑结构一致。数据模型的三要素:数据结构、数据操作和数据约束。
1.概念数据模型
这是面向数据库用户的现实世界的数据模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及数据库管理系统的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据库管理系统无关。概念数据模型必须换成逻辑数据模型,才能在数据库管理系统中实现。例如:ER模型
2.逻辑数据模型
这是用户在数据库中看到的数据模型,是具体的数据库管理系统所支持的数据模型,主要有网状数据模型、层次数据模型和关系数据模型三种类型。此模型既要面向用户,又要面向系统,主要用于数据库管理系统的实现。在数据库中用数据模型来抽象、表示和处理现实世界中的数据和信息,主要是研究数据的逻辑结构。
3.物理数据模型
这是描述数据在存储介质上的组织结构的数据模型,它不但与具体的数据库管理系统有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有与其相对应的物理数据模型。数据库管理系统为了保证其独立性与可移植性,将大部分物理数据模型的实现工作交由系统自动完成,而设计者只设计索引、聚集等特殊结构。
逻辑数据模型的三类
1.层次模型(Hierchical)
层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵“有向树”。根结点在最上端,层次最高,子结点在下,逐层排列。层次模型的特征是:
(1)有且仅有一个结点没有父结点,它就是根结点;
(2)其他结点有且仅有一个父结点。图所示为一个系教务管理层次数据模型,图(a)所示的是实体之间的联系,图(b)所示的是实体型之间的联系。
2. 网状模型(Network)
网状模型以网状结构表示实体与实体之间的联系。网中的每一个结点代表一个记录类型,联系用链接指针来实现。网状模型可以表示多个从属关系的联系,也可以表示数据间的交叉关系,即数据间的横向关系与纵向关系,它是层次模型的扩展。网状模型可以方便地表示各种类型的联系,但结构复杂,实现的算法难以规范化。其特征是:
(1)允许结点有多于一个父结点;
(2)可以有一个以上的结点没有父结点。
3.关系模型(Relation)
关系模型以二维表结构来表示实体与实体之间的联系,它是以关系数学理论为基础的。关系模型的数据结构是一个“二维表框架”组成的集合。每个二维表又可称为关系。在关系模型中,操作的对象和结果都是二维表。关系模型是目前最流行的数据库模型。支持关系模型的数据库管理系统称为关系数据库管理系统,Access就是一种关系数据库管理系统。图所示为一个简单的关系模型,其中图(a)所示为关系模式,图(b)所示为这两个关系模型的关系,关系名称分别为教师关系和课程关系,每个关系均含3个元组,其主码均为“教师编号”。
(1)描述的一致性,不仅用关系描述实体本身,而且也用关系描述实体之间的联系;
(2)可直接表示多对多的联系;
(3)关系必须是规范化的关系,即每个属性是不可分的数据项,不许表中有表;
(4)关系模型是建立在数学概念基础上的,有较强的理论依据。
在关系模型中基本数据结构就是二维表,不用像层次或网状那样的链接指针。记录之间的联系是通过不同关系中同名属性来体现的。例如,要查找“刘晋”老师所上的课程,可以先在教师关系中根据姓名找到教师编号“1984030”,然后在课程关系中找到“1984030”任课教师编号对应的课程名即可。通过上述查询过程,同名属性教师编号起到了连接两个关系的纽带作用。由此可见,关系模型中的各个关系模式不应当是孤立的,也不是随意拼凑的一堆二维表,它必须满足相应的要求。关系是一个二维表,即元组的集合。关系框架是一个关系的属性名表。形式化表示为:R(A1,A2,…,An)其中,R为关系名,Ai(i=1,2,…,n)为关系的属性名。关系之间通过公共属性实现联系。例如,图所示为两个关系,通过“教师编号”公共属性实现两个关系之间的联系。
关系数据库是指对应于一个关系模型的所有关系的集合。例如,在一个教务管理关系数据库中,包含教师关系、课程关系、学生关系、任课关系、成绩关系等。
参考自MBA智库-百科
数据项之间的联系
数据项之间的联系有三种:一对一,一对多,和多对多。
设有两个数据项:A和B。
一对一(1:1):给A一个值,有且只有一个B的值和其相联。给B一个B值,有且只有一个A的值和其相联。
一对多(1:M):给A一个值,有零,一或多个B的值和其相联。但给B一个值,只能有一个A的值和其相联
多对多(N:M):给A一个值,有零,一或多个B的值和其相联。给B一个值,有零,一或多个A的值和其相联
记录值之间的联系
记录型之间的联系表示两个实体类之间在某种意义下的数据抽象关系,而记录值之间的联系则是这种搞关系的具体体现。记录值间的联系与数据项间的联系一样有三种联系,定义也一样。
事务特性(ACID)
-
原子性(Atomicity)
(1)事务中包含的所有操作要么全做,要么全不做
(2)原子性由恢复机制实现 -
一致性(Consistency)
(1)事务的隔离执行必须保证数据库的一致性
(2)事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态
(3)数据库的一致性状态由用户来负责,由并发控制机制实现
(4)事务运行过程中允许暂时的不一致
(5)例如:银行转账,转账前后两个账户金额之间和应该保持不变 -
隔离性
(1)系统必须包证事务不受其它并发执行事务的影响
(2)对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行
(3)隔离性通过并发控制机制实现 -
持久性
(1)一个事务一旦提交之后,它对数据库的影响必须是永久的
(2)系统发生故障不能改变事务的持久性
(3)持久性通过恢复机制实现
over over over over over over over over over over over over over over over over over over over over over over over over over