データベースに空データを入れない方法について

###・前提条件 ・発生している問題・エラーメッセージ ・実装したい機能

お世話になります。
見積書作成フォームを作ろうと思っています。

項目は
工事(作業)内容
見積金額

ですが、依頼内容によっては1つの工事のみの場合もありますし、5つの工事からなることもあります。そこで工事毎に作業内容の数が異なるため、枠だけ多めに作っておこうと考えました。

ただ、この状態でデータベースに登録すると、未使用の工事内容と見積金額がカラのデータとして登録されてしまいます。

このような状況を避ける方法はありませんでしょうか。

そもそもこの方法ではダメなのかもしれませんが、他の方法が思いつきませんでした。結局やりたいことは未使用のフォーム情報をデータベースに入れないということなので、この方法に固執しているわけではありません。

アドバイスをいただけたら嬉しいです。
どうぞよろしくお願い致します。

見積もりテーブルと工事(作業)内容テーブルを分けて以下のようなイメージで作成してはどうでしょうか。

「いいね!」 3

おはようございます。
早々にご回答いただきましてありがとうございます!

アドバイスいただいた内容だと
作業内容の増加に伴い、テーブルを順次追加するというイメージになりますでしょうか。

出来ればテーブルを増やすことは避けたいと思っておりますが、他に解決方法はないものでしょうか・・・

作業内容の増加に伴い、テーブルを順次追加するというイメージになりますでしょうか。

そうですね。
テーブルを増やさないのであれば、金額のみをリスト登録になりますね。
ただ、リストでは、複数項目を登録できないので、工事内容詳細の中に金額や内容がリスト形式で並ぶことになります。
ご検討ください。

「いいね!」 2

■親工事テーブル
・工事id
・工事内容等

■子工事テーブル
・工事id(上の親工事idとリレーション)
・子工事内容
・見積金額

とすれば、テーブル追加しなくてもできそうですがいかがでしょうか。

「いいね!」 2

アドバイスいただいた方法でチャレンジしていますが壁にあたりました。

作っていただいたイラストのように、見積テーブルで工事作業内容をリスト化することで、各工事(作業)内容テーブルにある「内容」「金額」が集約されると期待したのですが、そうならなりません。

というのも、見積テーブルで工事作業内容カラムを設定する際に、工事(作業)内容テーブルを1つしか選択できないためです。

この状態を解消して各工事(作業)内容テーブルの情報を見積テーブルの工事作業内容(List)に集約することは可能でしょうか??

「いいね!」 1

アドバイスいただきましてありがとうございます。
こちらの方法を試したところ、うまくいきました!!

データ登録時にonly when で「子工事内容」「見積金額」いずれもnot emptyと
指定することでデータベースに空データが入ることを回避できました。

ありがとうございました。

「いいね!」 2

図が悪かったかもしれませんが、
テーブル数は見積もりテーブルと工事(作業)内容テーブルの2つです。
BubbleのDBは以下のようになっています。


簡易的なフォームも作成したので、参考になれば幸いです。

「いいね!」 3

結果的にですが、お示しいただいた内容でデータベースを組むことができ
無事解決できました。
大変ご丁寧に解説いただきまして感謝しております。
ありがとうございました!!

「いいね!」 1