2015-04-08 78 views
1

我目前正在創建一個Web應用程序來管理我的股票投資組合,但是當涉及到事務表,我有一些問題,我想問一下。股票投資組合的數據庫設計,支持股票拆分/合併

下面是我的股票的交易表的設計:

| column name |  datatype  | 
|----------------|----------------------| 
|  id  |  int(10)  | primary key, auto increment 
| portfolio_id |  int(10)  | reference to portfolio table primary key 
|  symbol |  varchar(20)  | stock symbol e.g: YHOO, GOOG 
|  type  | ENUM('buy','sell') | 
|  tx_date |   DATE   | 
|  price  |  DOUBLE(15,2)  | 
|  volume  |  int(20)  | 
| commission |  DOUBLE(15,2)  | 
| created_at |  TIMESTAMP  | 
| updated_at |  TIMESTAMP  | 

在我目前的設計中,我沒有額外的表用於存儲股票代碼。我創建一個股票代碼列表(使用一些股票API)供用戶選擇,當他們嘗試創建新的交易記錄時,我認爲這種方法在股票分拆/合併時可能會導致一些問題,因爲我可能不會能夠使用相同的符號再次檢索股票價格。

我想知道我應該怎麼修改我的表,以支持股票拆分/合併案?

回答

0

美國有不到4000只股票。爲什麼不使用股票代碼作爲主鍵?你如何計劃分紅?

+0

因爲我想支持那些在美國以外的股票。 即使我將符號設置爲主鍵,關於股票拆分/合併的問題也無法修復。 對於股息部分,我想我會將其添加到投資組合的實現利潤。但沒有存儲在事務表中 – Katrin

0

股票分割

... symbol type shares ... 
... AAPL split 100 ... 

2爲1個的分流; 100股成爲200股。

股息

symbol type amount 
AAPL div 20.00 

兼併

解決方法:記錄合併爲一個銷售或老股票和新股票的買入。在'筆記'欄中添加適當的註釋。

更準確的(但更復雜)的策略是重新設計整個數據庫,使各行業實際上就是一個又一個交易的交易。 「買入」交易股票現金。 '賣'交易股票現金。合併交易股票A用於股票B.拆分交易100股的0股等。現金只是另一個資產類別。

外國股票

所有主要的財經網站有這個想通了。 symbol.exchange是一個唯一的ID。不需要重新發明輪子並創建一個新的ID列。

您還需要添加貨幣列外國股票。