Database 在两个表上应用自然联接时,新的主键是什么?

Database 在两个表上应用自然联接时,新的主键是什么?,database,relational-database,natural-join,Database,Relational Database,Natural Join,如果有两个表: table1带有属性a1、a2、a3和table2带有属性b1、b2、b3。和a1和b1是它们各自的主键。在两个表上应用自然联接时,新的主键是什么。在关系数据库术语中,a1、b1组合形成一个复合主键,或者它们变成两个独立的候选键。结果应具有对应于一个关系中的每个键与另一个关系中的每个键配对的键(即“自然连接”)在候选键中,而不仅仅是每个关系一个键)。因此,如果A1和B1是示例中唯一的关键点,那么自然连接结果中唯一的关键点将是(A1,B1) 但是,您使用MySQL标记了您的问题。M

如果有两个表:


table1
带有属性
a1、a2、a3
table2
带有属性
b1、b2、b3
。和
a1
b1
是它们各自的主键。在两个表上应用自然联接时,新的主键是什么。在关系数据库术语中,
a1、b1
组合形成一个复合主键,或者它们变成两个独立的候选键

。结果应具有对应于一个关系中的每个键与另一个关系中的每个键配对的键(即“自然连接”)在候选键中,而不仅仅是每个关系一个键)。因此,如果A1和B1是示例中唯一的关键点,那么自然连接结果中唯一的关键点将是(A1,B1)


但是,您使用MySQL标记了您的问题。MySQL是一个SQL DBMS,而不是关系数据库。MySQL不支持密钥派生的关系模型概念。在MySQL中,这种查询的结果中没有任何键的物理实现。

是什么让您认为DBMS在创建数据集(即选择的结果)时创建了一个新的主键(任何类型)?运行select时,结果是一个包含0条或更多记录的列表,而不是一个新表。我无法理解问题的前提。没有“新”PK联接中没有主键。不需要仅仅在评论中重复你的问题,特别是在评论告诉你答案之后。数据关系模型的一个基本特性是查询结果、视图和基表都具有相同的数据结构。公共数据结构称为关系。一个关系总是有一个键(或多个键),因此键的概念在查询结果中就像在基表中一样是相关的。从操作数表中存在的FD(函数依赖项),我们还可以机械地确定某些CKs(候选键)(&FD)在@sqlvogel的答案描述之外的结果中。