【发布时间】:2012-09-27 09:32:55
【问题描述】:
我遇到了一个问题,我必须使用 mysql 查找表之间关系的基数。关注这篇文章
MySQL: How to determine foreign key relationships programmatically?
我找到了与我的表相关的所有表以及作为外键的列。现在我还想找到关系的基数,即一对一、一对多或多对多。任何想法或 sn-ps 将不胜感激
【问题讨论】:
-
您真的需要使用相关表计算当前基数吗?基数与可能的值无关,它与当前数据有关。所以,查询应该是:
count(distinct values in column)/count(rows in table) -
我只是想看看表之间的关系是一对一、一对多还是多对多
-
如果您在子表中没有找到不代表关系为 1:1 的重复项。与 1:N、M:N 相同。换句话说,您不能确定仅依赖于在子/父表中查找副本的关系类型。您只能找到 M:N 关系,这将是正确的。其他答案就像“可能是 1:1 或 1:N”
-
是的,但我认为必须有某种方法可以找出答案。如果你使用过 yii 框架,它的 crud 生成器构建了 HAS_MANY、MANY_MANY、HAS_ONE 等关系类型,这意味着有一些方法可以找出答案。
-
对不起,我不熟悉这个框架。这是伪代码,可以帮助您根据数据查找关系类型。但请注意升级关系类型。这是链接:gist.github.com/3793455。只是一个指导
标签: mysql foreign-keys relationship cardinality