如何在db设计中表示一对一的关系?

时间:2010-10-28 03:20:57

标签: database

假设我有两个课程LaptopLcd。我们现在假设每台笔记本电脑只能有一个Lcd,而Lcd只能在一个Laptop上安装。我们还假设Lcd可以从一个Laptop中移除并安装在另一个Laptop上。这是从Lcd到{{1}}的一对一关联。

现在的问题是,如何为这种一对一关系设计数据库架构?

非常感谢,

布赖恩

3 个答案:

答案 0 :(得分:4)

对此进行建模的最简单方法是将外键放在LCD表中,该表连接回Laptop表。使该列不可为空且唯一。

Laptop
-------------
LaptopId (PK)
...

LCD
-------------
LCDId (PK)
LaptopId (FK, Non-null, Unique constraint)

(同样值得注意的是,相同的方法可以反过来工作 - Laptop表具有LCD表的不可为空的唯一外键。

答案 1 :(得分:1)

这可以通过让Laptop表中的外键指向Lcd表的主键来实现。主键通常是自动递增的整数,并确保表中的每一行都是唯一的。

答案 2 :(得分:0)

您只需在laptop表格中有一列引用其lcd的主键,而不使用连接表。

您没有指定您正在使用的数据库软件,但在MySQL中,这看起来像这样:

CREATE TABLE laptops (
 id INTEGER NOT NULL AUTO_INCREMENT,
 lcd_id INTEGER,
 PRIMARY KEY (id)
)

CREATE TABLE lcds (
 id INTEGER NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (id)
)