[英]I have been assigned a project for currency exchange rate IN SQL . How to save exchange rates for currencies?
我必須創建表格貨幣
CREATE TABLE currencies (
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY (from_currency),
FOREIGN KEY (to_currency) REFERENCES currencies(from_currency)
)
我必須保存6種貨幣的匯率:(inr,eur,cad,usd,gbp,cfp)但問題是我無法在第一列中存儲相同的值,即我可以按如下方式保存貨幣匯率
from_curr ER --> to_curr
INR --> 60 --> USD
USD --> 0 --> USD
GBP --> 70 --> USD
對於所有貨幣等,但現在的問題是,當我嘗試為其他貨幣存儲貨幣時
INR --> 1 --> USD
or
GBP --> 70 --> USD
我收到錯誤重復值,是不允許的嗎? 如何解決這個問題?
您不是在存儲貨幣,而是在存儲兩種貨幣。
CREATE TABLE currency_exchange_rates (
from_currency CHAR(30) NOT NULL,
to_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
PRIMARY KEY (from_currency,to_currency),
)
我還建議使用一個單獨的表格,其中包含六種貨幣,並鏈接上述表格以確保有效的貨幣代碼。 您可能還想保留一個日期字段(並將其作為主鍵的一部分),因為費率會隨着時間而變化...
您應該創建一個復合主鍵,因為兩種貨幣對可以唯一地標識一條記錄。
CREATE TABLE currencies (
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY (from_currency, to_currency)
)
或者,您可以為主鍵添加一個新列,例如作為自動增量列:
CREATE TABLE currencies (
[Id] [int] IDENTITY(1,1) NOT NULL
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY ([Id])
)
當然不能。 那是因為您定義了PRIMARY KEY ()
。 因此,此列僅允許使用不同的值。 相反,您需要的是成對的from_currency / to_currency是唯一的。 您可以通過在表中定義一個復合PK來做到這一點:
CREATE TABLE currencies (
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY (from_currency, to_currency)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.