Sql 数据库中的货币兑换
我正在设计一个包含货币汇率的关系数据库。我的第一个直觉是有一个货币表,其中列出了所有货币,并将其他货币的汇率作为属性 例: 货币表 id INT 基本\货币\代码VARCHAR 日期 美元小数 十进制英镑 欧元十进制 我在网上搜索了如何在数据库中实现货币兑换表,我所看到的每一个地方都有一个表currency\u exchange,其中列为base\u currency、non\u base\u currency to currency、rate和date 因为我找不到一个类似于我的实现,而且我读到的一篇帖子说另一个实现是他工作的金融公司的实现方式,所以我认为另一个优于我的Sql 数据库中的货币兑换,sql,database-design,currency-exchange-rates,Sql,Database Design,Currency Exchange Rates,我正在设计一个包含货币汇率的关系数据库。我的第一个直觉是有一个货币表,其中列出了所有货币,并将其他货币的汇率作为属性 例: 货币表 id INT 基本\货币\代码VARCHAR 日期 美元小数 十进制英镑 欧元十进制 我在网上搜索了如何在数据库中实现货币兑换表,我所看到的每一个地方都有一个表currency\u exchange,其中列为base\u currency、non\u base\u currency to currency、rate和date 因为我找不到一个类似于我的实现,而且我读
我只是不明白为什么。有人能解释一下为什么另一个更好吗?您想要这样的表格:
create table Currencies (
CurrencyId int primary key,
ISO_Code varchar(3),
Name varchar(255)
);
create table CurrencyExchangerate (
CurrencyExchangerateId int primary key,
FromCurrencyId int not null references Currencies(CurrencyId),
ToCurrencyId int not null references Currencies(CurrencyId),
RateDate date not null,
ExchangeRate decimal(20, 10),
constraint unq_currencyexchangerate_3 unique (FromCurrencyId, ToCurrencyId, RateDate)
);
您需要这样的表格:
create table Currencies (
CurrencyId int primary key,
ISO_Code varchar(3),
Name varchar(255)
);
create table CurrencyExchangerate (
CurrencyExchangerateId int primary key,
FromCurrencyId int not null references Currencies(CurrencyId),
ToCurrencyId int not null references Currencies(CurrencyId),
RateDate date not null,
ExchangeRate decimal(20, 10),
constraint unq_currencyexchangerate_3 unique (FromCurrencyId, ToCurrencyId, RateDate)
);
您的表未正常化。如果要添加新货币,会发生什么情况?添加另一列?不,表结构应该是固定的,不能随数据而变化。@juergend-这个表违反了哪种规范形式?您的表没有规范化。如果要添加新货币,会发生什么情况?添加另一列?不,一个表结构应该是固定的,不能随数据而变化。@juergend-这个表违反了哪种标准格式?