神呀,救救我吧!(关于多表关联的设计问题)

tinylion971 2003-05-29 10:18:13
近来给一个精矿管理系统搞得筋疲力尽,碰到得问题如下

开始有一个总表“精矿成分”如下:(以下简称表A)

(字段名) 精矿名称 杂质1 杂质2 杂质3......杂质12
(记录1) Cu Pb As Sio2
(记录2) Fe Zn Pb Sio2

我的设计是若记录1输完后,我点击一个BOTTON(输入)后,生成对应该Cu矿的一系列的表,以“cu精矿品质”表为例:(以下简称表B)

(字段名) 级别 主品味(%) Pb(%) As(%) sio2(%)......
(记录1) 1 50 4 3 6

大家可以看到表A输入的记录1中的“杂质”,在表B中成了对应的“字段”


我的问题是,如果表A中的记录对应的杂质名改变了(包括添加,删除,修改)
那表B的字段应该相应的改变,

那要如何设计这两个表的关连呀???会不会影响表B中该字段原有的记录呢
SOS,HELP ME!





...全文
37 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tinylion971 2003-05-31
  • 打赏
  • 举报
回复
我的表是动态建的
所以应该在DELPHI的程序中写相应的代码
不能在SQL SERVER数据库中建,如何是好?
wupangzi 2003-05-29
  • 打赏
  • 举报
回复
最好是在数据库中搞一个触发器!这是最好的也是最省心的!
whitetiger8 2003-05-29
  • 打赏
  • 举报
回复
楼上的方法可行。
冰尘飞逝 2003-05-29
  • 打赏
  • 举报
回复
俺觉的要从根上解决,又从效率上考虑...
鉴于表B中的百分比数据全部取自于表A的计算,可否将表B做成一个视图。
zhanghao1982_0 2003-05-29
  • 打赏
  • 举报
回复
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select a.ylxh,a.badhsl,a.bashsl,a.ylpm,a.ylbh,a.cppm,a.scbh,c.ckrq,c.cksl,(c.cksl* a.badhsl*(1+a.bashsl)) as qqw from jck_dshk a,jck_sjckcpk c where a.scbh=c.scbh');
query1.SQL.Add('and c.ckrq='''+edit4.text+''' and c.cksl=''+f1+'' and a.ylpm like''%'+edit5.text+'%''' );
query1.SQL.Add('group by a.badhsl,a.bashsl,a.ylxh,a.ylpm,a.ylbh,a.cppm,a.scbh,c.ckrq,c.cksl order by a.badhsl,a.bashsl,a.ylxh,a.ylpm,a.ylbh,a.cppm,a.scbh,c.ckrq,c.cksl');
query1.Active:=true;
Query1.open;

多表关联实例SQL语言
firetoucher 2003-05-29
  • 打赏
  • 举报
回复
1 做一个trigger,里面对表B进行修改
2 对列的修改
更改表以添加新列
下例添加一个允许空值的列,而且没有通过 DEFAULT 定义提供值。各行的新列中的值将为 NULL。

CREATE TABLE doc_exa ( column_a INT)
GO
ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL
GO
EXEC sp_help doc_exa
GO
DROP TABLE doc_exa
GO

B. 更改表以除去列
下例修改表以删除一列。

CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL)
GO
ALTER TABLE doc_exb DROP COLUMN column_b
GO
EXEC sp_help doc_exb
GO
DROP TABLE doc_exb
GO


2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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