植物を表すモデルがあります。各植物にはタイプ (花、木、低木など) があります。植物の種類ごとに、一連の属性に対する異なる要件があり、そのうちのいくつかの植物は複数の値 (生息地、位置する地域など) を持つことができます。たとえば、樹木には複数の種類のライフサイクルがある可能性が低く、花には異なるライフサイクルがあります。
次の場所でデータをモデル化するにはどうすればよいですか。
- すべてのプラントは同じモデルにあります
- さまざまな種類の植物に一連の属性を適用する
- セット内のこれらの属性のうち、植物ごとに複数の値を持つことができるものもありますが、すべて少なくとも 1 つ必要です。
- 新しい植物の種類が追加されると、新しい属性、新しいセットを作成したり、古い属性を再利用したりする機能
これまでのところ、植物用の 1 つのテーブルがあり、それぞれのテーブル内の各属性と複数の多対多の関係があり、コードで少なくとも 1 つの値を適用します。
http://i.imgur.com/82CoW15.png
属性に Entity-Attribute-Value を使用することを考えましたが、使用している ORM (SQLAlchemy) の利点を実際には得られません。シリアル化された LOB と同じです。
クラステーブルの継承が必要だと思いますが、一部の属性が整然と複数の値を持つことができることに対処する方法がわかりません。
Plant Habitat
----- |--> --> ------- --> Multiple values per plant
|
| Flower Life Cycle
|--> ------ --> ---------- --> Single Value
|
| Tree Cone Type
|--> ---- --> --------- --> Single value
|
| Shrub
|--> -----
別の可能性は、実行時に新しい属性ごとに属性テーブルを追加することですが、SQLAlchemy またはその他の ORM 内でそれを達成する方法がわかりません