有个小问题想麻烦大家,帮看下..出来咋到,请多帮助还假设有数据表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提取信息
由:信息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提取信息
解决方案 »
- 关于mysql-connector-odbc无法连接mysql数据库(10061错误)
- ado.net数据库访问问题,求解答!
- 问一个关于sqlyog编译器乱码问题???????
- 类似mysql数据库ID自动增加
- win2000 mysql连接linux mysql
- ASP有与PostgreSQL的large object相对应的接口吗?
- mysqldump倒出的数据库备份如何在装入Mysql数据库??
- mysql Connector/net不能更新或删除
- MySQL Workbench
- SQL龟速,如何提高速度??
- 请问show processlist 里面在什么情况下会出现sleep?
- [高分答谢!]关于下面的SQLServer的正确语句,将其转为MYSQL5的正确语句!
id --pk
nameB表
type --类型,用来区分原来的B表数据还是C表数据
ID --A表的ID
....
不知道我是不是正确理解了你的意思
type --类型,用来区分原来的B表数据还是C表数据
ID --B表的ID
我又想出了一种方案,但是不知道是否成熟...
我把信息表(原A表)拆分成24个表(A-Z,去掉UV)为表名(MESSAGE_A,MESSAGE_B,表名为关键字B表首汉字的字母缩写)
关键字表为B C两个表
表A结构变为
AID MESSAGE KEY_B KEY_C
做大量的冗余,每次查询的时候先根据两个关键字的首汉字缩写拼出表名,然后到对应表里查找记录,但是这样会导致表A变为多对多的表...而且冗余做的太大了甚至走极端的时候,我可以把数据表拆成24X24,MESSAGE_AB MESSAGE_AC........这样来做冗余,老兄以为如何?