mysql - 这是在 mysql 中制作一对一关系表的好习惯吗?

标签 mysql

使用mysql数据库管理系统

我已经创建了一个客户表

create table customer
(id int ,
name varchar(3),
primary key(id));

现在我创建另一个表地址,我在其中从客户表中创建唯一的外键(id)

create table customer_add
(hno int ,
block_name varchar(3),
street_no int,
town varchar(20),
state varchar(20),
cust_id int unique,
primary key(hno),
foreign key(cust_id) references winecustomer(id));

这是一个错误的方法吗?如果是,我应该如何建立一对一的关系? 除了 onetoone、onetomany、manytomany 之外还有其他关系吗?

最佳答案

基于 ERD(实体关系图),可以存在一对一的关系。但是,当您创建表时,您可以选择哪个表获取另一个表的主键,从而成为外键。在 ERD 中,您还可以通过查看哪个表具有 TOTAL/FULL 参与来确定哪个表应该具有其他表的主键。

示例: 员工 ---1-----(有)----1---(经理)

这里我们说一名员工有一名经理,而经理有一名员工。假设员工具有 Employee_SSN 属性,那么在 Manager 表中,我们可以将 Employee_SSN 作为引用员工表的外键。或者,假设经理有 M_SSN,那么 Employee 将 M_SSN 作为引用经理表的外键。但是,如果其中一个人完全/完全参与,那么该人将收到另一个表的主键。建立一对一的关系是完全可以的(一对一的关系在 ERD 中更容易、更清晰地看到)。

关于mysql - 这是在 mysql 中制作一对一关系表的好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38513351/

相关文章:

mysql - PG 缺少表的 FROM 子句条目

linux - Mariadb - Blob 数据导入仅适用于转储的同一数据库

html - 我如何防止从数据库中处理错误字符?

mysql - 酒店预订系统数据库架构

sql - MySQL:如何复制行,但更改几个字段?

mysql - 如何使用 sqlx 进行 LEFT JOIN 查询?

php - 使用 PHP PDO 插入多个数组

mysql - php mysql 选择数据所在列数组

mysql - 二进制与普通文本匹配的性能

MySQL:为什么在此查询中将 "1+1"视为 "1"?