回答編集履歴
2
typo
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
いずれにしても現在は要求定義といってどういう機能がほしいか洗い出しをするタイミングだと思うので、仕様のパターンをあげていき、具体的な素材をサンプリングして仮組みしてみることが肝要です。その段階が一通りおわったら要件定義という具体的にシステムにどう落とし込み、どの機能が必要で、どの仕様はカットするかを決め込む段階に移ります。
|
5
5
|
|
6
6
|
# 参考
|
7
|
-
ざっくりこんなテーブル
|
7
|
+
ざっくりこんなテーブル構成が必要になります
|
8
8
|
```SQL
|
9
9
|
create table cate(
|
10
10
|
cid int primary key,
|
1
調整
answer
CHANGED
@@ -1,4 +1,109 @@
|
|
1
1
|
単純に言えばXAMPPのMySQLで料理テーブルをつくり正規化すればいいのですが、レシピサイトなどのメニューと違って、家庭料理の場合おなじ料理名でも材料は毎回違うということです。
|
2
2
|
そういう場合、「もやしとカニカマの中華風サラダ」に対して「もやし」と「カニカマ」を必須材料とし、「きゅうり」を任意材料とするなどの工夫が必要です。またバリエーション「もやしとカニカマの和風サラダ」や「もやしとカニカマのフレンチ風サラダ」があるなら料理名は「もやしとカニカマのサラダ」などにしてバリエーションを確保したほうがよいです。
|
3
3
|
|
4
|
-
いずれにしても現在は要求定義といってどういう機能がほしいか洗い出しをするタイミングだと思うので、仕様のパターンをあげていき、具体的な素材をサンプリングして仮組みしてみることが肝要です。その段階が一通りおわったら要件定義という具体的にシステムにどう落とし込み、どの機能が必要で、どの仕様はカットするかを決め込む段階に移ります。
|
4
|
+
いずれにしても現在は要求定義といってどういう機能がほしいか洗い出しをするタイミングだと思うので、仕様のパターンをあげていき、具体的な素材をサンプリングして仮組みしてみることが肝要です。その段階が一通りおわったら要件定義という具体的にシステムにどう落とし込み、どの機能が必要で、どの仕様はカットするかを決め込む段階に移ります。
|
5
|
+
|
6
|
+
# 参考
|
7
|
+
ざっくりこんなテーブル校正が必要になります
|
8
|
+
```SQL
|
9
|
+
create table cate(
|
10
|
+
cid int primary key,
|
11
|
+
cname varchar(100));
|
12
|
+
insert into cate values
|
13
|
+
(3001,'サラダ'),
|
14
|
+
(3002,'炒めもの'),
|
15
|
+
(3003,'煮物'),
|
16
|
+
(3004,'揚げ物'),
|
17
|
+
(3005,'副菜');
|
18
|
+
|
19
|
+
create table genre(
|
20
|
+
gid int primary key,
|
21
|
+
gname varchar(100));
|
22
|
+
insert into genre values
|
23
|
+
(4001,'魚'),
|
24
|
+
(4002,'肉'),
|
25
|
+
(4003,'野菜'),
|
26
|
+
(4999,'その他');
|
27
|
+
|
28
|
+
create table menu(
|
29
|
+
mid int primary key,
|
30
|
+
cid int null,
|
31
|
+
gid int null,
|
32
|
+
mname varchar(100),
|
33
|
+
foreign key (cid) references cate(cid)
|
34
|
+
on update cascade on delete set null,
|
35
|
+
foreign key (gid) references genre(gid)
|
36
|
+
on update cascade on delete set null
|
37
|
+
);
|
38
|
+
|
39
|
+
insert into menu(mid,cid,gid,mname) values
|
40
|
+
(1001,3003,4001,'魚の煮付け'),
|
41
|
+
(1002,3001,4003,'ほうれん草とコーンのソテー'),
|
42
|
+
(1003,3003,4003,'里芋煮'),
|
43
|
+
(1004,3001,4999,'マカロニサラダ'),
|
44
|
+
(1005,3002,4003,'八宝菜'),
|
45
|
+
(1006,3004,4999,'春巻'),
|
46
|
+
(1007,3001,4003,'もやしとかにかまの中華サラダ'),
|
47
|
+
(1008,3003,4003,'かぼちゃ煮'),
|
48
|
+
(1009,3002,4003,'小松菜炒め'),
|
49
|
+
(1010,3005,4003,'しそ昆布');
|
50
|
+
|
51
|
+
create table ingre(
|
52
|
+
iid int primary key,
|
53
|
+
iname varchar(100));
|
54
|
+
insert into ingre values
|
55
|
+
(2001,'魚'),
|
56
|
+
(2002,'ほうれん草'),
|
57
|
+
(2003,'コーン'),
|
58
|
+
(2004,'里芋'),
|
59
|
+
(2005,'厚揚げ'),
|
60
|
+
(2006,'いんげん'),
|
61
|
+
(2007,'マカロニ'),
|
62
|
+
(2008,'にんじん'),
|
63
|
+
(2009,'きゅうり'),
|
64
|
+
(2010,'卵'),
|
65
|
+
(2011,'豚肉'),
|
66
|
+
(2012,'玉ねぎ'),
|
67
|
+
(2013,'ピーマン'),
|
68
|
+
(2014,'しいたけ'),
|
69
|
+
(2015,'きくらげ'),
|
70
|
+
(2016,'白菜'),
|
71
|
+
(2017,'春巻き'),
|
72
|
+
(2018,'レタス'),
|
73
|
+
(2019,'もやし'),
|
74
|
+
(2020,'かにかま'),
|
75
|
+
(2021,'かぼちゃ'),
|
76
|
+
(2022,'丸天'),
|
77
|
+
(2023,'小松菜'),
|
78
|
+
(2024,'ベーコン'),
|
79
|
+
(2025,'しそ昆布');
|
80
|
+
|
81
|
+
create table menu_ingres(
|
82
|
+
miid int primary key auto_increment,
|
83
|
+
mid int null,
|
84
|
+
iid int null,
|
85
|
+
foreign key (mid) references menu(mid)
|
86
|
+
on update cascade on delete set null,
|
87
|
+
foreign key (iid) references ingre(iid)
|
88
|
+
on update cascade on delete set null
|
89
|
+
);
|
90
|
+
|
91
|
+
insert into menu_ingres(mid,iid) values
|
92
|
+
(1007,2019),
|
93
|
+
(1007,2020),
|
94
|
+
(1007,2009);
|
95
|
+
|
96
|
+
create table daily_menu(
|
97
|
+
did int primary key auto_increment,
|
98
|
+
d date not null,
|
99
|
+
term enum('朝食','昼食','夕食') not null,
|
100
|
+
mid int,
|
101
|
+
foreign key (mid) references menu(mid)
|
102
|
+
on update cascade on delete set null
|
103
|
+
);
|
104
|
+
insert into daily_menu(d,term,mid) values
|
105
|
+
('2023-03-27','夕食',1005),
|
106
|
+
('2023-03-27','夕食',1006),
|
107
|
+
('2023-03-27','夕食',1007);
|
108
|
+
```
|
109
|
+
UIとしてはメニュー追加ボタンを押すとモーダルダイアログが開いて、カテゴリーやジャンルを選んで検索ボタンをおした結果からメニューを選択し、メニューに紐づく材料を、menu_ingreテーブルを利用して抽出します
|