作为初学者,刚刚学习了关于数据库设计的一点常识,但是有以下几个疑问希望各位前辈赐教:
1.
    业务表中有一个销售提货的流程。有主表a_M,明细表a_L.其中a_M中需要用到一个客户信息,根据所学的知识我得知不应该简单的把客户名称,代码一并写入a_M表中,应该只写入客户代码,然后通过外键连接客户表,从而取得客户名称这个可能变化的信息。
    而在delphi模块中我使用了DbGrid连接ADODateSet来显示记录。而以前的做法,我只需要用ADODateSet.Append...Post就可以增加记录并显示在DbGrid上,同时因为以前的做法是业务表中包含了全部需要的信息故DbGrid显示没有什么问题。但是现在学习到的方法在我的理解是通过视图来实现,但是此时我就有一个疑问了,难道每次增加修改删除记录都要重新Close...Open一次ADODateSet来刷新视图吗?这样是不是增大了服务器负担?如果不是这样,那么达人们是怎么处理这方面的问题呢?
    PS:废话多了点。其实总结起来貌似就是delphi中应用视图,但同时需要增/修/删操作并同步显示记录时的处理办法?不会是每次都重新刷新ADODateSet吧?
但是上搜索一直没找到相关知识,也许搜索方向错误了。。呵呵2.
也是由上面描述的引发的疑问:
是不是说,基本编码表,辅助编码表和业务流程表之间都通关外键连接形成视图来放在模块中显示和操作?看了很多数据库设计的资料都只讲了数据库方面的规则,那么,在delphi中该如何更加有效的运用起来呢?使用视图并用ADODateSet等进行连接显示和操作?或者使用不连接数据库控件操作(貌似更加慢的样子)?

解决方案 »

  1.   

    1、你可以使用本地缓存,将修改的数据暂时存在本地,等数据更新时,在全部提交数据库。或者直接将新增数据提交数据库Post,本地并不需要Open就可以看到。你说问的问题应该去数据库,那里的高手会解答。
    一台好的数据库服务器,可以同时应付N多流量的访问。
      

  2.   

    select了SQL数据库的两个表,ADO连接不能一次性更新select中的两个表,但你可以更具ID把两个表分开更新