Если вы можете программно преобразовать «29,99» в «& * () _», то я бы поместил цену в таблицу продуктов и оставил ее перевод в слое отображения.Если вы сохраните его дважды, у вас возникнут две очевидные проблемы:
- У вас возникнут проблемы с согласованностью, поскольку вы храните одну и ту же вещь в двух разных местах в двух разных форматах.
- Вы будете хранить числовые данные в текстовом формате.
Первая проблема вызовет у вас сильную головную боль, когда вам нужно будет обновить цены, а ваши бухгалтеры будут ненавидеть вас за то, что вы запутались вкниги.
Вторая проблема заставит вашу базу данных ненавидеть вас всякий раз, когда вам понадобятся какие-либо вычисления или сравнения внутри базы данных.Вызов CONVERT(string AS DECIMAL)
снова и снова будет стоить.
Вы можете сохранить цену в числовой форме в таблице продуктов (для вычисления, сортировки и т. Д.), А затем иметь локализованный перевод в своем переводе.таблица в виде строки.Этот подход только усиливает две проблемы выше, хотя.Однако, если вам нужно, чтобы люди переводили ваши цифры, такой подход может быть необходим.Если вы застряли с этим, то вы можете смягчить свои проблемы согласованности, запустив какой-либо инструмент проверки работоспособности после каждого обновления, вы даже сможете обернуть средство проверки работоспособности в какой-то триггер.