Ho un dubbio durante la creazione di un DB, e vorrei sapere se ci sono argomenti oggettivi che potrebbero aiutarmi a prendere una decisione migliore.
Caso
Un progetto che può avere diverse revisioni, quindi ho creato l'entità Project e Project_Rev . Ogni revisione ha delle posizioni, quindi ho creato l'entità Position . Ogni posizione ha elementi, quindi ho creato l'entità Element . Fino a questo punto tutto è super-normale, da Project a Element entità per entità, è una relazione uno-a-molti, è possibile vedere nel grafico sottostante:

Ilproblemaèilseguente:%incrementodiProject_ReveincrementodiElements,manonesisteun'associazionelogica!Potreiavere:
Project1_Rev1->Position1->Element1_Rev1,Element2_Rev1Project1_Rev2->Position1->Element1_Rev4,Element2_Rev2Project1_Rev3->Position1->Element1_Rev5,Element2_Rev2Project1_Rev4->Position1->Element1_Rev5,Element2_Rev10Perquestomotivo,hopensatoinduesoluzioni:
Soluzione1
PerconnettereProject_RevconElement,comel'immaginequisotto:

Questasoluzionefunziona,manonsembraquellagiustaperchéc'èridondanza,lostessoelementosaràreferenziatoduevolteneldatabaseperlostessoscopo!
Soluzione2
HopensatodicreareunatabelladiterradimezzoperProject_Rev,Position,Element,doveperognicombinazioneProject_RevePositionc'èunListdiElements.Comepuoivederenell'immaginequisotto:

L'immaginequisopranonècorretta,laseguenteè:

Questosembrapiùcorrettoperme,maacausadelledueconnessioniuno-a-uno"assaggia" come una vista per me! Tuttavia sembra più corretto, non c'è ridondanza come nella soluzione 1 di cui sopra!
Qual è il tuo consiglio al riguardo, dovrei usare la soluzione 1, la soluzione 2 o un'altra che non sto menzionando?