これは、このよりよい?:どのようなリレーショナルモデルがこの例に適していますか?
注あるOOPデータベース、リレーショナルモデルである: -
-
>このオペランドを(フィールド - >表(参照))のような外部キーを定義するために使用されます
まず
**
属性 (ID:オート、ATTRIBUTE_NAME)
type (id:auto, type_name) type_attribute (id:auto, type_code->type(id), attribute_id->attribute(id), default_value) object (id:auto, name, object_type->type(id)) object_property (id:auto, object_id->object(id), attribute_id->attribute(id), my_value)
**
セカンド
属性(ID:オート、ATTRIBUTE_NAME)
タイプ(ID:オート、タイプ名)
のtype_attribute(ID: auto、type_code-> type(id)、 attribute_code->属性(id)、default_value)
オブジェクト(ID:自動車、名前、object_type->タイプ(ID))
object_property(ID:自動車、(OBJECT_ID、 OBJECT_TYPE) - >オブジェクト(ID、OBJECT_TYPE)、(OBJECT_TYPE、 ATTRIBUTE_ID ) - >のtype_attribute(ID、ATTRIBUTE_ID)、my_value)
本当に差がobject_propertyテーブルにはっきりと見えます。
最初のモデルでは、コードと属性コードを使用してプロパティを定義できますが、ここで問題となるのは、タイプがオブジェクトのタイプの属性を定義しない要素を定義できることです。あなたがobject_code、OBJECT_TYPEとattribute_codeを使用して、より一貫性のあるデータを使用してプロパティを定義することができる第2のモデルでは
INSERT INTO object_property(object_code, attribute_code, my_value)
VALUES (3,4,'myvalue')
:object_propertyを定義するために、あなただけのような2つのコードを必要とするため、このモデルでは、使用するのが最も簡単です。ただし、次のように3つのコードと追加のクエリを使用する必要があります。
INSERT INTO object_property(object_code, object_type, attribute_code)
VALUES (3, (select object_type from object where code = 3), 4, 'my_value')
どちらが良いですか?
許容答えでもないですか?真に、リレーショナルデータベースはオブジェクト指向であるようには設計されていません。これは非常にうまく実行されず、コーディングするPITAになります。 –