質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

939閲覧

データベースの設計がわかりません。

fukutaro

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/03/04 02:56

編集2020/03/04 02:59

いつもお世話になっております。
現在PHPとMysqlを用いてレシピのサイト作成を行なっております。

1番目の画像の入力フォームから入力して2番目の画像のように反映させて
データベースに登録する機能を実装したいのですが、一つのレシピに対してどのように
複数の材料と数量をDBに登録すればいいかわかりません。

イメージ説明
イメージ説明
イメージ説明

recipeという名前のテーブルでレシピの基本情報を構成しております。
(レシピのタイトル 画像 難易度 調理時間 作り方などで構成してます。)

材料と数量はまた新たにテーブルを作成してこのテーブルと紐付けするのがいいのでしょうか?
ここに画像の2番目のように材料が何グラムとわかるようにDBに登録するにはどうすればいいでしょうか?

大変恐縮ですが、アプローチの仕方を教えていただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

レシピのidを外部キーに持つ、材料テーブルだとして、
材料のid、材料名、大きさ、数量、単位、材料同士の並び順
くらいはテーブルに持てばいいんじゃないかなと。

玉ねぎに限らず野菜は大きさによって
Mなら3個、Lなら2個みたいな話があったりするので、
そういう選択肢も用意するとなると意外と大変なんですよレシピサイト。
くるみなどナッツ類は素焼きなのかどうかとか。
豆類は乾燥物か水煮なのかとか。
さーてどこまで考慮しますかね。

投稿2020/03/04 03:15

編集2020/03/04 03:19
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fukutaro

2020/03/04 03:33

回答いただき誠にありがとうございます。是非参考にさせていただきます。
guest

0

ベストアンサー

大変恐縮ですが、アプローチの仕方を教えていただけないでしょうか?

まずはデータベース設計の入門書やサイトを読んでみるのが最も近道だと思います。
DB設計の基本を知らないままDB設計をするという命題は無理があります。
今回のケースはごく初歩的なパターンなのでいくつか練習問題を解くだけでも今回の疑問は解決できると思いますよ。


今回のケースだと
recipeテーブルに対して
材料を示すテーブルを作成し、

  • ID(PK)
  • recipe_id(外部キー、recipeテーブルのid)
  • 材料名
  • 数量
  • 数量の単位

みたいな感じのフィールドを設定すればとりあえずは何とかなると思います。
(もし材料そのものをマスター管理したいのであればもう少し複雑な構成にする必要があります。)

投稿2020/03/04 03:11

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fukutaro

2020/03/04 03:24

質問に答えていただき誠にありがとうございます。 データベース設計の学習をきちんとしてから再度挑戦してみます。 貴重なご意見感謝します。
tanat

2020/03/04 03:29

m6uさんの回答にあるようなところまで丁寧に対応するのは大変かと思いますが、 まずはシンプルな機能で実装してみるというのをお勧めします。 (質問では登録のみにフォーカスがあたっていますが、検索や一覧表示などの機能によってもDB設計は変わってきますので、そのあたりを洗い出す意味でもプロトタイプ的に一通り作ってしまうのはアリだと思います)
fukutaro

2020/03/04 03:36

ひとつひとつ問題を切り分け、シンプルな機能で実装を目標に解決していきたいと思います。 貴重なご意見ありがとうございます。
guest

0

  • メニューと食材を別々にテーブルをつくり、リレーション用の中間テーブルをつくるか
  • 思いきって、食材をJSON型でもたせるか

のどちらかがよいでしょう

投稿2020/03/04 03:13

yambejp

総合スコア114585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/03/04 03:17

手を抜くなら全文検索とか選択肢もありますが、ちょっと管理が面倒かもしれません
fukutaro

2020/03/04 03:26

質問に答えていただき誠にありがとうございます。 JSONに関してはさらに無知なので、調べて挑戦したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問