2016-12-16 3 views
0

テーブルデザインに2つのオプションを選択しようとしています。リレーショナルデータベース - フィールド設計におけるより良いオプション

下記の2つの表「CLASS」と「SECTION」では、「CLASS」表の「YEAR-CLIENT_ID-CLS_SEQ」の組合せごとに、「SECTION」表に1つ以上の項目があります。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

情報: テーブルCLASSとSECTIONの両方があるマスタデータは、そのは、設定を手動で行われ、何のプログラム更新は行われません。 CLS_SEQとSEC_SEQが使用される他の子トランザクションテーブルがあります。すべてのトランザクションテーブルにはYEAR列とCLENT_ID列もあります。

クエリ: テーブルデザインに関して、どのオプションがCLS_SEQとSEC_SEQに適していますか?

マスターデータ設定であるため、私はデータに明瞭さをもたらし、毎年メンテナンスしやすいので、オプション1を選択します。またオプション1では、CLS_SEQおよび/またはSEC_SEQとともにYEARおよびCLIENT_ID(これらは常にアプリケーションで使用可能)を渡すことによって、さらにトランザクションテーブルのデータを取得することもできます。

私の質問は、オプション1を使用して結合でデータ&を取得している間、パフォーマンスに劇的な影響を与えますか?子/トランザクションテーブルのいずれかからの結合を使用してCLASSまたはSECTIONテーブルから 'some data'を取り出す必要があるときは、常にYEARフィールドとCLIENT_IDフィールドも使用する必要があります。

また、過去4年間のレコードのみがすべてのマスタテーブルとトランザクションテーブルに保持され、残りはアーカイブされることに注意してください。

答えて

0

私はオプションデータセット(とあなたが4年後に削除されますという事実)を見てみると1

のために行くことをお勧め、それはそのがどのれるレコードの数を持っているつもりのようには見えません。実際にパフォーマンスに影響を与えます。さらに、パフォーマンスが問題である場合、データの構造化方法を気にする前に実行できる他のオプション(クエリチューニング、インデックスの定義など)があります。

技術的には、オプション2では、セクションシーケンスを一意のIDとして使用しています。他のテーブルをフェッチするためにそれを使用する場合、それは間違いなくそれを単一のプライマリキーにするので、やや速くなります。

一方、メモリに追加のキーを維持する必要がある場合は、アプリケーションの複雑さが増します。

私の意見では、それは問題の価値がない。 DBは1つの結合を処理するのに十分速いです。あなたのコードを複雑にする価値はありません。

+0

ありがとう、ありがとうございます。 「あなたの記憶に鍵を追加する必要性」についてもう少し詳しく説明してください。私は実際にOption-2を実装しましたが、それに慣れていません。 CLASSとSECTIONの両方のテーブルでは、レコードの数は1000(最大10000)で実行されると予想しますが、他のトランザクションテーブルには100万レコードがある可能性があります。それでも、これらのテーブルは手動で管理されているので、Option-1が最適であると思います.Option-2の悪夢でもあります。 – user5281896

+0

私が前提としているのは、共有していない他のテーブルを使用しているときにセクションシーケンスキーを使用することです。これはキーが導出されているため、オプション1の場合と同様に、入力があればいつでも他のテーブルにアクセスすることができるほかのテーブルにアクセスする必要があるたびに、そのテーブルをどこかに保存するか、マスターテーブルからフェッチする必要があります。 –

+0

もう一度ありがとう。他の子テーブルはExam、Markなどのようなもので、CLS_SEQ(OR)SEC_SEQが外部キーになります。すべての必要な入力フィールド、Year、Client_id、Cls_seq/Sec_seqは、常にテーブルの読み込み/結合の入力として使用できます。 – user5281896

関連する問題