Eu tenho um banco de dados simples e plano com cerca de 40 campos. Cada registro possui um ID exclusivo.
Existem alguns pares de registros que têm uma conexão tênue e eu colocaria um link/marcador em cada registro para poder ir diretamente para o registro conectado.
É istogravar para gravarvinculação possível dentro de uma estrutura de banco de dados simples e plana?
Responder1
Existem alguns aspectos para isso e muitas soluções possíveis.
Parece que as principais questões/objetivos que você tem são:
- Qual deve ser a aparência do esquema (tabelas) para permitir a ligação entre dois registros na mesma tabela?
- Como pular de um registro em um formulário (visualização única) para o registro relacionado?
Existem várias maneiras de vincular os registros. O mais simples é provavelmente um campo da tabela que contém o ID da mesma tabela. A desvantagem é que é possível que os dados sejam inconsistentes: se o registro 1 vincula ao registro 2, o registro 2 deve vincular ao registro 1 em troca? Talvez. Talvez isso não importe para você.
Nota: Se você precisar vincular mais do que apenas pares de registros (ou seja, grupos de mais de dois), o simples campo de auto-referência não funcionará (a menos que você os encadeie, mas - eca). Neste caso você deve ter outra tabela que contenha registros para cada elemento de cada grupo. Vou ignorar isso, já que você disse especificamente pares de registros.
Portanto, adicione um campo à tabela chamado algo como RelatedItemID
. Deve ser um número do mesmo tipo de dados que o ID da tabela.
Em seguida, você deseja uma maneira de criar os links. Sugiro uma caixa de combinação no formulário que liste todos os registros desta tabela e tenha um ControlSource
conjunto para o RelatedItemID
campo.
Finalmente, para pular para o registro relacionado, basta usar o código VBA atrás de um botão.
Private Sub JumpToRelated_Click()
Me.RecordsetClone.FindFirst "ID = " & RelatedItemID
If Not Me.RecordsetClone.NoMatch Then
Me.Bookmark = Me.RecordsetClone.Bookmark
End If
End Sub
Isso navegará no formulário até o registro relacionado.
Para garantir a consistência - ou seja, impor o relacionamento bidirecional - você pode querer algum código no evento AfterUpdate da caixa de combinação para definir o link do 'outro' registro para o registro atual e limpar o link antigo (se houver). Isto não é obrigatório - significa apenas que o usuário teria que manter manualmente o relacionamento bidirecional.