分布式数据库管理系统 - 数据库控制
数据库控制是指执行法规的任务,以便向数据库的真实用户和应用程序提供正确的数据。 为了向用户提供正确的数据,所有数据都应符合数据库中定义的完整性约束。 此外,应屏蔽数据以防止未经授权的用户使用,以维护数据库的安全和隐私。 数据库控制是数据库管理员(DBA)的主要任务之一。
数据库控制的三个维度是 −
- 身份验证
- 访问权限
- 完整性约束
身份验证
在分布式数据库系统中,身份验证是只有合法用户才能访问数据资源的过程。
身份验证可以在两个级别上强制执行 −
控制对客户端计算机的访问 − 在此级别,用户在登录向数据库服务器提供用户界面的客户端计算机时访问受到限制。 最常见的方法是用户名/密码组合。 然而,更复杂的方法(例如生物识别身份验证)可用于高安全性数据。
控制对数据库软件的访问 − 在此级别,数据库软件/管理员向用户分配一些凭据。 用户使用这些凭据获得对数据库的访问权限。 其中一种方法是在数据库服务器中创建登录帐户。
访问权限
用户的访问权限是指授予用户有关 DBMS 操作的权限,例如创建表、删除表、添加/删除/更新表中的元组或查询表的权限。
在分布式环境中,由于表数量较多,用户数量较多,为用户分配单独的访问权限是不可行的。 因此,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 );