Quali sono i buoni modi per codificare l'ordine tra i record di una tabella relazionale

1

Ad esempio, quando un tracker di problemi offre agli utenti la funzionalità di mantenere un backlog prioritario di attività e utilizza un database relazionale per mantenere queste informazioni, quali sono i modi efficaci per codificare queste informazioni?

Naturalmente si potrebbe introdurre un campo integrale priority (possibilmente unico) e ordinare le voci in base a quel campo prioritario, ma questa potrebbe non essere una buona soluzione se si considera che le priorità potrebbero dover essere riordinate dall'utente. Mi chiedo se ci sia un corpus di lavoro su questo o su buone pratiche.

    
posta wirrbel 24.06.2018 - 11:01
fonte

1 risposta

2

Dipende da qual è il tuo obiettivo. Se desideri semplicemente un ordinamento semplice, puoi solo una colonna intera per order , o priority , ecc. Ma se vuoi colonne per priorità, come una scheda kanban, potresti codificare in modo diverso avendo ad esempio una mappatura da M a N di issues e columns . In questo caso, puoi anche avere un order o priority per il tuo issue , in modo che possa essere ordinato correttamente nella colonna.

Il riordino da parte dell'utente è un problema banale. Dovresti semplicemente tenere traccia dell'ordinamento originale del problema (cioè il valore intero order ); una volta che conosci l'ordine aggiornato / nuovo , è un po 'di matematica di base ottenere tutti i problemi per quella colonna e aggiornare i loro ordini. Ad esempio, hai questi 3 problemi nella colonna denominata "TODO":

  • "Correggi bug del database" - order = 1
  • "Correzione bug UI" - order = 2
  • "Implementa funzionalità" - order = 3

potresti spostare "Funzione attrezzo" in alto e modificare i valori dell'ordine per gli altri problemi in quella colonna:

  • "Implementa funzionalità" - order = 1
  • "Correggi bug del database" - order = 2
  • "Correzione bug UI" - order = 3

Quindi, per rispondere alla domanda radice, dipende dal tuo caso d'uso !

Ma tutto sommato penso che molte persone usino semplicemente una semplice colonna intera e una logica di aggiornamento degli ordini di base quando le cose vengono spostate. Nota che richiede 1 aggiornamento del record del database per ogni articolo che deve essere regolato per l'ordine (nell'esempio sopra, 3 record vengono aggiornati). Tuttavia, questo non dovrebbe essere un problema per la maggior parte dei database relazionali come potresti (e dovrebbe ) avvolgere quegli aggiornamenti in una transazione.

    
risposta data 24.06.2018 - 17:00
fonte