質問

すべき日のための時間的データベース格納された2つのテーブル?ばんこの違反に正常化?

PERSON1 DATE11 DATE21 INFO11 INFO21 DEPRECATED
PERSON2 DATE21 DATE22 INFO21 INFO22 CURRENT
PERSON1 DATE31 DATE32 INFO31 INFO32 CURRENT

DATE1DATE2表示するINFO1とINFO2ての期間DATE1DATE2.れば日 < 現在の事実に関する推奨されていませんなに有意のユーザインタフェースがすべきではない削除された歴史的目的です。例えばINFO11とINFO21は推奨されていません。

う分割す。きの状態(推奨されていませんまたは現在のテーブル?

を明らかに質問さらに、推奨されていませんが、長期使用による事業のご要望は、"現在"の問題ではな意味でなsqlクエリーは、どんなに知られるデザインに違反するアンメットメディカルニーズを適正常化ルール名を連ねていらっしゃ正常化はないのですが、実はそうではありません私の質問のいずれか).

役に立ちましたか?

解決

"知りたいあるデザインに違反する正常化の規則"

異なるセットの正常化に則したい言っても過言ではないでしょう。

最初と最も違反の通常の形態で、 日本 で違反 第NF, は、お客様-お日に行する"現在"情報(抽象化の可能性の将来-日付情報:に違反したとき1NFの場合はその属性nullable.

違反 BCNF が明らかに起こる結果として、お好みのキーをその場合nontemporalデータベースのデザインかもしれないけど、時間が違います。Wrt高層複合ビル"あべのハルカス"のキー":ご利用の場合は別途開始-終了日(SQLのような紅葉ませんので、その続きを宣言するのに二つのキー:一つの開始日であることなどに終了します。

他のデザインの課題は、複数のデータ列あります。この問題を検討しかでも大きな"時間的データとの関係モデル":まINFO1とINFO2変更できる独立して、相互にすると良いのか分解するテーブルする属性を避けるためには、"爆発行のカウント"ではその発生の場合を完全に行毎回一つの属性に変わります。その場合、デザインとしてのやりくりは夫婦で別にされていますの侵六通常の形式として(通常の形式で定義された"時間的データとの関係のよう支援していくべきだという。

他のヒント

正規化は、リレーショナルデータベースの概念である - それは一時的なデータベースにも同様に適用されません。それはあなたがリレーショナルデータベースに一時的なデータを格納することができないと言うことはありません。あなたは間違いなくすることができます。

しかし、あなたは一時的なデータベース設計を行っている場合は、一時的な正規化の概念が関係正常化ではなく、適用されます。

あなたは、日付の意味を示していません。彼らは述べられた事実が述べられた事実は、のデータベースの所有者が、の真実であると信じられていた時代に、現実に本当だった、または(b)(a)の期間を指していますか? (b)の場合、私は、このようにそれを行うことはありません。更新が行われたときに、すぐにログ/アーカイブ・テーブルへの更新行を移動します。 (a)は、次の文は、疑問がある場合:

「事実は廃止され、ユーザーインターフェイスのいずれかのより多くを示してはなりません」 実際にはもう「ユーザー・インタフェースに表示する必要はない」場合は、

、それはもうどちらかのデータベースである必要はありません。このような事実に保つだけで一つのことが実現:すべての残りのための一般的な性能を低下

あなたが本当にあなたの要件に合わせて実際のこれらの歴史的なステートメントが必要な場合は、チャンスはあなたの、いわゆる「非推奨の事実は、」ビジネスにはまだ非常に関連しているので、すべての「非推奨」ではないということです。このような理由のために、あなたのデータベースにはほとんど「本当に非推奨」の事実があることをAssumming、あなたのデザインが良いです。ただ、定期的に運用データベースからそれらを除去することにより、小さな「本当に廃止予定事実」の数を維持します。

あなたのデザインが良いと言って

(PS)、あなたは何の問題に実行されませんという意味ではありません。 SQLは、非常にエレガントなこの種の情報を処理するためには不向きです。 「時系列データとリレーショナル・モデル」とは、対象の優れた治療法です。別の本、Snodgrassから一つは、多くの場合ではないが、私が、あまりにも賞賛されています。この本についてSO上で次の会話によって証明されたとして、その一つは、SQLでこれらの問題に対処するためのレシピと料理のようなものです:

(Q) "なぜ私はそれを読んでいました?" (A)「あなたが尋ねたトリガーは135ページにありますので。」

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top