- 分布式数据库管理系统教程
- DDBMS - 首页
- DDBMS - 数据库概念
- DDBMS - 分布式数据库
- 分布式数据库设计
- 分布式数据库环境
- DDBMS - 设计策略
- DDBMS - 分布式透明性
- DDBMS - 数据库控制
- 分布式数据库管理系统安全
- 数据库安全与密码学
- 分布式数据库中的安全
- 分布式数据库管理系统资源
- DDBMS - 快速指南
- DDBMS - 有用资源
- DDBMS - 讨论
分布式数据库管理系统 - 数据库控制
数据库控制是指执行规章制度的任务,以便为数据库的合法用户和应用程序提供正确的数据。为了确保用户可以使用正确的数据,所有数据都应符合数据库中定义的完整性约束。此外,应将数据屏蔽在未经授权的用户之外,以维护数据库的安全性和隐私性。数据库控制是数据库管理员 (DBA) 的主要任务之一。
数据库控制的三个维度是:
- 身份验证
- 访问权限
- 完整性约束
身份验证
在分布式数据库系统中,身份验证是只有合法用户才能访问数据资源的过程。
身份验证可以在两个级别强制执行:
控制对客户端计算机的访问 - 在此级别,在登录到为数据库服务器提供用户界面的客户端计算机时,将限制用户访问。最常见的方法是用户名/密码组合。但是,对于高安全性数据,可以使用更复杂的方法,例如生物识别身份验证。
控制对数据库软件的访问 - 在此级别,数据库软件/管理员会向用户分配一些凭据。用户使用这些凭据访问数据库。一种方法是在数据库服务器中创建一个登录帐户。
访问权限
用户的访问权限是指赋予用户的关于数据库管理系统操作的特权,例如创建表、删除表、在表中添加/删除/更新元组或查询表的权限。
在分布式环境中,由于表数量众多,用户数量更多,因此为用户分配单个访问权限是不可行的。因此,DDBMS 定义了某些角色。角色是在数据库系统中具有某些特权的构造。定义不同的角色后,将向各个用户分配这些角色之一。通常会根据组织的权力和责任等级定义角色层次结构。
例如,以下 SQL 语句创建角色“Accountant”,然后将此角色分配给用户“ABC”。
CREATE ROLE ACCOUNTANT; GRANT SELECT, INSERT, UPDATE ON EMP_SAL TO ACCOUNTANT; GRANT INSERT, UPDATE, DELETE ON TENDER TO ACCOUNTANT; GRANT INSERT, SELECT ON EXPENSE TO ACCOUNTANT; COMMIT; GRANT ACCOUNTANT TO ABC; COMMIT;
语义完整性控制
语义完整性控制定义并强制执行数据库系统的完整性约束。
完整性约束如下:
- 数据类型完整性约束
- 实体完整性约束
- 参照完整性约束
数据类型完整性约束
数据类型约束限制可以应用于具有指定数据类型的字段的值范围和操作类型。
例如,让我们考虑一个名为“HOSTEL”的表,它包含三个字段:宿舍编号、宿舍名称和容量。宿舍编号应以大写字母“H”开头,不能为 NULL,容量不应超过 150。可以使用以下 SQL 命令进行数据定义:
CREATE TABLE HOSTEL ( H_NO VARCHAR2(5) NOT NULL, H_NAME VARCHAR2(15), CAPACITY INTEGER, CHECK ( H_NO LIKE 'H%'), CHECK ( CAPACITY <= 150) );
实体完整性控制
实体完整性控制强制执行规则,以便可以唯一地识别每个元组与其他元组。为此,定义主键。主键是可以唯一标识元组的一组最小字段。实体完整性约束规定表中不允许有两个元组具有相同的主键值,并且任何作为主键一部分的字段都不能具有 NULL 值。
例如,在上例的宿舍表中,可以通过以下 SQL 语句将宿舍编号分配为主键(忽略检查):
CREATE TABLE HOSTEL ( H_NO VARCHAR2(5) PRIMARY KEY, H_NAME VARCHAR2(15), CAPACITY INTEGER );
参照完整性约束
参照完整性约束规定了外键的规则。外键是数据表中的一个字段,它是相关表的主键。参照完整性约束规定外键字段的值必须属于被引用表的主键值,或者完全为 NULL。
例如,让我们考虑一个学生表,其中学生可以选择住在宿舍。为此,应将宿舍表的主键作为外键包含在学生表中。以下 SQL 语句包含此内容:
CREATE TABLE STUDENT ( S_ROLL INTEGER PRIMARY KEY, S_NAME VARCHAR2(25) NOT NULL, S_COURSE VARCHAR2(10), S_HOSTEL VARCHAR2(5) REFERENCES HOSTEL );