我设计如下数据库,见下图包含如下几个数据表
发动机型号表
发动机参数表一
发动机参数表二
发动机参数表三
发动机关联表现在问题是该如何进行操作。
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的表数据,该如何操作可以一次性删除几个表中相关联的数据。

解决方案 »

  1.   

    建议表结构这样设计,发动机型号表(发动机ID,发动机名称)发动机参数表(参数ID,参数名称)发动机关联表(发动机ID,参数ID,参数值)
      

  2.   

    关联表不要的话,结构就不完善了。不能体现出关联关系了。发动机参数具体对应的是哪个型号就不晓得了。 所以我说要在参数表里添个发动机id知道了 发动机ID作为参数表的外键存在,设置级联关系,删除主表的数据同时删除字表的数据。那我插入数据好像会有问题。如果是一次性插入的话。我主表的发动机ID是主键,自动生成的。那插入数据的时候参数表的发动机ID从何而来?
      

  3.   


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