具有公共主键的表

时间:2010-10-09 16:39:44

标签: database terminology

描述共享公共主键的表之间关系的术语是什么?

以下是一个例子:

表1 property(property_id,property_location,property_price,...);

表2 flat(property_id,flat_floor,flat_bedroom_count,...);

6 个答案:

答案 0 :(得分:5)

你拥有的看起来像表继承一样。如果您的表结构是所有flat条记录代表单个property但不是所有property条记录引用flat,则表示该表继承。这是一种在关系数据库中对面向对象关系(换句话说,flat继承自property)的内容进行建模的方法。

答案 1 :(得分:4)

如果我正确理解您的示例,则数据建模术语是Supertype / Subtype。这是一种建模技术,您可以在其中定义包含公共属性的根表(超类型),以及一个或多个基于正在建模的实体包含不同属性的引用表(子类型)。

例如,您可以拥有一个Person表(超类型),其中包含与所有人相关的属性列,例如Name。然后,您可以拥有一个Employee表(子类型),其中包含仅适用于员工的属性,例如工资率和雇用日期。然后,您可以使用其他人员专业化的附加表继续此过程,例如承包商。每个子类型表都有一个PersonID键列,它可以是子类型表的主键,以及引用Person表的外键。

有关其他信息,请在Google上搜索“超类型和子类型实体”,并查看以下链接。

答案 2 :(得分:1)

在常见的数据库术语中,这种关系没有一个好名字(据我所知)。它不是一对一的关系,因为不能保证在主表中的每个记录的“扩展”表中都有记录。这不是一对多的关系,因为在关系的“多”方面,最多只允许一条记录。

我能做的最好的事情是一对一或一对一或一对一的关系。 (我将承认自己的草率术语 - 我只是称之为一对一的关系。)

无论您决定调用它,您都可以通过将属性中的property_id列设置为PK并将flat_中的property_id列设置为PK并将FK恢复为属性来正确建模并维护数据库中的完整性。

答案 3 :(得分:1)

“逻辑和数据库”为这种关系提出了“最多一个到最多一个”的术语。 (请注意,根据他们参与的关系,为指定名称是疯狂的。)

请注意那些提出“外键”,“表继承”,简要说明等所有其他答案的人。那些人假设您没有明确声明有效,即您的两个表中的一个将保证包含出现在另一个表中的所有键值。

答案 4 :(得分:1)

(网站的功能性使我无法在适当的位置添加此评论。)

“你会如何解释”......共享一个共同的主键?“”

我在唯一合理的意义上解释了这一点:在table1中,主键的属性值保证是唯一的,而在table2中,主键的属性值保证是唯一的。此外,两个表中的主键具有相同的[组]属性名称,并且与主键属性[s]对应的类型也成对相同。没有更多,也没有更少。

特别是,“共享一个主键”意味着“拥有一个共同的主键”,这意味着“共同拥有一个'内部唯一性规则'”,但这种共性绝不保证一个表中出现的主键值也必须出现在第二个表中。

“你能给出一个涉及两个共享主键表的例子,其中一个表不包含另一个表中出现的所有键值吗?” “

表1:类型为整数的列A,主键A. 表2:整数类型的A列,主键A

表1中的行:{A:1}。满足table1的主键。 表2中的行:{A:2}。满足table2的主键。

深信不疑?

答案 5 :(得分:0)

Foreign key”?