这是OOP数据库的关系模型,哪个更好?:
注意: - >此操作数用于定义外键,如(field-> table(reference))
第一
**
属性 (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)
**
第二
属性(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)
在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')
哪个更好?
答案 0 :(得分:0)
您的意思是说“关系型”吗?只有一种关系模型:
我们从未改变关系模型的公理。我们做了 多年来对模型本身的一些变化 - 例如, 我们已经添加了关系比较 - 但是公理(基本上是公理) 从那时起,经典谓词逻辑的那些一直保持不变 Codd的第一篇论文。此外,发生了什么变化 在我看来,在本质上是进化的,而不是革命性的。因此,我 确实声称只有一种关系模型,即使它有 随着时间的推移而演变,并且可能会继续这样做。
SQL and Relational Theory: How to Write Accurate SQL Code By C. J. Date