Distributed-dbms-database-control
分散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
);