当前课程知识点:数据库概论 > 第四章 数据库完整性、视图与安全性 > 4.1 数据完整性 > 4.1 数据完整性
同学们好
我是来自云南大学软件学院的包崇明
下面我为大家介绍
完整性约束 视图和安全性
本章的主要内容
是介绍数据库管理员
将数据库逻辑设计转化为
物理形式过程中的主要工作
根据逻辑设计结果
数据库管理员
选择一个具体的数据库管理系统
比如ORACLE或者SQL Server
用系统提供的Create Table语句
定义表的字段和约束
生成物理表后装入相应的数据
这个过程
称之为将数据库逻辑设计转换为物理形式
对于复杂约束或者设计时没有考虑到的约束
后期可通过
在表或视图上定义触发器等方法来完成
生成具体的物理表并装入数据后
为了简化数据访问和方便数据管理
一般还需要将数据组织成不同的表现形式
我们称之为视图
通过Create Table语句
创建的表为基础表
基础表是物理存在的
他们的数据存储在磁盘上
视图的数据没有单独存放在磁盘上
而是通过对基础表的数据进行查询得到
所以我们也称视图为虚拟表
数据库系统是面向多个用户的
每个用户只能访问获得授权的数据
所以需要对数据提供安全管理
具体来说
需要在表或者视图上
对数据库用户进行授权
保证只有获得授权用户才能访问相应数据
本章还简单介绍了系统目录
也称为系统定义表
对于用户定义的表
视图 索引等数据库对象
它们的定义信息存放在这些系统定义表中
如需获得数据库对象的定义信息
一般需要通过查询系统定义表得到
对数据库进行逻辑设计后
我们得到一组关系表
即施加于这些表上的完整性约束
完整性约束的目的
是保证表中数据的完整性
主要指数据的正确性与一致性
保证我们在逻辑设计阶段定义的数据相关性
不被错误的SQL更新语句破坏
下面我们先介绍数据完整性
数据完整性类型包括主要包括
实体完整性 参照完整性和用户定义完整性
下面我们对这三类完整性
做一个简单的介绍
首先介绍实体完整性
在数据库的逻辑设计中
我们识别出实体及其联系
实体转换为关系表
实体实例作为关系表中的行数据存储
现实世界中实体实例是可区分的
它们应具有唯一性标识
为了标识实体实例
数据库管理员
选择表中一列或者多列联合构成主键
要求关系表中
每一行在这些列上的取值应该是唯一的
用这些列的取值来标识每个实体实例
为了达到这个目的
就要求表中每一行
在这些列上都不能取空值
因为如果存在一行在这些列上取空值
即使只在其中一列上取空值
都说明这行数据
在这列或者多列上存在不确定性
从而这些列的取值
不能作为这行数据的标识
简洁来说
数据的实体完整性就是要求表中任一数据行
在构成表的主键的列上不能取空值
下面介绍参照完整性
对于实体间的联系
根据情况
我们可将联系转换为一张关系表
或者可通过在一张表中定义由一列或者多列
构成的外键来表示实体间的联系
在这种情形下
外键一般是相关的另外一张表的主键
表示表与表之间的相关性
为了维护这种相关性
对外键的取值应加以限制
我们称为参照完整性
具体来说
参照完整性一般涉及到两张表
在一张表中定义的外键
一般是另外一张表的主键
对于每一数据行
在外键上的取值应如下限制
要么在构成外键的一列或者多列上取空值
要么取另外一张表中
数据行上主键或者候选键值的值
这是因为
表中数据行外键的取值
代表的是两个实体的联系实例
我们要求这个联系实例确实存在
或者允许通过取空值来表示不确定的联系实例
第三类完整性是用户定义的完整性
这类完整性由具体的运用环境决定
主要是对表中某些列的取值有相应的限定
比如在一个学生成绩表中
成绩字段的取值
只能取0-100间的整数值
性别字段的取值限定为男或女等等
在将逻辑模型转换为物理实现过程中
保证上述数据完整性是一项重要的工作
因为我们不希望
在逻辑设计阶段定义的数据相关性
被错误的SQL更新语句破坏
具体来说
就是希望所有违背数据完整性的更新操作
如Insert Delete
Update都不能成功执行
今天的课就到这同学们再见
-数据库概述
--Video
-导论--数据库概述
-1.1 数据库基础
--Video
-第一章 数据库基础--1.1 数据库基础
-2.1 CAP数据库
--CAP数据库
-第二章 关系运算--2.1 CAP数据库
-2.2 自然关系运算1
-- 自然关系运算1
-第二章 关系运算--2.2 自然关系运算1
-2.3 自然关系运算2
--自然关系运算2
-第二章 关系运算--2.3 自然关系运算2
-3.1 SQL概述
-- SQL概述
-3.1 SQL概述--作业
-3.2 数据定义DDL
--数据定义DDL
-3.2 数据定义DDL--作业
-3.3 SQL数据更新DML
-3.3 SQL数据更新DML--作业
-3.4 复杂SQL查询操作1
-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1
-3.5 复杂SQL查询操作2
-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2
-4.1 数据完整性
-4.1 数据完整性--作业
-4.2 完整性约束
--完整性约束
-4.2 完整性约束--作业
-4.3 外键约束
--外键约束
-4.3 外键约束--作业
-4.4 触发器
--触发器
-4.4 触发器--作业
-4.5 视图
--视图
-4.5 视图--作业
-4.6 安全性
--安全性
-4.6 安全性--作业
-5.1 索引
--Video
-5.2 B+树索引
--Video
-6.1 函数依赖
--Video
-6.2 Armstrong公理
--Video
-6.3 无损分解
--Video
-6.4 范式举例
--Video
-6.5 三种范式
--Video
-6.5 三种范式--作业
-7.1-E-R模型概述
--E-R模型概述
-7.2 E-R模型详解
--Video
-7.3 E-R模型的拓展
--Video
-7.4 E-R模型实例分析
--Video
-8.1 事务的ACID性质介绍
--ACID介绍
-8.1 事务的ACID性质介绍--作业
-8.2 事务经历
--事务经历
-8.2 事务经历--作业
-8.3 可串行化调度和前趋图
-8.3 可串行化调度和前趋图--作业
-8.4 两阶段封锁
--两段锁协议
-8.4 两阶段封锁--作业
-8.5 隔离级别
--隔离级别
-8.5 隔离级别--作业
-8.6 事务恢复
--事务恢复
-8.6 事务恢复--作业
-9.1 数据库使用介绍
--数据库使用介绍
-9.2 Java访问数据库
-9.2 Java访问数据库--作业
-10.1 数据库新技术概述
--Video