いまさら訊けないテーブル設計のお話-実体に対する属性の数が不定長な場合

投稿者:

はじめに

これも一人行軍だったのでなかなか学べる機会がなかったんですが、やっと習得することができました。

例えば、ここが洋風居酒屋だとしてw

例えばここにシメジやエリンギ満載のアヒージョがあります。

実体属性
アヒージョシメジ
エリンギ
その他…

一方でシメジは、鮭のホイル焼きにも乗っかってて欲しいです。

実体属性
鮭のホイル焼きシメジ
玉葱
その他…

ただ、アヒージョとホイル焼きは調理工程が当然違います。ので、上の表の属性を修正。
なんなら調理工程、食材も実体と呼べちゃいます。

実体属性実体
アヒージョ調理工程オイルで煮込む
食材シメジ
食材エリンギ
食材その他…

実体たちのテーブル設計は以下の通りになるかと思います。

料理ID料理
1アヒージョ
2ホイル焼き
食材ID食材
1シメジ
2エリンギ
3
4玉葱
工程ID工程
1オイルで煮込む
2ホイルで包んで
グリルへGo

実体どうしを紐づけたい

このように実体のぶら下がる属性が不定長なんですが、これを紐づけたい。
そこで、レシピをまとめるように以下の様なテーブルが作れます。

料理ID属性キー実体ID
1(=アヒージョ)工程工程ID1(=オイルで煮込む)
食材食材ID1(=シメジ)
食材食材ID2(=エリンギ)
2(=ホイル焼き)工程工程ID2(=ホイルで包んでグリルへGo)
食材食材ID3(=鮭)
食材食材ID1(=シメジ)
食材食材ID4(=玉葱)

これを設計に落とし込めば、はい完成。
ここはrecipeテーブルみたいに言っちゃいましたが、なんとかattributesテーブルとでも命名すればよろしいかと思います。

むすび

これ喫緊に使いそうな設計だったので、記憶が新鮮なうちに書き留めておきたかったのでした。

どなたかの参考になれば。

コメントを残す