我陷入了一个问题,我必须使用 mysql 查找表之间关系的基数。在这篇文章之后
MySQL:如何以编程方式确定外键关系?
我找到了与我的表相关的所有表以及作为外键的列。现在我还想找到关系的基数,即一对一、一对多或多对多。任何想法或片段将不胜感激
问问题
3084 次
1 回答
6
让我们假设 tableA
有一个外键f
,它引用k
table的主键B
。然后您可以从架构中学习以下内容:
- 如果对 有
UNIQUE
约束A.f
,则 中A
的每一行最多只能有一行B
。请注意,在多列索引的情况下,唯一约束的所有列都必须是外键的一部分。您可以使用SHOW INDEX FROM tablename WHERE Non_unique = 0
来获取有关表的唯一性约束的信息。 - 如果
A.f
声明了 ,那么 中的每一行NOT NULL
总是至少有一行in 。您可以使用列出列并查看其中哪些允许值。B
A
SHOW COLUMNS FROM tablename
NULL
如果您将“一”解释为“零或一”,那么您将获得一个使用唯一约束的一对一关系,以及一个没有这样唯一约束。A
B
多对多关系将使用单独的表建模,其中每一行代表关系的一个元素,其中包含的两个外键具有多对一关系。
于 2012-09-27T12:39:42.800 回答