はじめに
これも一人行軍だったのでなかなか学べる機会がなかったんですが、やっと習得することができました。
例えば、ここが洋風居酒屋だとして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テーブルとでも命名すればよろしいかと思います。
むすび
これ喫緊に使いそうな設計だったので、記憶が新鮮なうちに書き留めておきたかったのでした。
どなたかの参考になれば。