DB
↑矛盾なく一貫性をもったデータの集まり。
今回はRSDB(リレーショナルDB)について語る。
正規化
どちゃくそ簡単に言うと
関連するデータ項目ごとにテーブルとして独立させる。
データの一貫性を保つこと
例えば、ある項目を修正することになった場合、正規化がキチンとなされてると変更する場所は非常に少なく済む。
正規化されていないと、その項目が含まれている複数の同じ項目をすべて正しく修正しなくてはいけない。
なんのことを言っているかわからないと思うので
を読んでからもう一回よむと良い。
ロック
複数人が同時にDBにアクセスすると矛盾が生じる可能性がある。
なので、誰かがデータをいじっている間そのデータは他の人がサワレナイように待機状態にさせるのがロックである。
トランザクション
処理の単位。
矛盾をつくらない
始まったらcommitするまで始まった処理が完結されていないものとみなされ、Rollbackする。
デッドロック
簡単に言うと、ロック機能より、待ち状態が発生するが、それが均衡状態になっちゃって永遠にDBいじりが終わらないこと。
なにをいっているかわからないと思うので、簡単な例を。
データベースA、データベースBがあるとします。
ドラえもんはデータベースAをいじった後データベースBをいじることで処理が完結します。
のび太はデータベースBをいじった後データベースAをいじることで処理が完結します。
同時に作業をすると、お互いはじめのDBを処理したあと、つぎのDBを処理したいが、ロック状態になっており永遠にロックが続いてしまう
回避方法
①処理の流れを変える。
ドラえもんものび太もデータベースAから変更するようにする。
②トランザクションの処理を短くする。
1つのトランザクション内にデータの入力チェックから更新までしないで、入力チェックは外に出す、
など、トランザクション処理はできるだけ短くする。
SQL
問い合わせ言語
その他、ビュー、トリガー、権限はググってください。