数据开发基础知识点 (多表关联).doc
- haihang2017个人认证 |
- 2024-04-27 发布|
- 124 KB|
- 4页
单表取存数据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