如何从SQL-DDL架构中了解基数?

时间:2013-05-22 06:58:35

标签: sql

我的问题是如何从SQL-DDL架构中了解关系是一对一还是多对多或一对多?

谢谢,

3 个答案:

答案 0 :(得分:2)

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

一对多关系只对两端中的一端有主键或唯一约束。

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

答案 1 :(得分:1)

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

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

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

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

  • SQL Server Management Studio
  • MySQL workbench

答案 2 :(得分:0)

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

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

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