日期:2014-05-17  浏览次数:20803 次

sql 多表关联操作问题
我设计如下数据库,见下图

包含如下几个数据表
发动机型号表
发动机参数表一
发动机参数表二
发动机参数表三
发动机关联表

现在问题是该如何进行操作。
1、通过insert插入数据库的时候采用事务,可以插入所有数据,但是感觉不太对劲啊
代码如下

begin tran
insert into  发动机型号表 values('FF-00-66')
insert into 发动机参数表一 values('220','280')
insert into 发动机参数表二 values('2000','400')
insert into 发动机参数表三 values('60','100')

insert into 发动机关联表(发动机ID,参数表一ID,参数表二ID,参数表三ID) 
select MAX(x.发动机ID),Max(c1.参数表一ID),Max(c2.参数表二ID),Max(c3.参数表三ID) 
from 发动机型号表 as x,发动机参数表一 as c1,发动机参数表二 as c2,发动机参数表三 as c3
where x.发动机ID = c1.参数表一ID and x.发动机ID = c2.参数表二ID and x.发动机ID = c3.参数表三ID
commit tran

该如何改进呢?
2、删除数据问题? 
如果我要删除型号为FF-00-66的表数据,该如何操作可以一次性删除几个表中相关联的数据。

------解决方案--------------------
引用:
Quote: 引用:

个人觉得发动机关联表那张表可以不要,只要在各个参数表里添加一个发动机ID

关联表不要的话,结构就不完善了。不能体现出关联关系了。发动机参数具体对应的是哪个型号就不晓得了。 


所以我说要在参数表里添个发动机id