哪个关系模型更适合这个例子?

时间:2011-11-16 05:20:55

标签: mysql sql database-design foreign-keys

这是OOP数据库的关系模型,哪个更好?:

注意: - >此操作数用于定义外键,如(field-> table(reference))

  1. 第一

    **

    属性     (id:auto,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)
    
  2. **

    1. 第二

        

      属性(id:auto,attribute_name)

           

      type(id:auto,type_name)

           

      type_attribute(id:auto,type_code-> type(id),   attribute_code-> attribute(id),default_value)

           

      object(id:auto,name,object_type-> type(id))

           

      object_property(id:auto,(object_id,   object_type) - > object(id,object_type),(object_type,   attribute_id) - > type_attribute(id,attribute_id),my_value)

    2. 在object_property表中可以清楚地看到差异。

      在第一个模型中,您可以使用代码和属性代码定义属性,此处的问题是您可以定义类型未定义对象类型属性的元素。但是,这个模型最容易使用,因为要定义一个object_property,您只需要两个代码,如:

      INSERT INTO object_property(object_code, attribute_code, my_value)
       VALUES (3,4,'myvalue')
      

      在第二个模型中,您可以使用object_code,object_type和attribute_code使用更一致的数据定义属性。但是,您需要使用三个代码和其他查询,如下所示:

      INSERT INTO object_property(object_code, object_type, attribute_code) 
      VALUES (3, (select object_type from object where code = 3), 4, 'my_value')
      

      哪个更好?

1 个答案:

答案 0 :(得分:0)

您的意思是说“关系型”吗?只有一种关系模型:

  

我们从未改变关系模型的公理。我们做了   多年来对模型本身的一些变化 - 例如,   我们已经添加了关系比较 - 但是公理(基本上是公理)   从那时起,经典谓词逻辑的那些一直保持不变   Codd的第一篇论文。此外,发生了什么变化   在我看来,在本质上是进化的,而不是革命性的。因此,我   确实声称只有一种关系模型,即使它有   随着时间的推移而演变,并且可能会继续这样做。

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