分散DBMS-データベース制御

データベース制御とは、データベースの本物のユーザーとアプリケーションに正しいデータを提供するために規制を施行するタスクを指します。ユーザーが正しいデータを利用できるようにするには、すべてのデータがデータベースで定義されている整合性制約に準拠している必要があります。さらに、データベースのセキュリティとプライバシーを維持するために、許可されていないユーザーからデータを選別する必要があります。データベース制御は、データベース管理者(DBA)の主要なタスクの1つです。

データベース制御の3つの次元は次のとおりです。

  • Authentication
  • アクセス権
  • 整合性制約

認証

分散データベースシステムでは、認証は正当なユーザーのみがデータリソースにアクセスできるプロセスです。

認証は2つのレベルで実施できます-

  • Controlling Access to Client Computer−このレベルでは、データベースサーバーへのユーザーインターフェイスを提供するクライアントコンピューターへのログイン中のユーザーアクセスが制限されます。最も一般的な方法は、ユーザー名とパスワードの組み合わせです。ただし、高度なセキュリティデータには、生体認証などのより高度な方法を使用できます。

  • Controlling Access to the Database Software−このレベルでは、データベースソフトウェア/管理者がいくつかの資格情報をユーザーに割り当てます。ユーザーは、これらの資格情報を使用してデータベースにアクセスできます。方法の1つは、データベースサーバー内にログインアカウントを作成することです。

アクセス権

ユーザーのアクセス権とは、テーブルの作成、テーブルの削除、テーブル内のタプルの追加/削除/更新、またはテーブルに対するクエリなど、DBMS操作に関してユーザーに付与される特権を指します。

分散環境では、テーブルの数が多く、ユーザーの数も多いため、ユーザーに個別のアクセス権を割り当てることはできません。したがって、DDBMSは特定の役割を定義します。ロールは、データベースシステム内で特定の特権を持つ構成です。さまざまな役割が定義されると、個々のユーザーにこれらの役割の1つが割り当てられます。多くの場合、役割の階層は、組織の権限と責任の階層に従って定義されます。

たとえば、次の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」に、ホステル番号、ホステル名、収容人数の3つのフィールドがあるとします。ホステル番号は大文字の「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) 
);

エンティティ整合性制御

エンティティ整合性制御は、各タプルが他のタプルから一意に識別できるようにルールを適用します。このために主キーが定義されます。主キーは、タプルを一意に識別できる一連の最小フィールドです。エンティティ整合性制約は、テーブル内の2つのタプルが主キーに対して同一の値を持つことはできず、主キーの一部であるフィールドが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 
);