Estou procurando projetar um aplicativo (Python com sqlite) que lide com alguns colaboradores que se movem entre vários grupos ao longo do tempo.
Meu design atualmente se parece com (PK em negrito, FK em itálico, ambos se um FK fizer parte do PK):
- Grupo( Id , Nome)
- Contribuidor ( ID , Nome, Primeiro Nome)
- Ação( ActionId , Nome)
- ContributorAction ( ContributorId , ActionId , Data)
- Associação ( GroupId , ContributorId , StartDate , EndDate )
Meu objetivo é manter um histórico de associações para recuperar o grupo de associação correto de um colaborador no momento de uma determinada contribuição.
Fazer isso envolve o uso de colunas de data em uma chave primária (tabela Membership). No entanto, EndDate
pode ser NULL
para a associação atual de um colaborador, e eu li que isso pode não ser uma prática boa (ou mesmo permitida).
Perdi alguma coisa aqui para obter pelo menos o design 3NF?