Ho seguito la convenzione di aggiungere colonne create e modificate alla maggior parte delle mie tabelle di database. Ho anche lasciato la colonna modificata come nulla alla creazione del record e solo impostando un valore sulla modifica effettiva.
L'altra alternativa è impostare la data modificata in modo che corrisponda alla data di creazione sulla creazione del record.
L'ho fatto nel modo precedente, ma di recente mi sono imbattuto in una sola truffa che mi fa seriamente pensare al passaggio. Avevo bisogno di impostare una dipendenza della cache del database per scoprire se qualche dato esistente è stato modificato o se sono stati aggiunti nuovi dati. Invece di essere in grado di fare quanto segue:
SELECT MAX(modified) FROM customer
Devo fare questo:
SELECT GREATEST(MAX(created), MAX(modified)) FROM customer
L'aspetto negativo è che è una query più complessa e più lenta. Un'altra cosa è nei file system, credo che usino solitamente la seconda convenzione per l'impostazione di data di modifica = data di creazione alla creazione.
Quali sono i pro e i contro dei diversi metodi? Cioè, quali sono i problemi da considerare?
Aggiorna
Credo che visti gli apparenti compromessi che ho intenzione di fare con la strategia modificata = creata. Inoltre, ero curioso di sapere come altri database web lo gestissero e ho notato che drupal sembra seguire la convenzione di modified = created anche.