数据库设计:stock&期权交易

时间:2012-04-25 02:51:29

标签: database-design options stocks trading

数据库有两个表:一个用于股票(股票),一个用于期权。这些是单独的表,因为它们具有不同的信息。例如,股票表有一个股票代码列和一个(主要)交换列;选项表具有股票代码列,指向股票表的FK列,执行价格列,到期日期列和权利(看跌/看涨)列。我认为将它们分成两个表格是一个好主意,尽管这是有争议的。

我需要在数据库中存储交易(或订单或交易)。单笔交易就像是“在2012-04-14买入100股IBM 200美元。交易可能涉及股票或期权。交易应该存储为一个表格,一列表明交易是否涉及股票或者一个选项,以及另一个FK指向股票表或期权表的列?或者是否应该有两个交易表,一个用于涉及股票的交易,一个用于涉及期权的交易?

稍后,我还需要添加一个位置表。一个简单的位置将由两个交易组成,例如今天购买100股IBM,明天卖出100股IBM。然而,它也可能更复杂,涉及期权和股票(例如,有保障的看涨期权)。似乎如果我为交易做两个表,那么如果我实现单个交易表,我将面临设计持仓表的相同困难:我需要一个指向股票交易表或期权交易的外键表

这让我觉得应该有一个单一的工具表,其中包含股票和期权。但是,股票所需的信息与选项(见第一段)有很大不同,这也是错误的。包含股票的行将使所有特定于选项的列为空。

我该如何设计这个数据库?

1 个答案:

答案 0 :(得分:3)

您应该考虑制作新表的STOCKOPTION个子类型:INSTRUMENT。当您交易或记录头寸时,它将与超类型INSTRUMENT相关。

这使您可以为您的股票和期权保留不同的表格,这是明智的,因为它们具有不同的属性。同时,它允许您通过一组交易以合理的方式工作。