2011-11-16 7 views
0

これは、このよりよい?:どのようなリレーショナルモデルがこの例に適していますか?

注あるOOPデータベース、リレーショナルモデルである: -

    >このオペランドを(フィールド - >表(参照))のような外部キーを定義するために使用されます
  1. まず

    **

    属性 (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) 
    

**

  1. セカンド

    属性(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') 

どちらが良いですか?

+0

許容答えでもないですか?真に、リレーショナルデータベースはオブジェクト指向であるようには設計されていません。これは非常にうまく実行されず、コーディングするPITAになります。 –

答えて

0

"リレーショナルモデル"とはどういう意味ですか?リレーショナルモデルは1つしかありません。

リレーショナルモデルの公理は決して変更されていません。 には、モデル自体に数多くの変更が加えられています。たとえば、 には関係比較が追加されましたが、公理(古典的な述語ロジックのものは )は変更されていません。 Coddの最初の論文。さらに、どのような変化が起こったのかは、すべて私の見解では、進化論ではなく革命的であるという性質を持っています。したがって、 が進化しており、おそらくこれを続けるとはいえ、I は実際には1つのリレーショナルモデルしかないと主張しています。

SQL and Relational Theory: How to Write Accurate SQL Code By C. J. Date

関連する問題