Domanda senza spiegazione:
Esiste comunque un vincolo di 2 valori null che richiede sempre 1 per avere valore? Ad esempio due colonne di date entrambe nulle ma con almeno 1 che richiede di avere un valore
Descrizione del problema:
Diciamo che ho una tabella chiamata Expense
e hanno 2 date:
prevision_expense_expiration_date DATA NULLABLE spese_payment_date DATA NULLABLE
la logica di quelle 2 colonne è la seguente:
Ho fatto un acquisto di qualcosa e so che devo pagarlo, un appuntamento, come una bolletta del telefono. Inserirò questo come una spesa con una spesa_pagata_data. Questa data è la data presunta che dovrei pagare ma non la data effettiva del pagamento, come la data di scadenza della fattura.
In altre situazioni vendo una carta regalo di alcuni provider per il suo servizio. Io possa avere le spese di acquisto al mio fornitore del servizio trasferito al mio cliente solo se il cliente riscattare la carta. Quindi la carta regalo ha una data di scadenza, voglio fare una previsione per quella "spesa" senza inserirla come spesa per il tempo in cui la carta regalo è valida, se la carta regalo scade, tale "spesa" non dovrebbe entrare nel conto sistema.
So di poter avere 2 tabelle uguali chiamate prevision_expense e confirm_expense ma non suona bene, quindi ho nella stessa tabella, 2 date, nullable, ma voglio vincolare o qualcosa in modo che uno sia sempre richiesto.
C'è un'altra strategia possibile:
payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL
Quindi, in questo caso, se la data è la previsione il valore bool sarebbe 1, altrimenti sarà 0. Nessun valore null, tutto va bene. a parte il fatto che desidero l'opzione di memorizzare ENTRAMBI i valori quando prima ho una data di previsione e POI (diciamo due giorni dopo) hanno una data confermata per quella spesa, nel qual caso con la strategia 2 non avrò quell'opzione.
Sto sbagliando tutto nella progettazione del database? : D
CHECK
vincolo. Non è necessaria una colonna persistente.