Estou procurando ajuda sobre o Microsoft Access e design de banco de dados.
Tenho vindo a desenvolver uma aplicação de base de dados em Microsoft Access para uso na minha organização. Eu trabalho em um hospital e temos uma maneira muito antiquada (!) de acompanhar onde nossos pacientes estão no hospital e o que há de errado com eles. Criamos um documento diário do Word que é armazenado em uma unidade compartilhada em uma LAN. Como pode ser imaginado - isso se torna um pesadelo quando se trata de coisas como tentar manter algum tipo de trilha de auditoria!
Minha solução alternativa é um banco de dados relacional, dividido em um 'front-end' com consultas, formulários e relatórios e um 'back-end' composto por 15 tabelas. Ambos são arquivos Access DB que estão contidos em uma pasta na unidade de rede. A estrutura geral do banco de dados não é muito complexa - é essencialmente uma tabela contendo detalhes do paciente e outras tabelas contendo detalhes relativos a detalhes do encontro, exames de sangue, resultados de exames, etc. número hospitalar único. As listas de pacientes são essencialmente relatórios embutidos no front-end, com base em consultas que extraem pacientes que estão atualmente marcados como 'admitidos' no banco de dados.
Ele funciona razoavelmente bem quando um usuário está usando o banco de dados e é executado rapidamente quando executado em uma máquina local, mas o problema é - é frustrantemente lento - e às vezes nem é executado (fazendo com que o MS Access pare de responder e crash) -- quando mais de um usuário tenta acessar o front-end através da unidade de rede.
Eu estou querendo saber se há algo faltando em relação a como posso otimizar o banco de dados para executar em uma LAN? Ou se isso é uma limitação técnica do acesso ao MS e se devo desviar minha energia para uma solução diferente (por exemplo, SQLite com um frontend VB)? Infelizmente, usar qualquer coisa que não seja uma solução baseada em arquivo compartilhado não é uma opção, pois minha organização não a suporta (por exemplo, um servidor MySQL dedicado).
Grato por seus pensamentos!
Minha experiência com o MS Access é semelhante, pois não funciona bem com vários usuários. É melhor usar um RDBMS que foi projetado para vários usuários.
Nos EUA, os hospitais têm requisitos legais para armazenar e proteger os dados dos pacientes. Eu levaria em consideração os regulamentos locais ao escolher um RDBMS. Custo sendo um dos requisitos de menor prioridade. Row Level Security (RLS) estaria no topo da minha matriz de decisão.
IIRC - O front-end do MS Access pode se conectar ao MS SQL (Express) RDBMS. Pode ser capaz de se conectar a outros RDBMS via ODBC. Portanto, todo o seu trabalho de interface do usuário pode não ter sido perdido.
Conforme você cresce, você terá vários aplicativos interagindo com os dados. Você deve planejar que isso aconteça. Eu faço isso colocando a maioria/toda a minha lógica de dados no banco de dados (procedimentos armazenados, etc). A tecnologia front-end é então escolhida com base na facilidade com que ela pode lidar com esse tipo de design.
Além disso: "Qual RDBMS devo usar?" está fora do tópico para este site.