-
Creare campi derivati
Ciao, ho cercato "attributo derivato", "campo derivato" ma non trovo niente, forse uso le parole sbagliate.
Sto cominciando a usare i database da poco e vorrei creare un attributo derivato, cioè un campo di una tabella il cui valore è calcolabile dal valore di un altro campo, ad es. "Nome Cognome DataNascita Età" dove Età è calcolabile dalla differenza tra DataAttuale e DataNascita.
È possibile implementarlo in fase di creazione della tabella con qualche clausola speciale oppure devo per forza implementarlo al momento di inserire i valori?
-
Non mi risulta che sia una funzione implementata, proprio perché causa molti più problemi di quanti possa risolverne. Nel tuo caso specifico, in particolare, il valore di età sarebbe consistente "oggi", ma non lo sarebbe più "domani".
Normalmente le ridondanze (così si chiamano) vengono inserite come campi nel database solo quando il loro calcolo sui dati grezzi sarebbe piuttosto complesso. Un esempio è il contatore dei messaggi di un forum: normalmente viene inserito come attributo nella tabella utente, se non lo fosse, per ottenerlo bisognerebbe raggruppare la tabella dei messaggi e contare i record che si riferiscono all'utente. Il tutto, ogni volta che ciò viene richiesto... prova ad immaginarti cosa sarebbe in un forum come questo (dove il contatore dei post è riportato vicino ad ogni messaggio).
Se posso consigliarti una strategia, non inserire il campo Età nella tua tabella. Se hai bisogno di calcolarlo, puoi sempre sfruttare le funzioni sulle date di MySQL al momento di eseguire la query che interroga la tabella...
Stammi bene...