私のアプリケーションのデータベースを設計しています。私はPostgreSQLを使用しています。それはこのようになり、一般的なアプリと現実の世界の構造である必要があります:オブジェクト構造を持つリレーションデータベースの設計
カテゴリー(例えば植物)--->現象(例えば木)--->パラメータ(例えばタイプ - 針葉樹対落葉、高さ(メートル単位) - 10など)
データベースには、多くのカテゴリ、現象、パラメータ、およびその値を格納できます。 1つのカテゴリーはN個の現象を有することができ、1つの現象はN個のパラメーターを有することができる。
だから私は、これらのテーブルを作成しました:値の列で
Category
--------
id
name
Phenomenon
----------
id
name
category FK (to Category)
Parameter
---------
phenomenon FK (to Phenomenon)
name
value <-- here is a problem
辞書、varchar型の値、数値またはブール値からの値を指定できます。どのように私はテーブルを設計できますか?さまざまなタイプの値に対してより多くの列を作成する必要があります(varchar - 完全性検査なしの辞書値、数値、ブール値)。または、この問題を考慮した設計がありますか?私はJSONやXMLを使いたくありません。
本当に助けていただきありがとうございます。
答えのためのThx。しかし、私は例についてはわかりません。それはすべてのパラメータのための別のテーブルですか?新しい現象や新しいパラメータを追加する必要がある場合はどうすればよいですか?私はEAVでいくつかの解決策を見つけました(私は問題を正しい名前にすることができませんでした)。スライド16のこのプレゼンテーションでは、彼らは異なる列を持つモデルを持っています。これはあなたが提供するものと同じですか? – Bulva
これも見つかりました:https://inviqa.com/blog/eav-data-model非常によく似ています – Bulva
リレーショナルモデルでは、スキーマを変更せずに新しい現象と新しいカテゴリを追加できますが、新しいモデルを追加する必要があります新しいパラメータごとにテーブルを作成します。これは一次モデルの限界です。 – reaanb