关于数据库开发的一些基本问题的讨论!
论题描述:
用delphi+SQL开发一个多用户简单的应用,它们之间用ADO连接。在SQL端有一个数据库,里面建立三个表,一
个主表MASTER,两个从表T1与T2。T1,T2的主键ID1,ID2分别与MASTER中的两个外键MID1,MID2建立
关系。现在要在客户端实现对这三个表进行数据的浏览、修改、删除操作,请大家从效率、可靠、维护
的容易程度等方面提提自己的解决方案。
我现谈谈我的方案。
方案1、在界面用一个pagecontrol控件,上面放了三个页P1,P2,P3,这三个页分别为SQL端的三个表要输入
的内容。在SQL端建立一个视图VIEW1,它是三个表生成的。在这三个页上分别用DBEDIT通过视图关联到
三个表的相应字段,自己用几个按钮实现浏览、修改、添加、删除操作,问题是:这种方案的实现非常容易,但
可靠性如何???在SQL端建立的视图VIEW1,通过它去实现对三个表的可靠性如何?真的像有些朋友说的
那么差吗?当多个用户同时通过视图去对表进行浏览、修改、删除、添加操作情况会怎样?
方案2、(1)在用户界面上将浏览、修改、删除、添加功能分到不同的界面中,在浏览界面中用上面的方案,非常方便。
(2)在添加界面中,放置若于个EDIT控件,调用在SQL端写的一个存储过程,向这个存储过程传递从EDIT控件得到的很
多的参数,在存储过程中分别对三个表用参数值进行逐个更新。
(3)修改怎么办呢?为了保证可靠,也用存储过程向上面一样实现修改后的数据传递流程,但它首先必须像游览一样
从SQL端获得数据,然后再对它进行修改。怎么获得数据呢?是用方案1用DBEDIT控件实现呢?,还是用方案2通过存储
过程定义若干输出参数,向界面上的EDIT控件传递数据呢?
若是用方案1获得数据,那修改后的数据当然也是用DBEDIT控件再传回SQL端了,总不能再调用存储过程吧,那样有意义吗?
若是用方案2则参数太多(输入+输出的),(顺便问一下:DB系列控件是不是也是这样实现的?)
再说,存储过程中分为三步对三个表进行更新,即使在存储过程中使用了事务把三步合在一起,但好事务对于更新操作不能
回撤呀,用了不是也白用???谁能比较一下在上述应用中,用方案2比用方案1可靠性强在那儿???
(4)大多数软件从界面上看好像使用了方案1,一般没有把它们拆开的道理,不知道人家是怎么实现可靠性的?大家提提自已的方案吧!!!!

解决方案 »

  1.   

    你的帖子很冷 因为你写的太多。我仔细看完了。
    1.首先界面不是适应你的sql的,而是要用户的方便操作,你说呢
    2.“当多个用户同时通过视图去对表进行浏览、修改、删除、添加操作情况会怎样”
      这要看你的数据要求,如果不对脏数据更新可以把更新的字段原始值写在where条件里,当然这个delphi自己完成的不需要你手写,可以设置一下adotable或者adoquery的属性达到这个目的
    3.“但好事务对于更新操作不能回撤呀" 没明白什么意思,只要事务中不还有定义语句都可以回撤的
    如果你是简单的+ — × ^操作可以不用存储过程 ado组建也有事务属性也可以提交和回滚
    4.我自己做过很多东东 从没用过视图,个人喜好吧,繁琐的查询我都用procedure实现
      

  2.   

    1、界面设计遵循mvc原则,即数据、显示和控制分离的原则。如果你用Dataware控件很难做到这一点。
    2、数据完整性最重要的就是要用事务,两条以上的更新语句都要起事务。
    3、视图会增加数据库的负担,如果不是非常必要,建议别用。
    4、对很多人同时修改的数据,除了使用事务外控制外,还要使用版本号标识每一次的修改。当事务提交时,要检查中间是否有人修改过数据。
      

  3.   

    >>1.界面设计遵循mvc原则,即数据、显示和控制分离的原则。如果你用Dataware控件很难做到这一点。
    怎么难?