Currency
CurrencyId*
CurrencyName
CurrencyLastDateTime = max(CurrencyValueDateTime)
CurrencyLastValue = max(CurrencyValueDateTime,,,CurrencyValueValue)
CurrencyValue
CurrencyId*
CurrencyName
CurrencyValueDateTime*
CurrencyValueValue
In this case the disadvantage is performance due the Maxs can be an expensive. If it isn't necessary to known the date time of the last value, it's better not to have the CurrencyLastDateTime in order to avoid one of the Max.
Note: due some Genexus restrictions (at least 8.0) this formulas can't be defined as redundant.