Database design 针对多个位置的Access 2007后端-共享与隔离数据库方法

Database design 针对多个位置的Access 2007后端-共享与隔离数据库方法,database-design,ms-access,ms-access-2007,database-schema,Database Design,Ms Access,Ms Access 2007,Database Schema,我正在为两个不同的总部建立一个数据库方案。每个位置使用相同的数据方案,但有自己的数据。两者都可以访问同一位置,即放置相应访问后端的共享网络文件夹。两者还将使用相同的前端,根据用户(-account)显示特定数据。每个位置将有两个主表,每年将增加约4000-5000条记录 大多数情况下,每个位置只使用自己的数据,但大约每周一次,第三方将访问两个位置的一些聚合数据 在我看来,有两种可能组织数据:共享方法,其中两个位置使用相同的表,并且使用相同的表,其中一个字段指示当前数据属于位置1还是位置2。我看到

我正在为两个不同的总部建立一个数据库方案。每个位置使用相同的数据方案,但有自己的数据。两者都可以访问同一位置,即放置相应访问后端的共享网络文件夹。两者还将使用相同的前端,根据用户(-account)显示特定数据。每个位置将有两个主表,每年将增加约4000-5000条记录

大多数情况下,每个位置只使用自己的数据,但大约每周一次,第三方将访问两个位置的一些聚合数据


在我看来,有两种可能组织数据:共享方法,其中两个位置使用相同的表,并且使用相同的表,其中一个字段指示当前数据属于位置1还是位置2。我看到的一个大问题是通过网络传输的数据量(大约是原来的两倍),因为(据我所知)access在传输数据后在本地运行select语句。(我站直了)。此外,每次访问都需要额外的查询

另一种方法是为第二个位置创建第二组表,并将它们“分开”(例如,将它们重命名为loc1_tablex和/或创建第二个后端文件),这也将使备份变得容易

我更喜欢第二种方法,因为我看不出它有什么坏处。在我看来,这会更快更干净

我是否遗漏了任何导入内容,或者这种方法是否合理

编辑:


在进一步讨论这个主题之后(我们还从客户机获得了一些新信息),我们决定将数据存储在一个后端和相同的表中。表结构完全相同,我们使用位置id来控制哪些数据属于哪个位置(第一种方法)。为了让大家了解access后端,我在那里缺乏信息,学到了很多

如前所述,使用索引,当记录被限制在一个位置或另一个位置时,Access将不会下拉更多记录

但是,我认为这里会用到一个WAN,那么我可能会考虑使用SQL Server,因为您可以聚合数据,这会发生服务器端——如果需要这样的场景,那么对于这些类型的场景来说,要比JET快得多。 另一种可能性是考虑使用Access 2010和Office 365。在这种情况下,您将保留常规访问前端,但将数据移动到office 365

这个系统的优点是你有离线和本地数据存储。这意味着access数据库的每个副本上的报告和只读数据将以非常高的速度出现,并且以本地JET数据库的速度出现。输入到服务器上的表中的任何新数据都将自动同步到每个人都在使用的客户端。如前所述,由于这种自动脱机模式,系统工作得非常好,即使您的Internet连接中断或中断一段时间,系统也能继续工作

将数据向上移动到office 365的唯一缺点是,要确保引用完整性“正确”地向上移动到office 365,您还需要执行一些额外的步骤

简而言之,此额外步骤意味着您要断开(删除)表之间的关系,然后使用“新建关系”向导来设置与office 365兼容的简单关系

这个系统的美妙之处在于它以每月6美元的低成本启动。你可以挂断一个帐户的许多用户。不仅如此,这样的设置还允许您发布和构建web表单供每个人输入数据,理论上您甚至不必分发访问表单,而是使用web表单。然后把数据放进去。因此,如果你这样做的话,这些表格和数据可以在智能手机或iPad上查看

下面是一个逐步的视图,它显示了我如何打破表之间的关系,然后以正确的方式重新连接它们,以便在office 365上使用:

最后但并非最不重要的一点是,您可以使用Office2010完整上传参考完整性完好的数据,因此理论上,然后使用Access2007前端链接到这些表。但是,access 2007没有自动脱机模式,性能也不会接近使用access 2010时的性能

因此,我认为office 365是一个潜在的理想解决方案,因为您可以实时更新现场的任何前端

虽然上面的视频是关于发送数据和使用常规访问前端的,但您可以在office 365上的Access中构建和使用web表单,如本视频所示:


此处不需要activeX或silverlight。

“access在本地运行select语句”只有在没有索引或索引无法用于获取数据时,此语句才为真。我不知道!我只发现我的声明没有任何来源,这是访问后端的一个缺点。访问不打算在WAN上使用,因此性能和数据丢失可能是一个问题。据我所知,Citrix很好。是的,这是真的,但如果第三方人员没有输入数据,这应该不是问题。JET当然可以在两个后端使用索引。JET当然可以在两个后端创建索引。JET不能做的是在两个不同的数据库之间强制引用完整性,这非常有意义。因此,您不会在这里失去索引功能,只是一些功能(如级联删除)无法设置为跨两个不同的数据库运行。Ty是您的答复,但它必须是Access 2007(前端和后端)。毫无疑问,你的回答对其他人会有用。除此之外:如果我们转向基于web的解决方案,我们可能会使用rails,但情况不同。