colonna "Expires_at": quantità di ore o il valore finale?

0

Dire, ho un'entità che ha una colonna "inserted_at". Ora voglio aggiungere una colonna "expires_at". Può essere in ore, giorni o mesi.

Ci sono 2 approcci a questo:

1) aggiungi 2 colonne: valid_within_value: int e valid_within_unit_id. O anche una singola colonna: valid_within_value_in_hours: int

2) o aggiungere expires_at: datetime

Quali sono i contro e i proc di ciascuno di questi? Quale è più comune e consigliato e quando?

    
posta Kumaro 04.08.2017 - 03:05
fonte

2 risposte

5

Dipende da ciò che stai cercando di ottenere con la scadenza.

Tieni traccia di un periodo di validità interessante per la tua app per un lungo periodo di tempo? Per esempio. potresti avere diverse durate di scadenza diverse e devi confrontare e confrontare le richieste in base a quanto tempo è stato concesso loro un tempo di vita (ttl). Se è così, ciò significa mantenere un valore di durata reale.

Tuttavia, se devi effettivamente selezionare gli elementi per la scadenza, ti consigliamo vivamente di calcolare e mantenere un valore expires_at assoluto. Altrimenti, dovrai costantemente ricalcolare questi valori per determinare "È già successo? Possiamo scadere?" Che si trasforma rapidamente in un "No. Okay twiddles un po ' Riflette valori. Che ne dici ora? No? Ok. ..." loop.

Se è necessario valutare / ragionare su scadenze diverse e scadere effettivamente, mantenere entrambe le cifre in giro. Tuttavia, sarebbe un caso raro. Di solito, scadere è l'obiettivo e non c'è (o non c'è molta) variazione nella durata della scadenza, e nessun interesse (o solo raro) nel ragionamento su di esso. In tal caso, basta solo l'endpoint calcolato.

    
risposta data 04.08.2017 - 12:07
fonte
3

Una buona regola empirica: se sei in dubbio, usa la soluzione più semplice possibile. In questo caso avere un singolo expires_at che è un valore DateTime non ambiguo è chiaramente più semplice.

L'introduzione di unità o valori relativi ad altri valori aggiunge solo complessità. A meno che tu non abbia dei requisiti che non menzioni, non aggiungere complessità di cui non hai bisogno.

    
risposta data 04.08.2017 - 12:36
fonte

Leggi altre domande sui tag