Histórico BD
08/06/2005
0
Estou com uma dúvida em relação à modelagem.
Seguinte: Imaginem um sistema acadêmico no qual existam cursos. Cada curso tem um único coordenador e um coordenador só pode coordenar um curso, configurando assim um relacionamento 1:1.
No entanto, precisamos guardar todo um histórico de instâncias anteriores do BD, pois um coordenador pode já ter coordenado vários cursos, assim como um curso pode já ter tido vários coordenadores (no passado), configurando um relacionamento n:m.
Alguém poderia me dar uma dica de qual seria a melhor forma de modelar um sistema desse tipo?
Nando
[color=green:8bb6fccb25]Título editado por gandalf.nho. Favor não postar em maiúsculas.[/color:8bb6fccb25]
Paulo Fernando
Posts
08/06/2005
Aroldo Zanela
Relacionamentos n para n são resolvidos por meio de uma entidade associativa.
09/06/2005
Paulo Fernando
Entendo que o relacionamento seja resolvido de forma associativa, como vc disse, no entanto, acho que vc não entendeu a minha dúvida.
No primeiro caso (relacionamento 1:1) bastaria entrar com a matrícula do professor/coordenador na tabela de cursos e estaria resolvido o problema, certo?
Porém, se quero guardar todo um histórico, a solução não seria viável dessa forma, pois tornaria o relacionamento n:m, o que acarretaria uma nova tabela coordenador/curso a ser criada com as chaves das duas tabelas.
Pois bem, se optarmos por essa última solução corremos o risco de ter dois coordenadores associados a um mesmo curso e isso não seria correto, já que o relacionamento coordendor/curso é 1:1.
Espero ter sido mais claro dessa vez. Caso vc ou qualquer outra pessoa tenha alguma solução, ficarei grato.
Paulo Fernando
09/06/2005
Beppe
Ao mudar algo nos cursos, insira um registro nesta tabela.
:?:
28/06/2005
Eduardo Pereira
A confusão quanto a cardinalidade é porque um coordenardor só pode coordenar um curso (e vice-versa) em um determinado momento do tempo (cardinalidade 1:1). Ao longo do tempo, porém, um coordenador poderá ter coordenado vários cursos e um curso poderá ter sido coordenado por vários coordenadores. Quando se considera relacionamentos ao longo do tempo, eles sempre tenderão a ser n:m.
No seu caso, poderiam ser usados na tabela associativa, além das chaves primárias de coordenador e curso, atributos de data de inicio e data de término da coordenação. Consultando esta tabela se obtém todo o histórico de coordenações de um coordenador ou de um curso. Para saber a coordenação atual de um curso ou coordenador, basta localizar o registro da tabela associativa que tem data término nula.
A restrição de um coordenador só poder coordenar um curso e um curso só poder ser coordenado por um coordenador deve ser implementada por um trigger.
Esta modelagem ainda tem a vantagem de ser mais flexível. Se houver alguma mudança nas regras de negócio, como um coordenador passar a poder coordenar mais de um curso, a única alteração deverá ser feita no trigger.
[]´s
Eduardo Pereira
04/08/2005
Mordred
08/09/2005
Luiz_ro
Boa sorte,
Luiz
Clique aqui para fazer login e interagir na Comunidade :)