Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在数据库设计中表示一对一的关系?_Database - Fatal编程技术网

Database 如何在数据库设计中表示一对一的关系?

Database 如何在数据库设计中表示一对一的关系?,database,Database,假设我有两门课:笔记本电脑和液晶显示器。现在我们假设每台笔记本电脑只能有一个Lcd,并且Lcd在任何时候都只能安装在一台笔记本电脑上。我们还假设可以从一台笔记本电脑上卸下液晶显示器,然后安装到另一台上。所以这是一个一对一的关联,从笔记本电脑到液晶显示器 现在的问题是,如何为这种一对一关系设计db模式 非常感谢, Bryan这可以通过在笔记本电脑表中有一个外键指向Lcd表的主键来实现。主键通常是一个自动递增的整数,确保表中的每一行都是唯一的 这可以通过让笔记本电脑表中的外键指向Lcd表的主键来实现

假设我有两门课:笔记本电脑和液晶显示器。现在我们假设每台笔记本电脑只能有一个
Lcd
,并且
Lcd
在任何时候都只能安装在一台
笔记本电脑上。我们还假设可以从一台
笔记本电脑
上卸下
液晶显示器
,然后安装到另一台上。所以这是一个一对一的关联,从
笔记本电脑
液晶显示器

现在的问题是,如何为这种一对一关系设计db模式

非常感谢,


Bryan

这可以通过在笔记本电脑表中有一个外键指向Lcd表的主键来实现。主键通常是一个自动递增的整数,确保表中的每一行都是唯一的

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

对此建模的最简单方法是在LCD表中放置一个外键,该外键链接回笔记本电脑表。使该列不可为null且唯一

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

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

(同样值得注意的是,同样的方法也可以反过来使用,
膝上型电脑
表的
LCD
表有一个不可为空的唯一外键)。

建模的最简单方法是在链接回膝上型电脑表的LCD表中放置一个外键。使该列不可为null且唯一

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

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

(同样值得注意的是,同样的方法也可以反过来使用,
膝上型电脑
表的
LCD
表有一个不可为空的唯一外键)。

你只需在
膝上型电脑
表中有一列引用其
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)
)

您只需在
膝上型电脑
表中有一列引用其
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)
)

LCD_Id会是外键吗?可能是,如果您使用的是支持外键的MySQL和存储引擎版本,LCD_Id会是外键吗?可能是,如果您使用的是支持外键的MySQL和存储引擎版本