RDB上ではリレーション設定をしないのは、一般的なのでしょうか?
一般的ではありません。
余程の事情が無い限りは、バッドノウハウ
と言い切ってしまえると思います。
下手にリレーションを張ると複数テーブルに対して更新や削除を実施する際、手間が増えるため、RDB上はリレーションを張らないように教えらてきました。
これは一般的には手間が増える
というデメリットでは無く、
RDBMSの制約によって異常なデータが発生することが確実に防止され、適正な値のみが存在することを前提に出来る
というメリットになります。
おそらくそう教えた人は
- ORMやフレームワークで正しくリレーションを扱う事が出来ない、部品化出来ない
- アプリケーションを開発する前にDB設計を行う事が出来ない(コーディングしながらDB設計をするので、途中でDB定義が変わると手間が大きい)
- アプリケーション仕様がコロコロと変わり、それがデータモデリングまで影響する様なまずい開発/運用体制である
- そもそもDB設計をレビューする、管理するという概念を知らない
などの理由から、バッドノウハウを正しいものと信じているんじゃないでしょうか。
RDB上でリレーション設定をしているとDB管理ツール(phpMyAdmin等)で見たとき、
リレーション適用後の表示を確認できるので便利なのですが、
phpMyAdminだと「あればちょっと便利」くらいですが、
一般的には、DB定義から(MySQLWorkbenchなどER図を使うことが多いです)DB設計のレビュー/管理を実施するため、アプリケーションのソースまで見ないとデータモデルが把握出来ない状態というのはかなり不便な状態になります。
パフォーマンスについてはケースバイケースですが、外部キーが存在しないことで性能が極端に悪化する場合もあります。
中間テーブルに外部キーを設定しない場合のLaravelにおける性能劣化を検証する
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/04 20:37
2021/06/05 11:46
2021/06/05 14:44 編集
2021/06/05 14:44