簡體   English   中英

匯率應用程序的數據庫架構

[英]Database schema for Exchange rates application

我正在為一家小公司開發自定義Web應用程序,該公司將使用自己的匯率交換貨幣,該匯率將存儲在應用程序中,將存儲客戶交易記錄,並保留過去的每日匯率以供報告。

我要為其設計MySQL DB的第一個功能部分是:

  • 用戶每天輸入一次,然后手動輸入貨幣(例如,USD,GBP,AUD)匯率,該匯率將每天以1歐元為基礎買賣每個硬幣。 例如,為簡單起見,假設只設置了賣出率。
  • 每日費率將保留在數據庫中供歷史報告使用,並且不會被第二天的費率覆蓋。

因此,有一些選項可以設計這部分的MySQL數據庫

第一個方案選項

currencies (id, name)  

| ___每個硬幣都有唯一的縮寫名稱(USD,GBP等)

rates_daily (id, date, currencies.id[fk], net_price, fee, total_price)

| ___將存儲每種貨幣的每日匯率。

由於它必須在同一表中存儲多個currency.name費率,因此我必須通過結合date&currency.id來創建UNIQUE鍵來保持數據完整性。

但是,如果每個人都說有20個貨幣匯率記錄存儲在同一張表中,那么使用一個表存儲多種貨幣的每日匯率將顯得不正確。

第二個方案選項

currencies (id, name)

| ___每個硬幣都有唯一的名稱(美元,英鎊等)

currencies_daily (id, date, currencies.id[fk])  

| ___ UNIQUE鍵,通過組合date和currency.id

rates_daily (id, currencies_daily.date[fk], currencies_daily.currencies.id[fk], net_price, fee, total_price)  

| ___ UNIQUE鍵,通過組合currency_daily.date和currencys_daily.currencies.id

也許我的想法很怪異,但是我有一種感覺,這部分可能會有第三個模式選項,它將更加簡潔。

如果有的話,您能推薦我一個更好的嗎?

據我所知,您的第二個選項沒有一個比第一個選項有任何優勢,只是在架構中添加了不必要的第三個表。 這是我可能會使用的:

CREATE TABLE currencies (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(55) NOT NULL,
    PRIMARY KEY (id)
)

CREATE TABLE rates_daily (
    id INT NOT NULL AUTO_INCREMENT,
    date DATETIME NOT NULL,
    currency_id INT NOT NULL,
    bid NUMERIC (15, 2) NOT NULL,
    ask NUMERIC (15, 2) NOT NULL,
    FOREIGN KEY fk_curr (currency_id)
    REFERENCES currencies (id)
)

這兩種貨幣的點我想你想捕捉每一種貨幣,在每一天,是買入價賣出價。 這兩個價格決定了點差,也決定了購買貨幣時期望支付的價格或出售貨幣時期望獲得的價格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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