我正在寻找有关 Microsoft Access 和数据库设计的帮助。
我一直在 Microsoft Access 上开发一个数据库应用程序以供我的组织使用。我在医院工作,我们有一种非常老式的(!)方法来跟踪我们的病人在医院的位置,以及他们出了什么问题。我们每天创建一个 Word 文档,该文档存储在 LAN 的共享驱动器上。可以想象——当涉及到诸如试图维护某种审计跟踪之类的事情时,这将成为一场噩梦!
我的替代解决方案是一个关系数据库,它分为一个包含查询、表单和报告的“前端”,以及一个由 15 个表组成的“后端”。这两个都是 Access DB 文件,包含在网络驱动器上的文件夹中。整个数据库结构并不太复杂——它本质上是一个包含患者详细信息的表,其他表包含与会诊详细信息、血液检查、扫描结果等相关的详细信息——基于患者的一对多关系链接唯一的医院编号。患者列表本质上是嵌入在前端的报告,基于提取数据库中当前标记为“已接受”的患者的查询。
当一个用户使用数据库时,它运行得相当好,在本地机器上执行时运行得很快,但问题是——它慢得令人沮丧——有时甚至根本不运行(导致 MS Access 停止响应并crash) -- 当多个用户尝试通过网络驱动器访问前端时。
我想知道在如何优化数据库以跨 LAN 执行方面是否缺少一些东西?或者这是否是 MS 访问的技术限制以及我是否应该将精力转移到不同的解决方案(例如带有 VB 前端的 SQLite)?不幸的是,除了基于共享文件的解决方案之外,不能使用任何其他解决方案,因为我的组织不支持它(例如,专用的 MySQL 服务器)。
感谢您的想法!
我对 MS Access 的体验类似,因为它不适用于多个用户。您最好使用为多个用户设计的 RDBMS。
在美国,医院对存储和保护患者数据有法律要求。在选择 RDBMS 时,我会考虑当地法规。成本是较低优先级的要求之一。我的决策矩阵中的行级安全性 (RLS) 会很高。
IIRC - MS Access 前端可以连接到 MS SQL (Express) RDBMS。它可能能够通过 ODBC 连接到其他 RDBMS。因此,您的所有 UI 工作可能都不会丢失。
随着您的成长,您将拥有多个与数据交互的应用程序。你应该计划发生这种情况。我通过将大部分/所有数据逻辑放入数据库(存储过程等)来做到这一点。然后根据处理此类设计的难易程度来选择前端技术。
除此之外:“我应该使用哪个 RDBMS?” 是本网站的主题。