已有数据项,例如:
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这个关系标怎么建,方便高效率更新数据和查找数据
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