Database 用于将不同表中的行连接在一起的列的名称是什么?

Database 用于将不同表中的行连接在一起的列的名称是什么?,database,terminology,Database,Terminology,我有一张这样的桌子: name,height Alice,1.75 Bob,1.74 name,DOB Bob,1965-04-04 Alice,1972-09-27 name,DOB,height Alice,1972-09-27,1.75 Bob,1965-04-04,1.74 然后我有一张这样的桌子: name,height Alice,1.75 Bob,1.74 name,DOB Bob,1965-04-04 Alice,1972-09-27 name,DOB,height A

我有一张这样的桌子:

name,height
Alice,1.75
Bob,1.74
name,DOB
Bob,1965-04-04
Alice,1972-09-27
name,DOB,height
Alice,1972-09-27,1.75
Bob,1965-04-04,1.74
然后我有一张这样的桌子:

name,height
Alice,1.75
Bob,1.74
name,DOB
Bob,1965-04-04
Alice,1972-09-27
name,DOB,height
Alice,1972-09-27,1.75
Bob,1965-04-04,1.74
我想要一张这样的桌子:

name,height
Alice,1.75
Bob,1.74
name,DOB
Bob,1965-04-04
Alice,1972-09-27
name,DOB,height
Alice,1972-09-27,1.75
Bob,1965-04-04,1.74

在数据库术语中,
name
列的名称是什么?那是主键吗?

我不知道他们是否有一个标准的名字;我总是将它们称为“连接列”,作为“参与连接的列”的缩写,或者,如果谈论它们所包含的布尔运算,则称为“连接条件”/“连接谓词”

主键是另一回事。它是一列或一组列,可确保唯一标识表中的行。表不必有PK,也不必有PK来参与联接,联接也不必使用作为主键一部分的ny列。表必须有PK才能作为外键的目标;确保一个表中的数据与另一个表中的数据相关的机制

在您的示例中,可能所有这些数据都在同一个表中。不要在表之间不必要地分割数据,尤其是当表之间的关系为1:1时

因为一个人的生日永远不会改变,但他们的身高却会改变,所以将带有生日的表作为主表更有意义,并且带有高度的表也有一个数据列,指示测量高度的时间。然后,此表将被外键输入到主表

Person
Name, DOB
Alice, 2000-01-01
Bob, 2001-01-01

Measurement
Name, Height, ReadingDate
Alice, 100, 2002-01-01
Alice, 110, 2003-01-01
Bob, 101, 2002-01-01
Bob, 112, 2003-02-01
Bob, 118, 2004-01-01
Measurement.Name不能是PK,因为它不是唯一的,但我们可以说Name+ReadingDate可以是(如果我们有一条规则“同一天不能有两次读数”)。使用两列作为PK不会阻止Meansurement.Name作为引用Person.Name(主键)的外键


注;我并不是说这种关系必须如此;您当然可以将DOB表作为heights表的外键-只是这样做没有意义,但这样做更有意义。此结构可以回答诸如“Bob在约会X时有多高”、“男孩和女孩每月的平均增长率是多少”或“根据外推,Alice现在可能有多高?”

我相信您指的是关系数据库。问题是:name列是否已明确定义为主键?如果不是,它就不能被称为真正意义上的主键。如果已在第一个表中将其定义为主键,则为是,它是主键。另外,关于第二个表,它是外键。@CKing我要说,在列出的示例中,它是外键。