That design violates good practice because you are mixing the data itself with the classes used to manipulate that data. You are blatantly breaking the Single Responsibility Principle.

Also, record IDs should pretty much always be whole numbers, so Decimal is not really the most appropriate type. Long would be a better choice.