0

最初に、同様の質問がされて回答されていたら、お詫び申し上げます。検索して同様の質問を見つけましたが、十分に近いものはありませんでした。

私の質問は基本的に、私の特定の状況で実質的に同じデータのテーブルを分離することが良い考えかどうかです。テーブルは、2 つの非常に異なるグループ (個人ユーザーの製品ライセンス データとエンタープライズ ユーザーの製品ライセンス データ) のデータ追跡データを追跡します。ユーザー検証プロセスがより高速に実行されるように、それらを 2 つのテーブルに分割することを考えています (特に個々のユーザーの場合、レコードの数が大幅に少ないため (例: ~500 の個人レコードと ~10,000 のエンタープライズ レコード))。最後に、表の構造では明らかでないユーザー タイプの大きな違いがあります。個々のユーザーはすべて固定数のアクティベーションを持っていますが、エンタープライズ ユーザーは最大で無制限のアクティベーションを持っている可能性があり、追跡の目的はアクティベーションの統計です。

テーブルを分離するのが良い考えだと思う理由は、各テーブルが小さくなり、クエリが高速になるためです(少なくともそうなると思います...)。一方、分析データを取得するには、2 つのクエリを実行する必要があります。さらに、追跡しているデータをときどき変更したい場合がありますが、明らかに、これは 2 つの重複したテーブルではより面倒です。

何万ものレコードがあっても、クエリ時間の差はおそらく重要ではないと推測しています?? ただし、これについて (主に効率性と全体的なベスト プラクティスに関する) 人々の意見を聞きたいと思っています。

前もって感謝します!

4

1 に答える 1

1

データベース構造を設計するときは、データをできるだけ正規化するようにしてください。だからあなたの質問に答えるために

「私の特定の状況で、実質的に同じデータのテーブルを分離することが良い考えであるかどうか.」

データベースを正しく正規化する場合、答えはノーです。ほとんど同じ情報を持つ 2 つのテーブルを作成するのは得策ではありません。正規化を使用すると、同様のデータをマッピング テーブルに分離できるはずです。これにより、より高速に実行されるより複雑なクエリを作成できます。

第 1 正規形の正規化の非常に基本的な例は、ユーザーのテーブルがあり、そのテーブルに役割の列がある場合です。物理的な単語「管理者」または「メンバー」の代わりに、1 = 管理者および 2 = メンバーであるロールと呼ばれる別のテーブルにマップされる ID があります。admin や member などの単語を繰り返して保存するよりも、ID を繰り返し保存する方が効率的です。

于 2013-05-28T22:57:53.400 に答える