2017-07-28 11 views
0

オーケー、コンテキストを持っている:データベースのアーキテクチャは2つの別々の列または1

私は毎月、毎週、dayly報告を行うために必要なシステムを持っています。

アーキテクチャ: 3テーブル: 1)月額は 2をレポート)ウィークリー 3をレポート)毎日

アーキテクチャB報告: 1表: 1)レポート:余分な列report_typeで値は「毎月」、「毎週」、「毎日」です。

どちらがより効果的で、その理由は?

+0

なぜデータをデータベースのレポートの形式で保存したいのですか? – HappyCoding

+0

@HappyCoding、多分それはレポートがいつ実行されるかを知るためのロギングテーブルです。私は似たようなことをやった。 –

+0

もっと良い質問ですが、これらのテーブルやテーブルでどの列を使用する予定ですか? – HappyCoding

答えて

0

私がこれを行うために使用する一般的な方法は、Bアプローチと同様に2つのテーブルを使用することです。 1つのテーブルは、レポートデータと余分な列を使用して記述しますが、値をハードコーディングする代わりに、この列は参照テーブルのIDを保持します。参照表は、これらの値の名前を保持します。この設定では、後で必要になる場合は他のテーブルとの間隔を簡単に参照できるだけでなく、名前の更新をより効率的にすることができます。 「Monthly」の名前を「Month」に変更するには、レポートテーブルに文字列を格納した場合はvs nの更新が1つ必要です。

サンプル構造:サイドノートとして

report_data | interval_id 
xxxx  | 1 

interval_id | name 
1   | Monthly 

は、あなたはめったにそれが入力されたデータの間隔の種類を変更することに制限する方法に起因するあなたの最初のアプローチ、アプローチAを、撮りたいんでしょう。突然毎日のエントリの半分を週単位のエントリに変更したい場合は、n/2の削除とn/2の挿入を行う必要があります。これは、特にインデックスの導入を開始する場合にはかなりコストがかかります。一般的に、テーブルにはデータタイプ(レポート)が記述され、カラムにはそのタイプ(つまりレポートの発生頻度)が記述されます。

+0

過去のレポートデータを変更するつもりはありません。しかし、ええ、私は計画Bについても考えています。 – IvRRimUm

+0

後でセットアップを変更するのは非常に困難で時間がかかるため、可能な限りデータベースを検証するようにしてください。しかし、明らかに、データベースの絶対的な設定が分かっている場合は、それを改良する必要があります。 – yanman1234

関連する問題