簡體   English   中英

我已經分配了一個有關SQL中貨幣匯率的項目。 如何保存貨幣匯率?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM