概略
以前このような質問をして、アドバイスを頂いたのでそれを元にテーブル定義とリレーションを行った。
環境
Laravel 6.5.0
Homestead
質問に際してやったこと・作ったもの
テーブルの登録内容
テーブルの登録内容2
想定しているER図
Laravel Entity Relation Diagram Generatorが出力したER図
tinkerでのテスト
質問したいこと
Laravelでの主キーかつ外部キーのテーブルとの適切なリレーションができているのか判断がつかないので、想定している挙動がなされているかご指摘いただきたいです。
なぜ判断がつかないのかというとLaravel Entity Relation Diagram Generatorが出力したER図においてbusiness_hoursテーブルfacilitiesテーブルとでbelongToは成立するのですが、HasManyの関係が成り立っていないように見えるからです。
意図としてはFacilityモデルからopenとcloseが拾いたい、つまり施設と営業時間を登録しているテーブルは分けるけれど、施設ID(facilitesのID)からその施設の営業時間を取得できる状態にしたいというものです。
tinkerで画像のように検証してみたところを見ると問題ないように見えるのですが、前述のことが気になり質問させていただきました。
備考
Laravel Entity Relation Diagram Generatorが出力したER図のpassword_resetの部分はLaravelのAuth認証を導入したときのデフォルトのままになっているだけなので無視していただければ幸いです。
追記
質問が分かりづらいということで補足をさせていただきます。
前回の質問 から今回の質問のER図を使うことを想定しているシステムの簡単なワイヤーフレームとアクティビティ図を追加。
作ろうとしているシステムの参考元
上記のURLの利用日時からの登録の部分を元に以下のようなシステムを作りたい。
以上のシステムを作ろうとして、想定したER図が画像の3枚なのですが、4枚目の画像(Laravelでマイグレーションした後のリレーションを図にしてくれるライブラリ)を見るとbussiness_hours belongsTo facilitiesは成り立っているけれども、facilities hasMany bussiness_hours の関係性が成り立っているようには一見見えないけれども問題はないのだろうかという質問です。
親テーブルと子テーブルが1対1でデータを持っているということですか?
それって正規化する必要がないってことではないのですか?
というコメントについてですがfacilitiesとbussiness_hoursでテーブルが分けているのは営業時間テーブルは別に作り、それを施設テーブルにリレーションさせるのが良いとアドバイスを受けた結果です。
なお、先程前回の質問の回答者の方から改めてコメントを頂いてIntegrerになっていないidについてはIntegerないしBigIntegerにして、やはりオートインクリメントにするべきなのではとのことなので再度検討をしています。
Laravel歴1ヶ月で成果物を作るに当たってテーブル定義・設計をしっかり考えるのは今回初めてなので、そもそもリレーションの関係性の考え方が間違っている可能性と前回の質問で頂いたアドバイスを私が理解しきれていないで、間違って解釈している可能性も否めず、ここまでの私の説明もいまいち的を射たものだはないようで大変申し訳無いです。
回答1件
あなたの回答
tips
プレビュー