Design attuale
Ho un modello Person
:
PersonId Name
----------- ----------------
1 Jessica
2 Jennifer
Allora ho un modello Share
che ha il Person
e un Item
associati.
ShareId ItemId
----------- ----------------
1 1
2 2
E infine ho un SharePeople
che dice a tutte le persone che hanno accesso a quell'articolo.
ShareId PersonId
----------- ----------------
1 1
1 2
Nuova funzione
Ora è necessario aggiungere una nuova funzione, che è Gruppi. Quindi ho pensato a due aproaches e mi piacerebbe sapere qual è il più corretto.
Ci sono due cose che vedo chiaramente:
-
aggiungi una nuova proprietà
IsGroup
al modelloPerson
.PersonId Name IsGroup ----------- ---------------- ----------- 1 Jessica False 2 Jennifer False 3 Blondes True
-
crea una tabella
GroupPeople
GroupPersonId ChildPersonId ------------- ---------------- 3 1 3 2
Le domande
OPZIONE 1 : dovrei creare l'associazione su SharePeople
con le righe IsGroup
direttamente:
ShareId PersonId
----------- ----------------
2 3
OPZIONE 2 : dovrei creare l'associazione sempre con le persone che fanno parte del gruppo e fare in modo che un'altra colonna identifichi da quale gruppo è stata creata l'associazione.
ShareId PersonId GroupPersonId
----------- ---------------- -------------
2 1 3
2 2 3
La seconda opzione è più semplice quando si prelevano i dati dalle tabelle, sarà veloce e creerà meno impatto, tuttavia crea molte righe sul database.
La prima opzione è più pulita, ma dovrò fare un sacco di istruzioni logiche all'interno del mio codice mentre la riga è un gruppo o una singola persona.
Ma la linea di fondo è che non so davvero cosa c'è di meglio per quanto riguarda le prestazioni, e non voglio nemmeno fare tonnellate di codice dispari.
Grazie mille,