0

我的问题是如何从 SQL-DDL 模式中知道关系是一对一、多对多还是一对多?

谢谢,

4

3 回答 3

2

一对一关系在两端都有一个主键或唯一约束。

一对多关系将仅在两端之一上具有主键或唯一约束。

多对多关系将具有第三个表,该表具有与其他两个表的非唯一外键。(它们一起构成该表的主键。)

于 2013-05-22T07:03:54.627 回答
1

仅当您具有关联实体的外键时

  • 它们将显示1:x..yx 为 0 或 1,y 为 1 到 N 的关系
  • 在具有外键约束的表上:

实现 N:N 的链接表将有两个这样的关系

这可以在您可以从内置或第 3 方工具生成的数据库图表中看到。例子:

  • SQL Server 管理工作室
  • MySQL 工作台
于 2013-05-22T07:05:45.417 回答
0

您不能直接从架构中读取它。但是,如果您假设架构作者在实现参照完整性方面非常彻底,您可以进行一些推断。例如:

  • 1 : 0..1 == 一个表在与主键相同的列上有一个外键,并指向另一个表上的主键列。
  • 0..N : 0..N == 一个单独的链接表,它有一个指向表 1 的外键,另一个指向表 2 的外键,以及一个覆盖两个外键中所有列的主键。
  • 1 : 0..N == 如果其他都不为真并且有指向另一个表的外键,则您可以假设的唯一安全的事情。

注意:如果外键指向唯一约束而不是主键,也可以进行相同的推论。

于 2013-05-22T07:12:33.890 回答