4

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

我需要在数据库中存储交易(或订单或交易)。单笔交易就像“在 2012 年 4 月 14 日以 200 美元的价格购买 100 股 IBM 股票。交易可以涉及股票或期权。应将交易存储为一张表,其中一列指定交易是否涉及股票或期权,另一列是指向股票表或期权表的 FK?还是应该有两个交易表,一个用于涉及股票的交易,一个用于涉及期权的交易?

稍后,我还需要添加一个职位表。一个简单的头寸将由两笔交易组成,例如今天买入 100 股 IBM 股票,明天卖出 100 股 IBM 股票。但是,它也可能更复杂,涉及期权和股票(例如,有担保的看涨期权)。似乎如果我为交易做两个表,那么我在设计头寸表时面临同样的困难,就像我实现一个单一的交易表一样:我需要一个指向股票交易表或期权交易的外键桌子。

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

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

4

1 回答 1

4

您可能应该考虑创建新表的STOCKs 和s 子类型: . 当您交易或记录头寸时,它将与超类型有关。OPTIONINSTRUMENTINSTRUMENT

这使您可以为您的股票和期权保留不同的表格,这是明智的,因为它们具有不同的属性。同时,它可以让您以合理的方式处理一组事务。

于 2012-04-25T11:29:09.270 回答