データベース設計徹底指南
これそもそもRDB設計の基礎の基礎なんだけど、現場でそれがやりにくいからおざなりになってるんで、ちゃんとしましょうよ、って言う話だ。でも現場でやりにくいのは今も変わらんと思うよ。私が言っても説得力が無いが、これまでのところ正しく最適化されたRDBなんか見たことないや。っていうか見たくもないな。だって保守が猛烈にめんどくさくなるんだもの。ニーズが増えたとき設計をイチから考え直すのと、最適化されてないのを承知で新たにテーブル起こすのと、どっちが早いか、って言う話だ。明らかに後者の方が早い。そのせいで同値が多数のテーブルに偏在し、整合性を保ちつつ更新するのが大変になり、データ容量は冗長化して無駄に大きくなる、っていうの知ってるけど。現場だと更新は一部のテーブルだけにしちゃって、データ容量は見なかったことにする(必要なら媒体を増量する、今は安いからね)。繰り返すと「死にテーブル」が増えて媒体容量もバカみたいなサイズになるのは承知。再構築に大工数かけて良いような機会が無いと、最適化とか誰も考えないんじゃないかな。そういう機会はなかなか無いのだが。理屈としては貴重なのでこういうことを考えてくれる人は必要だし貴重です。ありがとうございました。っていう感想です。