📜  分布式DBMS-数据库控制

📅  最后修改于: 2021-01-07 05:25:09             🧑  作者: Mango


数据库控制是指执行法规以向正确的用户和数据库应用程序提供正确数据的任务。为了使正确的数据可供用户使用,所有数据都应符合数据库中定义的完整性约束。此外,应将数据与未经授权的用户隔离开,以维护数据库的安全性和私密性。数据库控制是数据库管理员(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 
);