这样一个关系,怎么建表效率最高

blacklevin 总经理  2011-05-30 04:32:46
已有数据项,例如:
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

这个关系标怎么建,方便高效率更新数据和查找数据
...全文
33 点赞 收藏 4
写回复
4 条回复
firecc05 2011年06月05日
建表:
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
回复 点赞
blacklevin 2011年06月05日
项很多,而且不固定,不能建成coloum
回复 点赞
Zoezs 2011年05月30日
把每个项都建成一个column,有的就放,没有的就置空,然后查询。
回复 点赞
快溜 2011年05月30日
没明白,帮顶。
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9308

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告