k-tokitoh

2019-11-23

DB設計なんじゃらほい

[2019/02/17 追記]

下記の文章では DB 設計とモデリングを混同しており、根本的な誤りを含んでいることに気づいた。

修正しておらず誤ったままだがメモとして残しておく。


DB 設計ってのをほぼやったことがない。 概念設計/論理設計/物理設計などという言葉が錯綜していて混乱したが、以下の 5 つに分けると理解しやすい気がしたのでメモ。

設計の種類

1. ドメインモデル
2. entity やら value object やら
3. オブジェクトとデータベースの対応づけ
4. データベースの構造
5. ミドルウェア&ハードウェア

注意事項

具体例

あるプロジェクトで、暗黙の前提として「ActiveRecord パターンね」という決めがあったとすると、それで予め 3 が決まる。

すると 2 と 4 は基本的に直結する*2 ので、2 と 4 の作業はひとつの設計作業として行われる。

1 はよく考えなかったとする。

この場合、やった設計作業は「テーブル/クラスの構造を決める」と「ミドルウェア&ハードウェアのことを決める」の 2 つになる。

もちろん別のプロジェクトでは 1,2,3,4,5 を別々に考えて、5 つをくっきり区切って設計作業を行うということもありうる。

「XX 設計」との対応

まあムリに対応づけることもないけど、ぱっとでてくるサイトでの説明と見比べると、以下のような感じかと思う。

…というようなことをつらつら考えたが、DB 設計といふものをやったことないからまずは実践してみませう。

*1:“Domain Driven Design Quickly”

*2:直結しなくなるのは STI とかくらいか