如何了解SQL-DDL模式的基数



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

谢谢,

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

一对多关系只能在一端有主键或唯一约束。

多对多关系将有第三个表,其非唯一外键指向另外两个表。

仅当您使用外键来关联实体

  • 它们将显示1:x..y关系,其中x为0或1,y为1到N
  • 在有外键约束的表上:
    • x无法从DDL中确定。也就是说,执行一项强制性的儿童法案并不容易。
    • 符号见http://en.wikipedia.org/wiki/Cardinality_%28data_modeling%29
    • 在该列上唯一表示y = 1
    • 非唯一表示y = N

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

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

    SQL Server Management StudioMySQL工作台

您不能直接从模式中读取它。然而,如果您假设模式作者在实现引用完整性方面非常彻底,那么您可以做出一些推论。例如:

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

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

最新更新