Sfondo
Sto cercando di decidere il modo migliore per gestire un cambiamento nei requisiti. Attualmente quando un amministratore viene assegnato a un ticket, al record dell'intestazione del ticket viene assegnato un proprietario e il campo ownerID viene aggiornato con il valore dell'ID che corrisponde al record nella tabella TeamMembers. Il proprietario (membro del team) viene informato quando un utente (cliente) aggiorna il ticket con un commento. Ora devo aggiungere altri membri del team al ticket in modo che vengano anche notificati.
Domanda?
I I ...
- Crea ID proprietario del campo ID proprietario e memorizza un elenco di ID separati da virgole in una stringa?
- Aggiungi un nuovo campo additionalOwnerIDs e memorizza eventuali ID aggiuntivi dopo il proprietario principale come stringa separata da virgole?
- Crea una nuova tabella che collega semplicemente ticketID ai proprietari assegnati e ha una riga per proprietario?
- Fai qualcos'altro?
Considerazioni
Desidero fornire la nuova funzionalità il più rapidamente possibile, il riutilizzo del campo esistente potrebbe sembrare il modo più semplice ma comporterebbe la modifica del tipo di schema dei dati esistenti, quindi sarà necessario uno script di migrazione per riscrivere centinaia di migliaia di righe .
L'aggiunta di un nuovo campo non richiederebbe più operazioni di migrazione, come sarebbe una stringa vuota per tutti i record esistenti e predefinita per una stringa vuota per i nuovi record.
Una nuova tabella di collegamenti sembra il modo più programmaticamente corretto (IMHO) ma richiederebbe il tempo più lungo per implementarlo e testarlo e le migrazioni sarebbero le più complicate in termini di estrazione dei proprietari di ticket esistenti nella nuova tabella. Modifica del codice per recuperare / aggiornare un proprietario per interrogare la nuova tabella. Quindi rimuovi la colonna ownerID defunta dalla tabella esistente.
Hai perso qualcosa? Quale approccio è il migliore in termini di mantenimento della base di codice in futuro?