mysql一对一关系_sql-MySQL-一对一关系?
我正在尝试在MySQL数据库中实现一对一关系。 例如,假设我有“用户”表和“帐户”表。 并且我想确保有一个用户只能拥有一个帐户。 每个用户只能有一个帐户。
我找到了两个解决方案,但是不知道该使用什么,还有其他选择。
第一个解决方案:
DROP DATABASE IF EXISTS test;
CREATE DATABASE test CHARSET = utf8 COLLATE = utf8_general_ci;
USE test;
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
user_name VARCHAR(45) NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
CREATE TABLE accounts(
id INT NOT NULL AUTO_INCREMENT,
account_name VARCHAR(45) NOT NULL,
user_id INT UNIQUE,
PRIMARY KEY(id),
FOREIGN KEY(user_id) REFERENCES users(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
在此示例中,我在指向用户主键的帐户中定义外键。然后,我使外键成为UNIQUE,因此帐户中不能有两个相同的用户。要联接表,我将使用以下查询:
SELECT * FROM users JOIN accounts ON users.id = accounts.user_id;
第二种解决方案:
DROP DATABASE IF EXISTS test;
CREATE DATABASE test CHARSET = utf8 COLLATE = utf8_general_ci;
USE test;
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
user_name VARCHAR(45) NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
CREATE TABLE accounts(
id INT NOT NULL AUTO_INCREMENT,
account_name VARCHAR(45) NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(id) REFERENCES users(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
在此示例中,我创建了一个外键,该外键从主键指向另一个表中的主键。 由于默认情况下主键是UNIQUE,因此使此关系一对一。要联接表,我可以使用以下方法:
SELECT * FROM users JOIN accounts ON users.id = accounts.id;
现在的问题:
在MySQL中创建一对一关系的最佳方法是什么?
除了这两个以外,还有其他解决方案吗?
我正在使用MySQL Workbench,当我在EER图中设计一对一关系并让MySQL Workbench生成SQL代码时,我得到了一对多关系:S那就是让我感到困惑的:S
而且,如果我将这些解决方案中的任何一个导入到MySQL Workbench EER图中,它就会将关系识别为一对多:S,这也很令人困惑。
因此,在MySQL DDL中定义一对一关系的最佳方法是什么。 有什么选择可以实现这一目标?
mysql一对一关系_sql-MySQL-一对一关系?相关推荐
- 多表关系介绍 mysql
多表关系介绍 mysql 关注表与表之间的关系 一对一关系 一个人只有一个身份证 一个身份证只对应一个人 一对多关系(或者说 多对一关系) 一个部门有多个员工 一个员工只能对应一个部门 多对多关系 一 ...
- SQLAlchemy_定义(一对一/一对多/多对多)关系
SQLAlchemy_定义(一对一/一对多/多对多)关系 目录 Basic Relationship Patterns One To Many One To One Many To Many Basi ...
- Java初学者疑难杂症之:一对一和一对多的关系
2019独角兽企业重金招聘Python工程师标准>>> [威哥说]作为一个程序员,我们每天都在"搞"对象,额,"用"对象,感觉那个词都不太好, ...
- mysql 实体关系表_实体关系图
解释 实体关系图:简记E-R图是指以实体.关系.属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式.E-R图为实体-联系图,提供了表示实体型.属性和联系的方法,用来描述现实世界的概念模 ...
- java一对一关系_Java初学者疑难杂症之:一对一和一对多的关系
[威哥说]作为一个程序员,我们每天都在"搞"对象,额,"用"对象,感觉那个词都不太好,还是继续向下说,对象之间的关系有的是一对一的,也有一对多的(现实中有才好) ...
- MySQL Workbench构建ER图(实体关系图)
MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具,它是著名的数据库设计工具DBDesigne4的继任者,可以通过MySQL Workbench设计和创建新的数据库图示,管理 ...
- mysql _外键、实体关系与ER图
外键约束概念: A实体的某个字段指向 B实体的主键, 则称A实体的那个字段为该实体的外键, 一个表里可以有多个外键drop table if exists class;create table cla ...
- Mybatis xml中配置一对一关系association一对多关系collection
Mybatis xml中配置一对一关系association&一对多关系collection 今天在配置一对一关系映射以及一对多关系映射的时候,把collection中应该使用的ofType配 ...
- [MySql]实现多表查询-一对一,一对多
目录 多表关联关系的分类 mybatis中的多表查询: 数据库准备 项目目录 一对一查询(多对一) 方式一:(xml文件映射) 查询结果: 方式二:(注解映射) 一对多查询(一对多) 方式一:(xml ...
- Mysql快速备份_sql备份
Mysql快速备份_sql备份 1.备份表结构和数据(先完整备份表结构,再插入数据)create table 新表 like 需要备份的表;insert into 新表 (select * from ...
最新文章
- HTML5中的websocket图片直播
- python3 爬取西祠代理IP数据
- C++ ,leetcode 43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式
- SpringBoot中使用@Mapper注解需要哪个包
- 一个多功能蓝色漂亮的搜索条
- BDD框架之Cucumber研究
- 了解一下Elasticsearch的基本概念
- python 生成pdf_如何使用Python生成PDF?
- 现在每月五千块钱的收入,相当于七八十年代的多少钱?
- 点这里安装Alexa工具条
- python:文件处理之TXT
- matlab菲涅尔衍射光强分布,求助!!!用颜色表示的菲涅尔衍射的光强分布图
- 卓岚APP远程采集正泰单相电子式电能表 ZLAN5144J的应用分享
- C4D插件X-Particles粒子特效(三)
- 基于anbox的云游戏技术简介
- UI设计师如何通过兼职月入过万?
- 在企业中TPM管理如何开展?
- Tkinter登陆界面设计
- python123凯撒密码_凯撒密码和反密码
- 计算机听课与评课活动记录表,听课 评课记录表参考