mysql - 如何发现 RDBMS 中的关系?

标签 mysql sql-server postgresql relational-database relationship

我正在研究 RDBMS 中的关系。我了解映射关系背后的基本概念,但我无法发现它们。

三种可能性:

  1. 一对多(最常见)需要PK - FK关系。涉及两个表
  2. 多对多(不太常见)需要联结表。涉及三个表
  3. 一对一(非常罕见)。涉及一张 table 。

当我开始一个项目时,我无法区分前两个条件,而且我的头脑也不清楚。 示例在我短暂学习时有帮助,但在我需要将这些原则付诸实践时却无济于事。

这是大多数初学者犹豫不决的地方。 我怎样才能发现这些关系。有没有更简单的方法?

最佳答案

不要从技术角度看关系。尝试在脑海中设想关系时,使用类比和现实生活中的例子。

例如,假设我们有一个图书馆数据库。 图书馆必须有书籍

中:中

每本 Book 可能由多个 Authors 编写,每个 Author 可能已编写多本 Book。因此,这是一个多对多关系,将反射(reflect)到数据库中的 3 个表中。

1:M

每本 Book 还必须有一个 Publisher,但是一本 Book 可能只有一个 Publisher 和一个 Publisher 可以发布很多书籍。因此它是一个一对多关系,它反射(reflect)了 Books 表中引用的 PublisherId

像这样一个简单的类比可以解释与其核心的关系。当你试图通过技术镜头来看待它们时,你只会让自己变得更难。真正困难的是在构建数据库时应用真实世界的数据场景。

关于mysql - 如何发现 RDBMS 中的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681781/

相关文章:

php - 如何在我的 php 代码中添加搜索消息 "Not found"?

php - 当另一个表中不存在某些内容时执行此查询

.net - 从存储过程填充 DataGridView

mysql - 从 MS-SQL Server 查询转换为 MySQL 和 DATEDIFF()

postgresql - postgres游标错误

mysql - 教义 DQL 到 QueryBuilder

mysql - 错误 1193 (HY000) : Unknown system variable 'GTID_PURGED'

sql-server - 如何找出哪个存储过程的哪一行发生了错误?

postgresql - 如何通过 Doobie 将案例对象插入为 JSONB 格式?

ruby-on-rails - 无法在 Mac OSX 上安装 PG gem