0

悪いタイトルすみません、私は正しい用語を考えることができません。

オブジェクトを表すデータベース構造があり、オブジェクトにはタイプとプロパティがあります。

特定のタイプで使用できるのは特定のプロパティのみです。

すなわち

タイプ-家、車

プロパティ-色、速度、住所

車タイプのオブジェクトは色と速度の両方のプロパティを持つことができますが、家タイプのオブジェクトは色と住所しか持つことができません。オブジェクト、タイプ、プロパティの組み合わせの値は、値テーブルに格納されます。

これはすべて機能し、関係は上記をうまく強制します。

私のジレンマは、別のテーブル、つまりアドレスがあることです。このテーブルにはAddressIDがあります。

どういうわけか私のアドレステーブルを私のオブジェクト値テーブルに結合したい..これを達成するためのきちんとした方法はありますか?

[更新] -詳細

私はすでに5つのテーブルを持っています。すなわち

物体

プロパティ

ObjectTypes

ObjectPropertyValues

ObjectTypeProperties

これらのテーブルには、各タイプのオブジェクトに割り当てることができるプロパティ値をロックする関係があります。

オブジェクトの名前は「Ferrari」で、タイプは「car」になります。タイプはcarなので、colorプロパティの値を設定できます。

ただし、値は数値であり、IDと一致するようにカラーコードテーブルに結合できるようにしたいと思います。

4

1 に答える 1

1

まず、リレーショナルデータベースの「関係」はテーブルであり、テーブル間の関係を参照するものではありません。リレーションは、データの断片がキーにどのように関連しているかを定義します。

リレーショナルモデリングでは、各エンティティが正規化されているため、1つのモデルは4つのテーブルになります。

車(色-FK、住所-FK)

ハウス(カラー-FK、スピード)

色(色-PK)

アドレス(アドレス-PK、アドレス-データ)

リレーショナルモデルでは、車は家ではなく、通常、同じテーブルで車をモデル化することはほとんどありません。

実際、家と車の有効な色は非常に異なるため(塗料が同等ではないため)、実際のアプリケーションでは色に基づいて2つのテーブルを組み合わせることができないと主張する人もいるかもしれません。

考えられる他のモデリングの考慮事項は、車がガレージされている場所(つまり、家へのFKまたは住所へのFK)である可能性があります。そこでは興味深い問題が発生します。次に、車や家の鍵を持っている場合、それらは両方ともキーリングの一部である可能性があります。その場合、鍵を表すリンクテーブルを使用してモデル化する可​​能性があります。

于 2009-11-03T15:40:13.357 に答える