数据库一对一关系实现

标签 database

目前我还没有构建任何数据库,我仍处于学习使用 ER 图和表列表规划数据库的阶段。

我明白什么是一对一关系,什么时候使用它们,什么时候避免它们等等。我不明白的是它们是如何实现的?他们都有相同的主键吗?还是像多对多关系一样简单地放入一个外键?

最佳答案

人们通常会将其实现为指向另一个表的主键的一个表上的非空外键,并在此外键上添加唯一约束。

您还可以添加检查约束以确保表中的所有外键都显示为另一个表中的主键,反之亦然,尽管这样做会使在两个表中添加和删除项目变得相当困难。

另外两个选项是:

  • 制作一个合并两个实体的表格。但这违背了实体和数据分离的概念。
  • 有一个正常的多对多实现,并通过上述约束实现一对一。

关于数据库一对一关系实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285304/

相关文章:

java - 在 MyBatis 中返回一个列表<MyClass>

mysql - 外键引用自己的表?

python - Django 迁移——是否可以在项目中间使用 South?

PHP 数学四舍五入值

database - 在什么复杂度下多次旅行会超过对对象图的单个查询?

php - Laravel 中的“播种”是什么意思?

mysql - 失去对 MySql 服务器的 Azure 数据库的服务器管理员用户访问权限

mysql - 外键关系没有意义,有没有更好的方法?

django - 如何知道 Django 中的数据库何时准备就绪?

ruby-on-rails - 如何处理 Rails 中的数据库错误?