0

こんにちは私はこの外来のジレンマを持っています。テーブルAとテーブルBとテーブルCがあるとしましょう。外来のジレンマ

テーブルAはスーパーテーブルBの子であり、レコードは外部キーAからBへの外部キー(片道)で接続されています。ここでテーブルCにはAとBに適用できる情報が含まれています。テーブルBに関するこの情報を使用すると便利ですが、テーブルAについてはわかりません。技術的にはテーブルAにも情報が含まれています。

私の質問は、テーブルAのアクセス情報をテーブルBの親行からテーブルAにアクセスするか、テーブルAからテーブルCおよび参照テーブルCへ直接の「ショートカット」を作ることです。

オプション1:表A参照表B +表B参照テーブルC

オプション2:表A参照表B +表B参照テーブルC +表A参照、これら二つのオプションを簡単にするために

テーブルC

オプション1で同じ情報が1つ離れているので、オプション2を実行するとメリットはありますか?

答えて

1

FOREIGN KEYは(データ整合性のため)(演奏用)

  • 暗黙的に生成されたインデックスと
  • 制約です。

FKは間接的に「どのように別のテーブルを参照するか」だけです。だから、私は単に列について話すほうが好きです。 (任意の表を使用して他の表を参照することができます)

多くの教科書の原則の1つは、DRY - Do not Repeat Yourselfです。 最終的に何かがうまくいかず、繰り返されるデータが矛盾するので、賢明な原則です。 AからCへの余分なリンクは冗長です。

一方、巨大なデータセットでは、あらゆる種類の教科書の原則に違反して、必要なパフォーマンスを提供しています。

私はちょうど始めているようだから、問題が発生したときには、ショートカットやパフォーマンスについて心配することはお勧めしません。はい、それには特別なJOINが必要です。

初心者の場合、パフォーマンスの問題は通常すぐに発生しますが、ショートカットがないためではありません。最初に学ぶべき多くの教訓があります。ヒント:「複合インデックス」について学んでください。初心者が学ぶことができないナンバーワンのパフォーマンステクニックだと思います。 (そして、FKに焦点を当てると、INDEXesに集中することに気をそらす)