数据开发基础知识点 (多表关联).doc

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

单表取存数据SQL:(表中有个字段专门存放其它关联表的资料,CustNo值是从基础表B选取) Select IDA,CustNo from A

多表关联存取数据:(通过外键关联到基础表取基础表信息) Select IDA,A.IDCust,B.CustNo from A left Join B on (A.IDCust=B.IDCust)

两种设计的比较:

@单表:优点写SQL方便只需本身的表。无需关联其它表。 缺点一但基础表B进行变动,业务表没办法即时变动,需写相关方法,把相关联的表的相关数据进行统一更新。

@多表关联:优点可以和基础资料同步,基础资料一改,相关的所有信息多改。无需担心。 缺点:如果一个业务表关联了N多基础资料,SQL语句外键关联N张表,SQL语句宠大.

数据存取比较:

@单表:更新什么的多比较简单,自已写SQL,或交给数据集跟据数据存取方式,进行提交,参考数据开发基础知识点-1

@多表关联:

多表关联,难点在于处理SQL,假设业务表关联基础表,我进行业务编辑,提交更新删除应是对业务表进行处理,而基础表信息保持不变。或者多表关联,我只想对单中的几张表进行数据处理,而其它的不动。 第一种方法:自已写提交SQL,遍历数据集,跟据数据集改变的状态写SQL语句进行相对应的更相: 例: TClientDataSet TClientDataSet 更改的数据多保存在其Delta中.我们可以这么做:

//把修改的数据保存在一个临时TClientDataSet,当然也可以直接对ClientDataSet1进行一条一条判断. ClientDataSet2.Data:=ClientDataSet1.Delta; ?

?ClientDAtaSet2.First; ??while?not?ClientDataSet2.Eof?do ??begin ?????if?ClientDa

最近下载