作記録

記憶代わり

コトを記録するテーブルについて

結論

僕は、基本的にコトを記録するテーブルを作るようにするテーブル設計を凄く良いと思っています。

なぜなら関心事が分離されるようになり、分かりやすくなると思うからです。

一方、コトや状態や情報が一緒にテーブルを作ってしまう設計は良くないと思っています。

コト、状態、情報など様々な関心事が1つのテーブルに混ざってしまい分かりづらくなってしまうと思うからです。

そもそも

そもそもDBは現実の物事を人間の脳ではなくコンピュータに記録させる為にあると思っています。

そして記録させる動作は、人間がある目的の為にシステムを利用して行う動作、すなわちユースケースと呼ばれます。

例えば、人間が本を借りた事を自身ではなくコンピュータに記録させる事を目的としてシステム上の『本を借りた事を記録する機能』を利用するとします。

このユースケースからDBに記録させたい事は、本の状態や人間の状態ではなく、『本を借りた』コトです。

すなわち必要なテーブルは、下記のようになると思われます。

|本を借りたテーブル| |---| - 借りた人間のアイデンティティ - 本のアイデンティティ - 借りた日付

参考文献

現場で役立つシステム設計の原則 第6章