0

我陷入了一个问题,我必须使用 mysql 查找表之间关系的基数。在这篇文章之后
MySQL:如何以编程方式确定外键关系?
我找到了与我的表相关的所有表以及作为外键的列。现在我还想找到关系的基数,即一对一、一对多或多对多。任何想法或片段将不胜感激

4

1 回答 1

6

让我们假设 tableA有一个外键f,它引用ktable的主键B。然后您可以从架构中学习以下内容:

  • 如果对 有UNIQUE约束A.f,则 中A的每一行最多只能有一行B。请注意,在多列索引的情况下,唯一约束的所有列都必须是外键的一部分。您可以使用SHOW INDEX FROM tablename WHERE Non_unique = 0来获取有关表的唯一性约束的信息。
  • 如果A.f声明了 ,那么 中的每一行NOT NULL总是至少有一行in 。您可以使用列出列并查看其中哪些允许值。BASHOW COLUMNS FROM tablenameNULL

如果您将“一”解释为“零或一”,那么您将获得一个使用唯一约束的一对一关系以及一个没有这样唯一约束。AB

多对多关系将使用单独的表建模,其中每一行代表关系的一个元素,其中包含的两个外键具有多对一关系。

于 2012-09-27T12:39:42.800 回答