ottatiのブログ

無職学生がネットにクソアプリをまき散らしていく様子

【読書メモ】データベース入門 増永良文

f:id:ottati:20150103125718g:plain     🍣

テキストを読んでいると大抵わからないところがでてくるので、ググる。すると誰かがその本についてブログで書いていたりする。それを見るのは楽しい上に、他人のPOVから内容を捉えることができるので理解が深まる。が、僕の記事はどうだろう

最近勉強していてそうかな?と思ったこと

繰り返し繰り返しでやっと定着してくれる可能性が0でなくなる僕の頭に付いた記憶装置!<3

勉強した本

僕は一ヶ月くらいこの本を勉強していた。

データベース入門 (Computer Science Library)

データベース入門 (Computer Science Library)

この本にはデータベースとはなにかから、正規化、トランザクションの同時実行制御まで深すぎず記載されている。200ページくらいでちょうどいい

ちなみに、もちろん、これまでは直感(適当)でスキーマを定義していた :D:D:D:D:D

少しわかりづらかったことを書く

大抵、このテキストは、言葉の定義とそれぞれの言葉の関係を抑えれば理解できるが少し理解しづらい場所もある。この記事を作成した主な意味は以下の2点

  • 僕が次にこのテキストを読んだ時により早く理解できること
  • 復習

booyah!

関数従属性の定義について

リレーションスキーマR(X, Y, Z)に関数従属性X->Yが存在するとは次の条件が成立するときをいう。 RをRの任意のインスタンスとするとき、(∀t, t'∈R)(t[X] = t'[X] => t[Y] = t'[Y])

※ t[X]はタプルtの部分タプルとする。

これは簡単でX->Yのとき、属性集合Xの値が同じタプルが2つ存在した時に、その2つの属性集合Yの値も同じだろうということ

リレーションスキーマRインスタンスとはリレーションスキーマにしたがって作成された実際のテーブルのことである。テーブルはもちろん複数作れるので「任意のインスタンス」となる

候補キー

関数従属性の理解の延長で候補キーの定義もできる

  1. (∀t, t'∈R)(t[K] = t'[K] => t = t')
  2. Kのどのような真部分集合に対しても(1)は成立しない

第二正規形

第一正規形で非キー属性が候補キーに完全従属

完全従属とは真部分集合には従属しないこと

第三正規形

第二正規形で非キー属性がいかなる候補キーにも推移的に従属しない

ボイスコッド正規形

以下

Rに関数従属性 X->Yが存在するとき,
X->Yは自明な関数従属性であるか、またはXはRのスーパーキーである

※ 自明な関数従属というのはX->Yとした時にYはXの部分集合であること

これが言っているのは非キー属性または候補キーの真部分集合からの自明でない関数従属性が存在していたらアウトなこと。

第四正規形

ボイスコッドの「自明な関数従属性」のところを「自明な多値従属性」に置き換えた版。

自明な多値従属性X->->Yというのは属性Xの値がYの複数の値を決めること。なのでこれに沿うように分割されて作成されたリレーションは1対1(複数をとらない)のかなり単純なものになる。

NO-UNDO/REDO障害時回復法

一気にトランザクションまで飛ぶ。

データベースバッファが二次記憶に書き込まれるタイミングの問題。NO-UNDO/REDO障害時回復法。REDOはするがUNDOはしない。なぜか。

まず遅延処理環境下ではコミット処理までWrite Ahead Logプロトコルに従いつつデータベースバッファ上で作業を行ってから、二次記憶に書き込む。なのでシステム障害発生時にトランザクション実行中であり、主記憶のデータが飛んでも(増永先生風に言えば、霧散しても)二次記憶に一切書き込まれていないことが保証されているのでUNDOする必要はない。

(REDOはコミットしてから二次記憶に書き込まれたかどうか保証できないのでやはり必要がある。)

相反直列化可能とは

スケジュー ルSが相反直列化可能とは、ある直列スケジュール S’が存在して、SとS’が相反等価のときをいう。 スケジュールSとS’ が相反等価とは、相反しているすべての2つのステップの順番が、SとS'で同一のときをいう。

相反等価というのがぱっとこない―よくみたら定義のところにばっちり書いてあるが、相反している2つのステップというのは、影響を及ぼし合うトランザクションTのとあるステップとトランザクションT'のとあるステップのペア(相反グラフCG(S)の有効辺を張る要因になっているステップの組)のこと。

こんなところか

alpha wavesとかtheta wavesとかでYouTubeでググってノイズ入れたほうが集中できることも最近発見した、ノイズがあったほうが注意できるなんて脳みそは面白い