所以给出了一些非常基本的MainTables,例如A,B,C,D应由set theory(union,intersect,complement)操作组成,使用某种GUI,产生新的SubsetTables
随着更多子集的创建,它们越来越依赖于彼此,例如E =(A和B),F =(A和B和C) - 都是布尔函数,人的id在这些集合中是不是
现在我尝试优化填充/查询我的表的数据库查询,以便查询不是F =(连接B连接C)但是F =(E连接C),这是有意义的,因为E包含更少的行它已经是一个子集
最后这意味着即时通知我询问哪个(如果有的话)数学/软件算法可以用许多集合和子集(可能是几百个)来优化我的问题,这样我就可以有效地查询和填充表格
我已经考虑过仅使用MainSet的信息创建新的子集并使用Karnaugh-Veitch-Algorithm优化那些GUI创建的子集,但是这将导致例如A和B和C.我不知道如何进行优化的第二步(A和B和C)转换为(E和C),并且更复杂,导致找到(sub)的最有效组合的问题集的
thx任何建议
答案 0 :(得分:0)
可能有一些其他原因导致您无法更改表架构,但是如果您能够更改架构,我建议您改为使用包含所有人ID的单个表,并且具有布尔值(位)每个数据的列,例如:
ID A B C
--- -- -- --
1 1 0 1
2 1 1 0
etc...
这意味着数据库服务器将为您完成所有优化:
-- Select all people in set A
SELECT * FROM MyTable WHERE A = 1
-- Select all people in set E
SELECT * FROM MyTable WHERE A = 1 AND B = 1
-- Select all people in set F
SELECT * FROM MyTable WHERE A = 1 AND B = 1 AND C = 1
(我还建议给你的专栏更好的名字)