質問

私は私が期待する問題を抱えていますが、私はそれがさまざまな方法で説明できるように、私は何を探すべきかわからない。

請求書、製品、価格、通貨などを管理するためのデータベース構造を設計しています。

私は製品の価格と名称を管理することができます(これらは今ではあらゆる変化することが期待されています)。

請求書の場合、製品は割引、VAT、ユニコーン、リスなどで数量によって追加され、その後請求書の合計が計算されます。

今、Productsテーブルで価格が更新されると、請求書は変更することになっていません。それは永遠に同じままにする必要があります。

これを考えるとき、私にとってそれは製品リストが "クラスタイプ"オブジェクトのリストです。これは、製品がどのように見えるかを説明します。あるいは、私たちが考える抽象化に応じて、それを「テンプレート」または「ベース」または「要約」と呼ぶことができます。

請求書に追加された製品は、「インスタンス」、「実装」、「子供」、「バージョン管理されたレコード」、またはそれらを呼び出しているものは何でも。

これをデータベースにどのように構造化しますか?私はそれらを2つの異なるテーブル "abstractproduct"と "product"に分割することができましたが、それらは彼らの列の最も(おそらく全部)が共通のものであるでしょう。その点で、それらを同じテーブルに保つことが適切に思われます。しかし、それでは、それが「クラス」または「インスタンス」であるかどうかを意味するための追加の列が必要になるでしょう。それも元気です。これは、それが作成されたクラスの外部キー(またはクラスの場合はnull)になる可能性もあります。

私は異なるアプローチを試しました、しかしすべてが迷惑な警告を持っているようです。

これは既知のパターンですか?それは何と呼ばれていますか?この問題を解決するためのベストプラクティスはありますか?

役に立ちましたか?

解決

それはよく知られているパターンです。このトピックに関する豊富な文学が必要な場合は、「時間データベース」を検索してください。

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