Моделирование валюты в базе данных

Очень наивный вопрос. Мне нужно хранить валюту в базе данных. И стоимость, и код. Чтобы решить эту проблему, люди обычно делают 2 столбца, один из которых хранит значение, а другой - код? Или есть встроенный тип, который я могу использовать?

-Спасибо


person Mak    schedule 04.12.2009    source источник


Ответы (4)


Вам нужно будет использовать две колонки. Я бы сохранил денежную сумму в одном столбце и код альфа-валюты в другом столбце. В некоторых случаях у вас будет несколько сумм в одной строке. например сумма доставки и сумма налога могут быть указаны в счете-фактуре. Вам нужно будет решить, будут ли они использовать одну и ту же валюту или вам нужны два столбца.

Вы должны использовать стандартные коды валют ISO.

person WW.    schedule 04.12.2009

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

Обновление: PostgreSQL имеет тип денег, хотя выглядит как будто он поддерживает только один тип валюты, поэтому он все еще не соответствует вашим потребностям.

person Justin Ethier    schedule 04.12.2009
comment
Да, я использую postgresql, но я использую числовое значение для хранения денег, так как я хочу использовать 3 десятичных знака. Простое обращение с ним самостоятельно дает больше всего возможностей. - person Arthur Thomas; 04.12.2009
comment
Вы можете настроить точность типа данных money в PostgreSQL, указав параметр lc_monetary! - person Daniel; 22.05.2013

Известные мне реляционные базы данных (Oracle, Postgres, MySQL) не имеют встроенной поддержки валюты, и я не ожидаю, что она есть у других. Вам придется сделать это самостоятельно с 2 столбцами.

person FelixM    schedule 04.12.2009
comment
Postgresql имеет тип «деньги» — postgresql.org/docs/8.3 /static/datatype-money.html - person warren; 04.12.2009
comment
У него действительно есть этот тип, но я не понимаю, как можно указать саму валюту; в документации упоминается только отображение, зависящее от локали. - person FelixM; 04.12.2009

Могут быть инструменты, специфичные для вашей базы данных. В общем, я бы подумал о сохранении валюты как реального значения и индикатора кода валюты. Где-то может быть стандартный список кодов валют, который вы можете использовать, или вы можете просто составить его на основе валют, с которыми, как вы знаете, вы будете иметь дело.

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

Люди могут предоставить более конкретную помощь по БД, если вы укажете БД, которую используете.

person Arthur Thomas    schedule 04.12.2009
comment
en.wikipedia.org/wiki/ISO_4217 — отличный стандартизированный список кодов валют. - person Jeff Sternal; 04.12.2009