已有数据项,例如: A B C D A C B A C C B ....... 统计出相关性如下: A和B 同时出现2次 A和C 同时出现3次 A和D 同时出现1次 B和C 同时出现3次 B和D 同时出现1次 C和D 同时出现1次 ........ 要建表保存这个相关性 AB 2 AC 3 AD 1 BC 3 BC 1 CD 1 之后按相关性排序查找 例如找A最相关的项依次是 C 3 B 2 D 1 这个关系标怎么建,方便高效率更新数据和查找数据
建表:
TableA:(id int indentity(1,1) primary key,A int, B int, C int, D int, AB int ,AC int,AD int,BC int,BD int, CD int)
即一个ID列,4个基本列,两两相互组合的6个列.
1.先插入原始值如:
A B C D
A C
B A C
C B
等效于
insert into TableA (A,B,C,D)
select 1,1,1,1 union all
select 1,0,1,0 union all
select 1,1,1,0 union all
select 0,1,1,0
2.然后初始化后6列为1
update TableA set AB =1,AC=1,AD=1,BC=1,BD=1,CD=1
3.根据基准列的存在性计算组合列的存在性
update TableA set AB=0,AC=0,AD=0 where A=0
update TableA set AB=0,BC=0,BD=0 where B=0
update TableA set AC=0,BC=0,CD=0 where C=0
update TableA set AD=0,BD=0,CD=0 where D=0
4.统计相关性
select sum(AB),sum(AC),sum(AD),sum(BC),sum(BD),sum(CD) from TableA