数据库的基本概念
- 数据data: 描述事物的符号,数据库中存储的基本对象
- 数据库Database: 长期存储在计算机内的、有组织的、可共享的大量数据的集合
- 数据库管理系统DBMS:位于用户与操作系统之间的一层数据管理软件
- 数据库系统DBS:由数据库、数据库管理系统、应用程序、和数据库管理员(DBA)组成。
数据库系统的特点
- 数据结构化
- 数据的共享性高,冗余度低而且容易扩充
- 数据独立性高:物理独立性(应用程序与物理存储相互独立,数据的物理存储改变,应用程序不改变),逻辑独立性(应用程序与逻辑结构相互独立,数据的逻辑结构改变,应用程序不改变)
- 数据由数据库管理系统统一管理和控制
数据模型
- 包括概念模型、逻辑模型、物理模型
- 概念模型:按用户的观点建模,用于数据库设计(E-R模型)
- 逻辑模型:按计算机的观点建模,用于DBMS实现,包括网状模型、层次模型、关系模型
- 物理模型:对数据最底层的抽象
数据模型的组成要素:数据结构、数据操作、数据的完整性约束条件
数据模型是严格定义的一组概念的集合,需要精确描述系统的静态特性、动态特性和完整性约束条件
- 数据结构:描述系统的静态特性-->描述数据库的组成对象和对象之间的联系
- 数据操作:描述系统的动态特性-->是对数据库中各种对象的实例所允许的操作的集合,其类型有查询和更新(增删改)
- 数据的完整性约束条件:用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效与相容,完整性约束条件是一组完整性规则的集合。
三级模式结构:外模式、模式(逻辑模式)、内模式
一、外模式(子模式/用户模式):数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某应用有关的数据的逻辑表示
二、模式(逻辑模式):数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
三、内模式(存储模式):数据物理结构和存储方法的描述,是数据在数据库内部的组织方式
数据库的二级映像功能与数据独立性
-
外模式/模式映像:保证了数据的逻辑独立性
当模式改变时,对外模式/模式的映像做出改变,保证外模式不变,应用程序由外模式编写,从而应用程序不变 -
模式/内模式映像:保证了数据的物理独立性
当数据库的存储结构改变时,对模式/内模式映像做出改变,使模式不变,进而应用程序不变。
数据库安全性
不安全因素
1、非授权用户对数据库的恶意存取和破坏
2、 数据库中重要数据的泄露
3、 安全环境的脆弱性
数据库安全性控制
1、 用户身份鉴别:静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别
2、 存取控制
3、自主存取控制方法
为什么要授权
授权是指授予(GRANT)和收回(REVOKE),是数据库安全性控制中的自主存取控制方法。是为了保护数据库,防止不合法使用造成的数据泄露、更改或破坏
如何授权:授予GRANT
发出如下语句的可以是数据库管理员、也可以是数据库对象创建者、也可以是已经拥有该权限的用户
GRANT 权限 ON 对象类型 对象名 TO 用户名 [WITH GRANT OPTION];
权限:查询权限SELECT,全部操作权限ALL PRIVILEGES
对象类型&对象名:对象类型是TABLE或VIEW,对象名是表名或视图名
用户名:指定用户或全体用户PUBLIC
SQL不允许循环授权,授权者不能把权限再授回给授权者或其祖先
收回REVOKE
REVOKE 权限 ON 对象类型 对象名 FROM 用户名 [CASCADE|RESTRICT]
CASCADE:级联回收。将用户传播出去的权限一并收回
RESTRICT:受限回收。若用户传播过该权限,回收将会失败
创建数据库模式的权限
在DBA创建用户时实现
CREATE USER username [WITH DBA|RESOURCE|CONNECT];
DBA:可以创建新用户、创建模式、创建基本表和视图等,拥有对所有数据库对象的存取权限,还可以把这些权限授权给一般用户
RESOURCE:可以创建基本表和视图,但不能创建模式和新用户。数据库对象的主人可以用GRANT把该对象的存取权限授予其他用户
CONNECT(默认):只能登陆数据库,根据其他用户或数据库管理员授予的权限的情况对数据库对象进行权限范围内的操作
数据库角色
角色是权限的集合。可以为一组具有相同权限的用户创建角色,简化授权过程
创建角色:CREATE ROLE 角色名;
在一个角色中添加角色或用户:GRANT 角色 TO 某角色/某用户 [WITH ADMIN OPTION];
给角色授权:GRANT 权限 ON 对象类型 对象名 TO 角色;
角色权限收回:REVOKE 权限 ON 对象类型 对象名 FROM 角色;
视图机制
为不同的用户定义不同的视图,把不需要的数据隐藏,这样用户就不会误操作
审计
把对数据库的所有操作都记录到审计日志中,然后就可以通过日志审查是否有非法行为
数据加密
加密算法,把明文变密文,其他人无法查看