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

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

这个关系标怎么建,方便高效率更新数据和查找数据
...全文
117 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
没明白,帮顶。

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧