Updated December 26, 2018
数据库系统概述
- 数据库: 长期存储在计算机内, 有组织的, 可共享的大量数据的集合. 数据库数据具有永久存储, 有组织和可共享三个特点
- 数据库管理系统: 位于用户与操作系统之间的一层数据管理软件.
- 数据库系统: 由数据库, 数据库管理系统, 应用程序和数据库管理员组成的存储, 管理, 处理和维护数据的系统
数据模型
数据模型是数据库系统的核心和基础.
概念模型
按用户的观点来对数据和信息建模, 主要用于数据库设计
概念模型的表示方法很多, 其中最为常用的一种是实体-联系方法, 该方法用E-R图来描述.
逻辑模型
主要包括层次模型, 网状模型, 关系模型, 面向对象数据模型, 对象关系数据模型和半结构化数据模型. 按计算机系统的观点对数据建模, 主要用于数据库管理系统的实现.
物理模型
描述数据在系统内部的表示方式和存取方法
数据模型的组成要素:
- 数据结构: 描述数据库的组成对象以及对象之间的联系
- 数据操作: 指对数据库中各种对象的实例允许执行的操作的集合
- 数据的完整性约束条件: 给定的数据模型中数据及其联系所具有的制约和依存规则, 保证数据的正确, 有效和相容
逻辑模型:
- 层次模型
用树形结构来表示各类实体以及实体间的联系.
(1)有且只有一个结点而没有双亲结点, 这个结点称为根结点
(2)根以外的其他结点有且只有一个双亲结点
优点: 数据结构比较简单清晰, 查询效率高, 层次数据库性能优于关系数据库, 不低于网状数据库
缺点: 查询子女结点必须通过双亲结点, 实际上有一些结点之间具有多对多联系, 不适合用层次模型 - 网状模型
(1)允许一个以上的结点没有双亲
(2)一个结点可以有多于一个的双亲 - 关系模型
关系(relation): 一个关系对应通常说的一张表
元组(tuple): 表中的一行即为一个元组
属性(attribute): 表中的一列即为一个属性
码(key): 表中的某个属性组, 可以唯一确定一个元组
域(domain): 一组具有相同数据类型的值的集合. 如大学生年龄属性的域是(15~25)
数据库系统模式
- 模式(schema)
数据模型中有型和值的概念, 型是指对某一类数据的结构和属性的说明, 值是型的一个具体赋值. 模式(schema)是数据库中全体数据的逻辑结构和特征的描述, 仅仅涉及型的描述, 不涉及具体的值. 模式的一个具体值称为模式的一个实例. 一个数据库只有一个模式 - 外模式(external schema)
也称子模式或用户模式, 是数据库用户能看见和使用的局部数据的逻辑结构和特征的描述. 一个数据库可以有多个外模式 - 内模式(internal schema)
也称存储模式, 一个数据库只有一个内模式, 它是数据物理结构和存储方式的描述.
关系数据库
基本的关系操作: 选择(select), 投影(project), 并(union), 差(except), 笛卡尔积
关系完整性
- 实体完整性: 若属性A是关系R的主属性, 则A不能取空值
- 参照完整性: 设F是关系R的一个属性, 但不是R的码, K是关系S的主码, 如果F和K相对应, 则称F是K的外码(foreign key)
- 用户定义的完整性: 反映某一具体应用所涉及的数据必须满足的语义要求
数据库安全性
用户身份鉴别
- 静态口令鉴别: 设置口令强度, 在存储和传输过程中口令信息均以密文方式存在
- 动态口令鉴别: 每次鉴别时均需使用动态产生的新口令登录数据库管理系统
- 生物特征鉴别: 采用图像处理和模式识别等技术实现了基于生物特征的认证
- 智能卡鉴别: 智能卡是一种不可复制的硬件, 内置集成电路的芯片, 具有硬件加密功能
存取控制
存取控制主要包括定义用户权限和合法权限检查两部分
- 定义用户权限, 并将用户权限记录到数据字典中
- 合法权限检查, 若用户的操作请求超出了定义的权限, 系统将拒绝此操作
授权: 授予和收回
-- 把对Student表和Course表的全部操作权限授予用户u1和u2
grant all privileges on table Student, Course to u1, u2;
-- 把对表SC的查询删除权限授予所有用户
grant select, delete on table SC to public;
-- 把修改学生学号的权限授予用户u1
grant update(Sno) on table Student to u1;
-- 把对表SC的insert权限授予u1用户, 并允许将此权限再授予其他用户
grant insert on table SC to u1 with grant option;
-- 级联收回u1对表SC的查询权限
revoke select on table SC from u1 cascade;
数据库完整性
数据的完整性是为了防止数据库中存在不符合语义的数据, 也就是防止数据库中存在不正确的数据
-- 当学生的性别是男时, 其名字不能以Ms.开头
create table Student(
Sno char(9) primary key,
Sname char(8) unique not null,
Ssex char(2),
check(Ssex = '女' or Sname not like 'Ms.%')
);
完整性约束命名子句
-- 建立学生表Student, 要求年龄小于30, 性别只能是男或女
create table Student (
Sno char(9),
Sname char(20) constraint c1 not null,
Sage smallint constraint c2 check(Sage < 30),
Ssex char(2) constraint c3 check(Ssex in ('男', '女')),
constraint c4 primary key(Sno)
);
-- 去掉Student表中对性别的限制
alter table Student drop constraint c3;
-- 修改Student表中的约束条件, 年龄由小于30改为小于25
alter table Student drop constraint c2;
alter table Student add constraint c2 check(Sage < 25);
数据库设计
需求分析
- 调查用户需求
(1)信息要求. 指用户需要从数据库中获得信息的内容和性质
(2)处理要求. 指用户要完成的数据处理功能, 对处理性能的要求
(3)安全性和完整性要求
概念结构设计
E-R图:
- 作为属性, 不能再具有需要描述的性质
- 属性不能与其他实体具有联系