私は新しいアプリケーションのデータベース スキーマをゼロから構築しています。私の 2 つの目標は、疎結合 (スケーラビリティ) とパフォーマンス (ただし、パフォーマンスが最も重要です) です。中央のテーブルに外部キー列を含めるのが良い考えかどうかはわかりません。私の質問は、おそらく例を使用して最もよく理解できるでしょう (この例は純粋に仮説に過ぎないことに注意してください):
テーブルがあります。このテーブルを「アニマル」と呼びましょう。このテーブルには、データベースに格納されているさまざまなタイプの「動物」のプロパティを定義するいくつかのエントリがあります。「AnimalName」という別のテーブルもあります。その目的は、各動物の名前を「動物」テーブルに言語 ID と組み合わせて格納することです (したがって、各動物の名前を「動物」の表を各言語で)。
上記の表を実装するには、次の 2 つの方法があります。
最初の道
動物テーブル: AnimalID (PK)
AnimalName テーブル: AnimalNameID (PK)、AnimalID (FK)、LanguageID (FK)、名前
クエリは次のようになります。
SELECT * FROM Animal a JOIN AnimalName an ON an.AnimalID = a.AnimalID and an.LanguageID = ? WHERE a.AnimalID = ?
第二の道
動物テーブル: AnimalID (PK)、AnimalNameID (FK)
AnimalName テーブル: AnimalNameID (PK)、LanguageID (FK)、名前
クエリは次のようになります。
SELECT * FROM Animal a JOIN AnimalName an ON an.AnimalNameID = a.AnimalNameID and an.LanguageID = ? WHERE a.AnimalID = ?
2 番目の方法として、"AnimalID" FK 列を AnimalName テーブルに追加すると、最初の方法で表現されたクエリもサポートされます。
上記の方法のうち、最速のパフォーマンスを提供するのはどれですか (これは非常に重要です!)? 上記の方法のうち、あなたの経験から一般的に推奨するものはどれですか?
答えてくれたすべての人に前もって感謝します!