* 6 整合性制約
本文が散漫に思えるので、自分なりにまとめなおす。
- 整合性制約とは
- ブール式である。
- リレーショナルモデルのそこかしこで、とりうる
値の制限に用いられる。
- 整合性制約の分類
- 型制約
- 特定の型に属する値を定義する。
- 属性制約
- 関係におけるタプルの定義の際に、タプルの属
性の型を指定するが、それはその属性が取りう
る値を定義しているので、制約の一種と見做せ
る。
- データベース制約
- 特定のデータベースに格納できる値の制約。
- 例えば、特定のデータベースのある関係のある
属性の型の制約は[0,10000]であるが、ビジネス
ルールとして、この関係においてはそれが
[1,100]であるべきときなど。
- タプル制約
- データベース制約のうち、単独のタプルを調
べれば制約条件を判定できるものを、便宜上、
タプル制約と呼ぶことがある。
- (単一)関係変数制約
- 関係変数がひとつだけ含まれる制約のこと。
- 多重関係変数制約
- 関係変数が複数含まれる制約のこと。
- 遷移制約
- 関係変数を更新する際に、更新前と更新後の
間で満たさなければいけない制約のこと。
- 参照整合性制約
- 関係変数間で指定された外部キー制約が常に
存在し、成立すること。
- 型制約がチェックされるとき
- 型制約がチェックされるのは、何らかのセレクタが
呼び出されたときである。そのときに型制約とセレ
クタの値が比較されて、制約を満たしていれば処理
が進み、満たしていなければエラーとなる。
- データベース制約がチェックされるとき
- 単一関係変数制約
- 関係変数が更新されるとき。
- 多重関係変数制約
- 一般論
トランザクションの最後でチェックされる。す
なわち、そこまで先送りされる。
- Date論
トランザクションであっても、データベース制
約は即時チェックであり先送りすべきではない。
一般論は論理的に誤りがある。
- トランザクションとは
- リレーショナルモデルとは別の話題なので、この本
では説明しない、とのこと。知識の無い人は
"Transaction Processing: Concepts and
Techniques"を読め、と。
- トランザクションのACID特性
- Atomicity (原子性)
- トランザクション処理は、処理の単位として原
始的である。すなわちそれが、あるか、ないか
であり、分解はされない。
- Consistency (一貫性)
- トランザクション処理によって、データベース
の一貫性を壊さない。
- Isolation (分離性)
- トランザクション処理中であることは、並行し
て動く他の処理から隠蔽されている。すなわち
トランザクション処理中にデータベースに対す
る操作があったとしても、それは他の処理から
は見えず、無影響である。
- Durability (持続性)
- トランザクション処理が正常に完了(コミット)し
たならば、それはデータベース上の永続化まで
終わっており、システムクラッシュなどが発
生しても消えないことが保証されねばならな
い。
- 一般論とDateの相違点
- 一般論
- 複数の文を束ねてトランザクション処理を構成す
る。だから先送りが発生する。
- Date
- トランザクションはひとつの文で表すべきであ
る。リレーショナルモデルでは、文が整合性チェッ
クの原始的な単位であるから、それと一致して
おり、トランザクションを特別視していない。
- SQLでトランザクションを使うとき
- SQLでトランザクションを使うのは、複数文に処理
が跨り、処理中はデータベースの制約条件(一貫性)が
壊れているときだ。
- 例
BEGIN TRANSASCTION ;
UPDATE S SET CITY = 'Paris' WHERE SNO = SNO('S1') ;
UPDATE P SET CITY = 'Paris' WHERE PNO = PNO('P1') ;
COMMIT ;
- これはそもそも、値を作ることと代入することが分
離できていないことと、複数関係変数に対する代入
を一度に実施できないことに起因している。
- すなわち、SQLの記述力が低いから文を跨るトラン
ザクションが必要になるのだ。
- Tutorial Dの場合
- Tutorial Dには多重代入があるので、前項のSQLの
例は一文で書ける。
- 例
UPDATE S WHERE SNO = SNO('S1') (CITY := 'Paris'),
UPDATE P WHERE SNO = SNO('P1') (CITY := 'Paris');
- 制約と述語
- 関係に含まれるタプルは、意味論としては命題を
表わしていた。
- 関係と関係変数は同じ型を持ち、前項の意味論で
考えるとき関係変数は関係変数述語をもち、その
変項をタプルが指定していると考えられた。
- 現状のデータベース管理システムは、ユーザが投
入しようとしているタプルがこの意味論において
現実世界で真であることを確認することはできな
い。例えば、あるサプライヤの所在地が名古屋で
ある、ということを現実に確認することはできな
い。
- そこで、その正しさを維持することはユーザの責
任となっている。
- ただし、その作業の一部は制約として記述できれば、
データベース管理システムが代わりに実施すること
ができる。
- 制約によって、一貫性は確保できる。しかし上記
の議論からわかるように、正しさは確保できない。
- 一般的に、正しいデータベースは一貫性がある。
また、一貫性のないデータベースは正しくない。
- これらのことからDateの黄金律をDateは思い付い
た。黄金律は次のとおり。
「更新処理によってデータベース制約のいずれか
がFALSEに評価されるようなことがあってはならな
い」
こつこつ。
0 件のコメント:
コメントを投稿