Со стороны кодирования это легко. Используйте polymorphisim, чтобы иметь разные объекты для каждой суммы денег.
Я понял, что вам нужно сохранить это и в базе данных. Хотя вы точно не сказали этого, интенсивное использование таких слов, как «таблица», «данные» и «строки», указывает на то, что вы заинтересованы в хранении базы данных. Чтобы сохранить полиморфные данные в базе данных, у вас есть только несколько вариантов:
- Наследование одной таблицы - использование одной таблицы для хранения всех классов в полиморфной иерархии.
- Наследование бетонных таблиц - использование одной таблицы для каждого конкретного подкласса.
- Наследование таблиц классов - использование одной таблицы для общего суперкласса и одной таблицы для каждого подкласса (конкретного или иного), хранящего поля в том виде, как они определены в объектно-ориентированной иерархии.
Преимущества для # 1 в том, что у вас есть только одна таблица для поиска, недостатком является то, что большая часть этой таблицы будет большим блоком вариантных данных. Часто поле с «вариантными» частями становится документом XML, хранящимся в строке. В любом случае, если нужно искать инвариантные (всегда там) поля, это легко; но если искать варианты полей, это становится трудно.
Преимущества для # 2 в том, что запросы к базе данных легко выполнять с помощью стандартных инструментов SQL. Недостатком является то, что вы должны принять особые меры предосторожности, чтобы не хранить одни и те же инвариантные ключи в коллекции таблиц дважды, поскольку это будет означать, что учетная запись № 5 является одновременно и учетной записью на 5 долларов, и на 50 000 долларов.
Преимущество для # 3 состоит в том, что структура базы данных имитирует иерархию классов, что может облегчить проблемы коллизии ключей в # 2 и, тем не менее, обеспечить лучшие SQL-запросы, чем # 1. Недостатком является то, что для получения любого отдельного объекта вам нужно выполнить соединение по внешнему ключу (снижение производительности).
Короче, без серебряных пуль. Однако, возможно, вы не имели в виду таблицы базы данных, в этом случае это не проблема.