どうも、69です。
今日はリレーショナル・データベースの知識についてです。
制約とはデータ内容の矛盾を防ぐ機能です。
SQLのようなデータベース言語は
アプリケーションとは無関係に、制約を格納できなくてはならない。
んだそうです。「コッドの12の法則」で提唱されているんですって。。
コッドの12の法則は
http://androidid-69.blogspot.com/2011/07/12.htmlでチラッと触れましたが
ググるったほうが、良さそう。。。
で、制約は属性(列)に定義します。以下に代表的な制約を挙げます。
1.非ナル制約(NOT NULL)
→指定した属性(列)に値が入っていない状態じゃないことを保証
NULLでないことを保証
2.主キー制約(PRAIMARY KEY)
→テーブルの中でレコードを一意に識別する値
NULL値であってはいけない⇒非ナル制約を満たしている必要あり
テーブルの中で1つだけ指定できる
複数の属性(列)でPRAIMARY KEYを構成できる
テーブルの中にあるレコードを一意に識別する値が複数個の属性(列)ある場合
それらを候補キー(主キーの候補)と言います。
で、候補キーから主キーを選択し、それ以外の選択されなかったものを代替キート言います。
レコードを一意に識別できる候補キーがない場合
連番などの自然発生的でないキーを作成し、それを主キーとします。
これを人工キーと言います。
3.一意性制約(UNIQUE)
→テーブルの中の列、または列の組み合わせが一意であるを保証
列の中に重複する値が発生しないことを保証
主キー(PRAIMARY KEY)との違いは、
・NULL値を許可すること
・1つのテーブルに複数指定できる
4.外部キー(FOREIGN KEY)制約
→テーブル同士の関連付け
参照整合性制約を付加できる
→テーブルBのFOREIGN KEYに指定された属性(列)の値は
テーブルAの一意性のある属性(列)の値に存在するものでなければならないってこと
テーブルAの一意性のある属性(列)をテーブルBで参照するときに
テーブルB側の属性(列)はFOREIGN KEYとなります。
テーブルA側の属性は主キーであることが多いらしいですが、必須条件ではないそうです。
一意性があればいいんだそうです。
う~ん。たぶんですが…
あるテーブルで一意性のある属性(列)を
そのほかのテーブルで使用したいときに使用する
のかな??
5.チェック制約(CHECK)
→属性(列)の値が、指定した条件を満たすものしか入らないことを保証
わからないことがありましたら、ググってください。
そして、コメントに書き込んでください!(笑)
僕がブログを作るんじゃない。みんなで、いいブログにしていきましょう!!(笑)
おしまし。