です。この質問は、プログラマにもっと適しているかもしれません。その場合は、移行してください。実際に実行可能な結合の数は、
私は現在、典型的なデータモデルの複雑さを熟考しています。一方、データモデルを正規化する必要があることは誰もが知っていますが、正規化されたデータモデルでは後でデータを再構成するためにかなりの数の結合が必要になります。また、ジョインは、関係するテーブルのサイズに応じて、潜在的に高価な操作です。だから、私が把握しようとしている質問は、このトレードオフについてどうやって行くのだろう?私。実際にはデータモデルを設計するときに典型的なクエリで許容される結合数はどれくらいですか?これは、単一のクエリで複数の結合を数える場合に特に興味深いでしょう。
例として、家を所有するユーザーで、アイテムを含む引き出しを持つルームがあるとします。上記で説明した意味で、ユーザー、住居、部屋、引き出し、およびアイテムのテーブルを使ってこれを正規化すると、あるユーザーに属するすべてのアイテムを取得するときに5つのテーブルに参加する必要があります。これは私にとって非常に複雑なもののようです。
ほとんどの場合、テーブルのサイズが関係している可能性があります。小さなデータで5つのテーブルを結合することは、数百万の行を持つ3つのテーブルほど悪くありません。あるいは、この考え方は間違っていますか?
テーブルはわずか4つのジョインです。本当に多くはありません。また、すべてのクエリで5つのテーブルすべてからのデータは必要ありません。テーブルが少ない(非正規化された)テーブルは、すべてのクエリで扱うテーブルが大きくなります。 –
ypercubeのように、5つのテーブルは多くありません。 (私は通常、画面上に視覚的にフィットするように単一のクエリでテーブル結合を制限しようとしています。つまり、約20テーブル程度です:))しかし、サンプルアプリケーションでは、ほとんどの負荷はユーザーの項目クエリから来ています。ユーザーIDをアイテムテーブルに追加します。これにより、特定のクエリがはるかに高速になります。もちろん、競合するデータを作成しないようにレコードの挿入と更新のロジックを慎重に設計する必要があります。常にそうであるように、「1つのサイズはすべてに適合する」ソリューションではありません。 – Arvo