| 
 | 
 
有个小问题想麻烦大家,帮看下..出来咋到,请多帮助还 
假设有数据表A 
由:信息ID(PK) 信息本身这两个字段构成 
另外有数据表B 
由关键字ID(PK) 关键字本身(INDEX)真两个字段够成 
另外有数据表C 
由关键字ID(PK) 关键字本身(INDEX)真两个字段够成 
其中数据表B放着的是数据表A的一种类型的标签 
数据表C放着的是数据表A的另外一种类型的标签 
现在我要根据数据表B及数据表C的关键字(各一个关键字)查找出来数据表A中的一条记录 
(一条信息可以对应B表及C表中的多个关键字...一个B表或者C表中的关键字可以对应多条信息) 
那么我现在选择的方案为 
一: 
建立数据关系表A_B 
由字段 关系ID(PK) A表的信息ID(INDEX) B表的关键字ID(INDEX) 构成 
建立数据关系表A_C 
由字段 关系ID(PK) A表的信息ID(INDEX) C表的关键字ID(INDEX) 构成 
也就是说如果一条信息对应B表5个关键字,对应C表2个关键字 
那么A_B中要有关于这条信息的5条记,A_C中要有关于这条信息的2条记录 
二: 
修改表B,表C 
分别增加一个字段,也就是A表ID的字段 
这样有个不好的地方就是在B\C表本身形成了多对多的关系 
也就是说如果一条信息对应B表5个关键字,对应C表2个关键字 
那么B中要有关于这条信息的5条记,C中要有关于这条信息的2条记录 
 
三: 
采用方案一的改进方案 
建立一个A_B_C数据关系表 
由关系ID(PK) A表的信息ID(INDEX) C表的关键字ID B表的关键字ID  
(C和B为复合索引) 
...同样 
如果一条信息对应B表5个关键字,对应C表2个关键字 
那么A_B_C中要有关于这条信息的10条记录也就是2X5 
然后,现在问题就来了,嘎嘎 
问题一:我应当选择哪个方案比较好呢 
问题二:选择任意或者新的方案后我做查询的时候用以下哪种方式好呢: 
一.联表查询 
二.子查询 
三.一次只查询一个表,查询到最后形成信息ID的数组,最后用IN (1,2,3)这种方式从表A提取信息 
我上面说的子查询是指嵌套子查询,呵呵 |   
 
 
 
 |