以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态加载引申的思考  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38073)

--  作者:powermannico
--  发布时间:2013/7/19 2:20:00
--  动态加载引申的思考
      foxtable不论内部表、外部表,默认都是加载全部数据。我想因为关联表的存在,让foxtable去决定从数据库动态加载所需要的数据也是件很难或者也许是不可能的事,虽然提供了动态加载,但是对于关联表某些情况下,二次开发也是或有难度或繁琐的。待项目上线运行以后短期内没问题,用个两三年以后这还真是件现在就要考虑的大事。

      比如:父表a,子表b,通过单号关联,子表b有列"进度"是通过表达式:Parent(ab关联表).处理状态 得到的,那么子表b动态加载了部分数据,如果想正确得到"进度"列,就必须在加载子表b的同时加载关联的父表a数据(当然父表a默认加载所有数据就没有这样的问题了,这里我说的都要动态去加载)。那么我是不是只能这样做:遍历动态加载来的子表b的单号列,合成条件"[单号] =单号1 Or [单号]=单号2... Or [单号]=单号n",然后用此条件去动态加载父表a呢,这不科学啊。

      我看可行的方法1.动态加载由用户指定的时间段数据;2.在特定行业只对特定时间段的数据进行操作的情况,默认只动态加载近3个月的数据(统计可以用后台统计);3.对于历史数据没什么用处的,比如对上年数据导出备份后,清空上年数据,不使用动态加载,默认全部加载也就一年的数据量。

        现在还没有模拟十几二十万条记录的情况,想知道以现在PC硬件条件,4G/8G都是内存标配容量了,默认全部加载是不是启动也是非常的耗时耗资源<!--[if gte mso 9]> <![endif]--><!--[if !mso]> <![endif]--><!--[if gte mso 10]> <![endif]-->
--  作者:Bin
--  发布时间:2013/7/19 8:36:00
--  
可以放弃狐表关联. 通过狐表关联实现的功能,同样可以不用狐表关联 使用代码实现的.
--  作者:blackzhu
--  发布时间:2013/7/19 8:52:00
--  
    这个怕什么 我几十张表 只有一个字段是关联(但是没有用关联表),也是靠条件加载使用的..  就算是关联表,也可以利用条件,同步加载关联表.
--  作者:jspta
--  发布时间:2013/7/19 9:17:00
--  

我看过的数据库的数据,要么没有提到关联功能,要么就直接说明不要使用关联功能。

这个功能是带给了方便,但会埋下很多隐患。

一对多关系,是最好的。多对多关系是应该尽量规避的

如果你得表关联键值设计的不好的话,就比如,你怎么能设计一个由子表相关条件去加载父表的数据那?

你只要用查询表把这两个表组合了,自然而然就能加载你想要的数据了。

所以,关联功能能不用尽量不用。