あなたは数学志向のようです。Codd(Date) がリレーショナル モデルを導入したとき、彼(彼ら) は既存の数学言語を新しい分野に再構築しました。
あなたの場合: value は3つのパラメータの関数である可能性があります: val = f(h,w,d)
. しかし、「リレーション」(データベース テーブル) の場合は少し異なります。関数は、{h,w,d} が実際にテーブルに存在する場合にのみ定義されます。数学では、関数は R3 ドメイン全体で定義されます。リレーショナル代数では、テーブルのキー ({h,w,d}) は、より制限されたドメイン (または一連のドメインの積) で定義されます。DBMS/SQL の世界のほとんどは、これらの制限に関係しています。(制約、ドメイン制約など) UNIQUE 制約は、おそらく最も基本的な制約です。特定の {h,w,d} を持つタプルが最大で 1 つ存在することを保証します。結果として、関数値は 1 つだけです。. DBMS の人々は、リレーションの非キー フィールドを FK ({h,w,d}} に「機能的に依存する」と呼びます: キーのセットが与えられると、それに対応する行は最大で 1 つ (および最大で 1 つ) "機能値")
EAVは、関連するテーブルの定義を変更することなく、オブジェクトが可変数の属性を持つことを「シミュレート」するためのデータモデルのクラスです。ただし、テーブル レベルでは、属性と値を含む追加のテーブル (実際には 2 つ) を追加するだけです。データ モデリングは、変装したトポロジにすぎません。