私はWebアプリケーションプロジェクトのデータベースを設計しています。結論が出ました。結合を避けるために「冗長」な外部キーを保存する
これらのクエリに必要な結合数を減らすために、外来キーをどこかに格納するのはどれくらいの難しさがありますか?この時点で、あなたに私が持っているものの例を与えることを
: サービス=>予約=>トランザクションを=>財布=> BonusOffer
私はサービスが関連付けられた財布を購入されたかどうかを確認する必要がありますボーナス。 BonusOffer idをTransactionの外部キーとして保存するのが賢明でしょうか?
なぜこれらのクエリのほとんどがトランザクションとトランザクションを通過するのかを問うことができます。トランザクションとトランザクションは途中にあります。
私の心はあなたがすべきではないと言いますが、私の心はあなたが望むなら試すことができると言います。 'EXPLAIN PLAN'を常にチェックして、改善があるかどうかを確認してください。あなたは何かを最適化しようと多くの時間を費やすことがあるので、dbはすでに最適化するように設計されていますので、「あまりにも多くの」心配する必要はありません。 –
@JuanCarlosOropezaもそうです!私は、 'BonusOffer'と' Transaction'の間のリンクにヘルパーテーブルを使うことを考えました。このようにして、私は冗長性を避け、クエリが満足されるでしょう。それがより良い方法だと思いますか?実際には、これらのクエリは高速であるとは確信していますが、実際にパフォーマンスの問題が発生したらすぐにパフォーマンスを向上させるよりも、データベースを最適化する必要がある前に詳細を知りたいと思います。 – user1970395
私は考えていないより良い練習は、何かを複雑にするため、通常の外になります。その意味はもっと難しいでしょうし、あなたの巧妙なショートカットについてあなたの後ろに来るすべての人に説明する必要があります。 –