股票组合数据库设计,以支持股票分割/合并

时间:2015-04-08 03:06:26

标签: mysql database stock portfolio

我目前正在创建一个网络应用程序来管理我的股票投资组合,但是当涉及到交易表时,我有一些问题我想问。

以下是我的股票交易表设计:

|   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)供用户在尝试创建新的交易记录时选择,我认为这种方法可能会在股票分割/合并时产生一些问题,因为我可能不会能够使用相同的符号再次检索股票价格。

我想知道如何修改我的表格,以支持股票拆分/合并案例?

2 个答案:

答案 0 :(得分:0)

美国的股票不到4000只。为什么不使用股票代码作为主键。您如何计划分红?

答案 1 :(得分:0)

股票拆分

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

2分为1分; 100股成为200股。

<强>股息

symbol  type  amount
AAPL    div   20.00

<强>合并

解决方法:将合并记录为销售或旧库存以及购买新库存。在&#39;注释中添加适当的注释。列。

更准确(但更复杂)的策略是重新设计整个数据库,以便每笔交易实际上是另一笔交易。 A&#39;购买&#39;交易现金库存。 A&#39;出售&#39;交易股票换现金。合并交易股票A股票B.股票交易0股,100股,等等。现金只是另一种资产类别。

外国股票

所有主要的财务网站都有这个想法。 symbol.exchange是一个唯一的id。无需重新发明轮子并创建新的id列。

您还需要为外国股票添加货币列。