数据库设计基础:如何创建“一对一”关系(1:1),以及在什么情况下需要这种关系,简单的例子说明。

数据库设计基础:如何创建“一对一”关系(1:1),以及在什么情况下需要这种关系,简单的例子说明。

当我们需要 "一对一" (1:1) 关系时?

当表 A 中的一条记录只能属于表 B 中的一条特定记录,而此时,表 B 中的一条记录也只能属于表 A 中的一条特定记录。

让我们考虑一个真实例子:假设我们需要在数据库中存储用户及其护照信息。护照信息的输入是可选的,因此我们不会将其存储在与用户相同的表中。

一个人只能有一本护照。对于任何特定的护照,也可以这么说:它只能属于一人。

如何创建 "一对一" (1:1) 关系?

需要在表 A 中(在我们的例子中是用户表)添加一个字段,用于存储表 B 中记录的 ID(唯一标识符)(在我们的例子中是护照表)。在护照表中添加一个字段,用于存储用户表中记录的 ID。这样,我们就创建了一对一关系,因为我们只能在一条记录的关系列中存储另一张表的一个 ID。

id - 每条记录在任何表中都有的唯一(不重复)编号(多对多关系表除外,但我们稍后会讨论这一点)。在一个表中不能有两个相同的 id,这让我们能够100%准确地通过其唯一编号获得所需的记录。

一对一 (1:1) 关系是这样的:

需要注意的是,尽管从架构角度来看,这确实代表真正的一对一关系,但在实际情况下,这种关系很少以双向格式建立,因为我们只需在表 B(护照)中指明一个字段,用于存储表 A(用户)中记录的 ID。

然而,实际上以这种方式创建的关系只能算作一对多,我们应该铭记一对一关系,不要在护照表中创建不同的记录指向同一个用户。如果这点记在心中有困难,请创建如上所示的双向关系。

以下是我们如何简化一对一关系,实际上创建一个一对多关系(只要我们将其用作一对一!):

如何处理 "一对一" (1:1) 关系?

让我们用我们的例子来分析。这是我们如何从用户表中获取一些用户数据及其一些护照信息:

SELECT

u.id,

u.email,

u.role,

p.firstname,

p.date_of_birth,

p.registration_address

FROM

user u,

passport p

WHERE

p.user = u.id

AND

c.user = ?;

在这里,N 的位置需要替换为用户的唯一编号。如果我们想获得所有用户及其护照信息,我们可以在 "p.user = u.id" 后添加分号,并删除下面的所有内容。

在邻近的文章中,您可以找到关于其他类型的关系数据关系的信息:多对多,以及一对多。如果您发现内容有用,可以通过喜欢/评论/订阅我的 教育 YouTube 频道来支持我。

相关推荐

2014世界杯最大冷门:德国7-1巴西,揭秘经典对决背后故事
365在线体育官方网站入口

2014世界杯最大冷门:德国7-1巴西,揭秘经典对决背后故事

📅 07-23 👁️ 9398
互联网信息:itouch6多少钱?itouch6价格和评估
365在线体育官方网站入口

互联网信息:itouch6多少钱?itouch6价格和评估

📅 08-24 👁️ 4073
言若悬河的意思/成语解释/故事/翻译/用法/含义查询