第5章 データベースの設計 5.1 5.2 5.3 5.4 データベース設計の概要 ERモデルとスキーマ設計 正規化 一貫性制約 5.4 一貫性制約 一貫性制約とは 実世界の制約条件をデータベースの制約条件と して記述(これを一貫性制約という)し、データベー スの内容が制約条件を満足するよう制御する。 【例】 主キー制約 参照一貫性制約 属性値制約 タプル単位の制約 複数関係にまたがる制約 DBMSでは ①初期システム SQLに一貫性制約の機能がなかったので、表現 方法や管理方法はシステムによって異なっていた。 ②SQL92 一貫性制約に関する機能が盛り込まれた。 ③SQL99 トリガ等の機能が追加された。 一貫性制約の実現方法 ①データ定義言語で一貫性制約を記述 一貫性管理はデータベース管理システムが行う。 ②チェックと違反時処理はユーザが作成 更新等の特定動作を行うとき、データベース管理システム は動作に応じて指定されたプログラムを起動する。または アプリケーションプログラム自身でチェック機能を実行する。 最近のシステムでは、複雑な制約も①の方法で可 能であることが多い。 1.キー制約 最も基本的な主キー制約について示す ①主キーが同一のタプルが2つ以上存在してはいけない。 ②主キーはNULLであってはならない。 SQLでは、CREATE TABLE文のPRIMARY KEY句で指定する。 【例】 CREATE TABLE 履修( 学籍番号 CHAR(6), 科目名 CHAR(6), 成績 INT, PRIMARY KEY (学籍番号,科目名)) 2.参照一貫性制約 参照一貫性制約とは? ①関係の属性が実際に存在する対象を示してい ることを保証する。 ②参照一貫性制約は外部キーを宣言することに より実現する。 【例】 履修{学生氏名,科目名,成績}では、学生氏名や科 目名が存在しなければならない。 (a) 外部キー 関係Rの属性集合Xが 関係Sの主キーYと一致するとき、 XをRの外部キーという。 正確には NULLまたは Xの属性値と同じYの値を 持つタプルが存在する。 (注) RとSは同じであってもよい。 参照一貫性違反時 主キー制約のときは違反処理は拒否だが、 参照一貫性違反時はいくつかの選択肢がある。 ①参照側の関係のタプルの変更や削除 ②参照される関係のタプル変更や削除 ③違反する処理の拒否 ④NULLやデフォルト値の設定 ⑤値変更時に整合性がとれるよう対応する側の値を変更 3.属性の制約 主キーなどの宣言と同様CREATE TABLE文で宣言 ①ユニーク制約(UNIQUE) ②NOT NULL ③CHECK制約 ④定義域(ドメイン)制約(CHECKで行う) 【構文図】 制約の指定方法 CREATE TABLE 実表名 , ( 列名 DEFAULT データ型 データ型 USER NULL UNIQUE PRIMARY KEY , ( 列名 ) , ( 列名 PRIMARY KEY UNIQUE 参照列指定 検査条件指定 検査条件指定 FORIEGN KEY NOT NULL ) ) 参照列と検査条件 【参照列指定】 , REFERENCE ( 実表名 列名 ) 【検査条件指定】 CHECK ( 検査条件式 ) 意味 ①DEFAULT : データが入力されなかった時の値。USERを指定すると スキーマ定義で指定したユーザ名、NULLはNULL値 ②NOT NULL : NULL値を持たない(NULL制約) ③UNIQUE : 列が各組を一意的に識別できる候補キー(一意性制 約) ④PRIMARY KEY : 列は主キー(主キー制約) ⑤参照列指定 : 指定した列名が参照する実表の列名を指定 ⑥検査条件指定 : 列名がアクセスされたとき満たすべき条件 ⑦FOREIGN KEY : 列名の並びが外部キーであることを指定 ⑧UNIQUE, PRIMARY KEY(列名の並び) : 「列名の並び」で指定された列名は③と④と同じよう に一意性制約、および主キーであることを示す。 4.関係の制約 ① 属性宣言の後のCHECKで行う。 ② 属性チェックの場合、対象属性変更のタイミングで変 更されるが、関係制約ではどの属性が変更されても チェックされる。 5.アサーションによる制約 関係宣言内ではなく、独立に以下の文で宣言される。 CREATE ASSERTION アサーション名 CHECK (条件式) ①WHERE句に書ける任意の条件を用いることができる。 ②データベースに何らかの更新が行われたときにチェックさ れるので、制約管理を確実に行うことができる。 ③属性や関係に対するCHECKのほうがチェック回数が少ないの でシステム効率が良い。アサーションによる製薬は効率が 悪い。 トリガをECAルール(Event Condition Action Rule) ともいう 6.トリガ 指定されたイベントが発生したとき、 指定された条件が成立するかどうかをチェックし、 成立した場合、指定したアクションを行う。 (通常のプログラミングでのイベントハンドラ) ①アクションの実行とイベントの実行との関連を指定できる (イベントの前後、イベントの代わりに実行) ②イベントで更新を行うとき更新の前後の条件を記述するこ とができる(更新後の値が大きい、小さい等の条件)。 ③イベントの実行を拒否したり、アクション内からデータ ベース操作も可能である。
© Copyright 2024 ExpyDoc