MySQL - лучший способ хранения символов валюты? - PullRequest
3 голосов
/ 03 августа 2011

Просто интересно, каким может быть лучший способ хранения значений валюты и символов в БД MySQL?Благодаря просмотру SO я сохраняю свои суммы как десятичную (19,2) единицу, что хорошо, но меня больше интересует символ валюты (например, €, £, $ и т. Д.), поскольку я хочу разрешить конечному пользователю устанавливать собственную валютную единицу на этапе настройки.Я также хочу избежать какой-либо неопределенности в отношении кодировок, которые в настоящее время установлены в utf8 (обе стороны).

В настоящий момент я храню их как Числовые коды HTML PHP ifelse операторы для фильтрации ввода.Это лучший метод?Если нет, то что?Есть ли необходимость вообще?Заранее большое спасибо!

Ответы [ 4 ]

3 голосов
/ 03 августа 2011

imho, вы можете разбить данные на два столбца

amount      = decimal(19,2) --- question : unsigned for positive value only
currency_id = int(10) unsigned --- which is ID to currency table

когда поле currency является ссылкой на другую таблицу,
Вы можете хранить всякую дополнительную информацию в этой таблице (например, обменный курс)
чтобы лучше описать, как вы хотите, чтобы символ был представлен

3 голосов
/ 03 августа 2011

Я хотел бы использовать character (3) и хранить вместо него код валюты (http://en.wikipedia.org/wiki/ISO_4217#Active_codes). Например, EUR, USD, GBP и т. Д., И отображать соответствующий символ только во время отображения.

1 голос
/ 03 августа 2011

Нужно ли конвертировать валюту в зависимости от того, что выберет пользователь?Если да, вы можете просто создать новую таблицу для хранения символа валюты и обменного курса.

Если вы просто хотите показать валюту на основе локали пользователя, вы можете попробовать библиотеку интернационализации.

1 голос
/ 03 августа 2011

Рассматривали ли вы вообще не использовать символы, а вместо этого использовать ISO 4217 трехбуквенные коды?

При необходимости используйте другую таблицу для обработки сопоставления из этих таблиц в более удобный для пользователя формат символов на выходе.

...