用于在表中查找一对多的查询/算法

时间:2018-06-09 15:46:45

标签: sql

我正在尝试创建一个算法来评估单个表中哪些列可能具有一对多关系,并且可能是父/子。

考虑下表:

Category | Subcategory | Product   | Description
A1       | BBB         | Batteries | Energizer 
A1       | BCB         | Plugs     | Safety Plugs
A2       | CDE         | TVs       | Samsung
A2       | CDE         | Monitors  | Dell

在这种情况下,Category可以是所有列的父级。子类别可以是其他两列的父级。产品/说明是1对1。

我已经尝试比较两个列与分区不同的计数,但无法真正解决它。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

也许您可以通过列中不同值的比率和表格中的总行数来计算概率。

webpack-hot-middleware

概率越高,概率越大,该列独立于任何其他。

但这不会给你一个明确的答案。我怀疑这甚至是可能的。最后,所有这些都依赖于数据的语义,而不是实际的数据集(即使表中根本没有数据,逻辑关系仍然是真的)。​​

答案 1 :(得分:1)

像这样的查询会这样做:

connect.sid

此示例说明了仅使用少量选定列对的技术,但可以将其扩展为包括所有列对。可以扩展相同的技术以包括多个列作为候选父键,但是要联合的子句的数量将快速爆炸。一个好的通用解决方案是用客户端语言编写一些东西,从信息模式中提取所有列名,并自动创建SQL以检查您可能感兴趣的所有组合。