Distributed-dbms-database-control

提供:Dev Guides
移動先:案内検索

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

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

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

  • 認証
  • アクセス権
  • 整合性の制約

認証

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

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

  • クライアントコンピューターへのアクセスの制御-このレベルでは、データベースサーバーへのユーザーインターフェイスを提供するクライアントコンピューターへのログイン中は、ユーザーアクセスが制限されます。 最も一般的な方法は、ユーザー名とパスワードの組み合わせです。 ただし、高度なセキュリティデータには、生体認証などのより高度な方法を使用できます。
  • データベースソフトウェアへのアクセスの制御-このレベルでは、データベースソフトウェア/管理者がユーザーに資格情報を割り当てます。 ユーザーは、これらの資格情報を使用してデータベースにアクセスします。 方法の1つは、データベースサーバー内にログインアカウントを作成することです。

アクセス権

ユーザーのアクセス権とは、テーブルの作成、テーブルのドロップ、テーブル内のタプルの追加/削除/更新、またはテーブルに対するクエリなどの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」には、ホステル番号、ホステル名、および容量の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であるかのルールを定めます。

たとえば、学生がホステルに住むことを選択できる学生テーブルについて考えてみましょう。 これを含めるには、hostelテーブルのプライマリキーをstudentテーブルの外部キーとして含める必要があります。 次の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
);