メタマス!

むっちゃ面白い。何度も書いた気がするが。
理解は圧縮。というのを読んで、RDBの正規化と圧縮と規則性の関係とか関数をデータであらわすか値であらわすか、とかについて考えてたことを連想したので、ちょっと考えてみたい。
というか、理解は圧縮、そうはっきりと言ってもらって、非常にすっきりした。
パターンとかモデルも、理解=圧縮と、同じだ!と言ってしまっていいと思う。
えーと、例として、なにかの商品の種類と値段、というデータについて考えてみたい。まず、データとしては、

 色は赤、サイズは大、値段は1000円。
 色は赤、サイズは小、値段は600円。
 色は青、サイズは大、値段は1000円。
 色は青、サイズは小、値段は600円。

では、このデータをまず、RDB流で整理してみたい。
まず、4つの行とも、
(色はX、サイズはY、値段はZ円)
という形になっている。(面倒なので値段はZ00円とはしない。)ということで非常に素直に、「表」としてみることで、情報を整理、つまり圧縮できる。

{(色はX、サイズはY、値段はZ)}
      ×
{(赤、大、1000)、
 (赤、小、 600)、
 (青、大、1000)、
 (青、小、 600)}

で、これを見て、リレーショナルモデラーは叫ぶ。「正規化しなきゃ!」
つまり、つまりもなにも一目瞭然だが、色に関係なく、サイズが大なら1000円、
サイズが小なら600円という、規則性がみられる。相関関係といってもいいし、パターンといってもいい。
で、正規化をはじめるまえに、お客さんに聞いてみるかもしれない。
「いただいたデータを見ると、サイズが決まれば、値段が決まるようだし、色の違いは値段とは関係無さそうに思えます。
これは、たまたまこうなっているだけですか?それとも、今後ともサイズの違いが値段を決定すると考えて設計してもいいですか?」
と。
「サイズが値段を決める」のではなく、「値段がサイズを決める」のかもしれない。(ちょっと想像しにくいが。)

眠くなってしまったのでまた今度。