我正在使用Windows Mobile上运行的Compact Framework应用程序。它被交付驱动程序用来告诉他们下一份工作和跟踪支出等。我在移动设备上有SQL CE数据库,服务器上有SQL Server。在使用Sync Framework解决主要的性能和配置问题后,我最终使用WCF编写了自己的同步代码。这个效果很好,比Sync Framework快很多,但我被要求进一步提高速度。现在我们进入问题的细节。希望我能够清楚地解释这一点。数据库和应用程序设计 - 消除约束?
同步一次只能处理一个表,并且只能单向运行。更新仅从服务器发送到PDA。传回服务器的数据处理方式完全不同。首先,我删除已经从服务器上删除的PDA上的任何记录。由于数据库的限制,我必须在从'父'表中删除之前从'子'表中删除,所以我从底层开始处理这个扩展。例如。从产品表中删除之前,我从发票表中删除记录。
接下来,我将新记录添加到已添加到服务器上的PDA中。在这种情况下,我必须先更新父表,然后逐步缩小heirachy并更新子表。
问题是,我的老板不喜欢这样一个事实,即当交付驱动程序只需要 invoiceProduct表时,我的应用程序将保留一个像产品表一样的大表,并与服务器同步。 invoiceProduct表将发票和产品表链接在一起,并包含有关产品的一些信息。我的意思是他们的数据库设计没有标准化,产品名称已被复制并存储在invoiceProduct表格以及产品表格中。当然,我们都知道这是糟糕的设计,但似乎他们已经这样做来提高这种情况下的性能。
明显的解决方案是从PDA数据库中完全删除产品表。但是我不能这样做,因为有时需要它。驾驶员可以随时将新产品添加到发票中。我的老板建议他们偶尔可以同步大型产品表,或者当他们尝试添加产品时发现它不在那里。 这不适用于当前的设计,因为如果下载的发票包含不在PDA上的新产品,它将引发数据库外键错误。
抱歉发布这么大的消息。希望它是有道理的。我不想删除我的数据库限制,并搞乱我的数据结构:(
为什么要同步产品表的阻力? – 2010-11-23 19:51:52
...而且,你能摆脱只有(和同步)产品表的一部分(只是一些列)? – 2010-11-23 19:52:29