Non sono così esperto in modellazione sql e sto cercando input su questo perché è importante per me farlo bene. Uso il nucleo mssql e entityframework in un'app web core asp.net.
L'app funziona come strumento per iscrivere persone per vari test. È possibile creare un progetto e quindi aggiungere persone a cui si desidera testare questo progetto.
Ho una tabella di progetto (tabella 1) con molti projectassignments (tabella 2), che è una tabella di join. Questa tabella di join ha una persona (tabella 3) con molti progetti di assegnazione. Ho anche due tabelle (tabella 4 e 5) che rappresentano due test diversi che possono avere molti progetti di assegnazione.
Normalmente quando si crea un progetto lo si fa per assegnare le persone a un test, quindi l'altro testtable per questo compito sarebbe nullo. Sto pensando che le chiavi esterne sulla tabella di join per questi test dovrebbero essere valori nulle? è una buona scelta o potrebbero esserci delle implicazioni per farlo?
Project table
int ID
ICollection<ProjectAssignment> ProjectAssignments { get; set; }
ProjectAssignments table
int ID
int ProjectID
int PersonID
int Test1ID
int Test2ID
Person table
int ID
ICollection<ProjectAssignment> ProjectAssignments { get; set; }
Test1 table
int ID
ICollection<ProjectAssignment> ProjectAssignments { get; set; }
Test2 table
int ID
ICollection<ProjectAssignment> ProjectAssignments { get; set; }
Quando si utilizza l'app, è possibile creare molti progetti in modo che una persona possa avere di nuovo più di un progetto con lo stesso tipo di test. In questo modo, quando cerco progetti nel back-end, posso semplicemente creare un elenco di assegnazioni di progetto e ottenere le persone, i test e il progetto sulla stessa query:
query = _context
.ProjectAssignments
.Where( i => i.ID == id )
.Include( p => p.Project )
.Include( p => p.Person )
.Include( t => t.Test1 )
.ToList()
;
Ogni feedback è molto apprezzato!