Estou usando o SQL Server 2008 R2.
Tenho duas tabelas que descrevem processos de importação e processos de exportação. A tabela de importação tem essas colunas com outras que só tem detalhes sobre cada tipo de importação
ImportID, ImportFileFormat, ImportFileLocation,...
O tbl de exportação é semelhante à tabela de importação, exceto que descreve saídas e outros dados específicos de exportação.
ExportID, ExportFileFormat, ExportFileLocation,...
Agora eu preciso de uma maneira de armazenar uma 'Transação' e não sei como fazer isso exatamente.
Uma 'transação' é qualquer número de importações e exportações em qualquer sequência única. Por exemplo: T = I1, E1, E2
ou I2, E1, E3, I1
ou I1
ou E3
qualquer combinação única de importação/exportação sem limite de número de importações/exportações.
Uma 'transação' pode eventualmente incluir outros 'tipos de evento' além de apenas importar/exportar como 'run_sp' ou algum tipo de ação no banco de dados ou aplicativo.
Como posso fazer algo assim? Analisei o que acho que pode ser uma pergunta semelhante no stackoverflow. Isso parece algo que pode fazer o que eu quero, mas não tenho certeza.
Qualquer ajuda seria muito apreciada.
Edição nº 1:
tblTransações:
TransactionID TransactionNumber EventTable EventID 1 1 'tblImportar' 1 2 1 'tblExportar' 3 3 2 'tblImportar' 1 4 3 'tblExportar' 3 5 2 'tblExportar' 2
Por que não apenas ter uma tabela de transações:
Quando você estiver prestes a iniciar uma nova transação (um conjunto de importações e exportações), faça o seguinte:
Agora, em suas tabelas de importação e exportação, adicione uma coluna que contenha o ID da transação e armazene @tID para cada ação nessa sequência.
Ou use uma tabela separada para armazenar combinações de Transação + Evento, se os eventos puderem ser reciclados. Por exemplo:
Você pode ter uma tabela de pesquisa para EventTypes se quiser, por exemplo:
Você também pode considerar não ter tabelas de importação e exportação separadas, mas uma tabela de eventos com um tipo de importação ou exportação. Então a chave estrangeira aqui pode ser explícita.
E, por favor, abandone os
tbl
prefixos. Tudo o que eles fazem é fazer com que você digite três caracteres extras todas as vezes.