Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 数据库设计:stock&;期权交易_Database Design_Options_Stocks_Trading - Fatal编程技术网

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

Database design 数据库设计:stock&;期权交易,database-design,options,stocks,trading,Database Design,Options,Stocks,Trading,一个数据库有两个表:一个用于股票,另一个用于期权。这些是单独的表,因为它们有不同的信息。例如,stocks表有一个ticker symbol列和一个(primary)exchange列;期权表有一个股票代码列、一个指向股票表的FK列、一个执行价格列、一个到期日列和一个右(看跌/看涨)列。我认为将它们分为两个表格是一个好主意,尽管这是一个值得讨论的问题 我需要在数据库中存储交易(或订单,或交易)。单一行业就像“在2012年4月14日以200美元购买100股IBM股票。交易可以涉及股权或期权。交易是

一个数据库有两个表:一个用于股票,另一个用于期权。这些是单独的表,因为它们有不同的信息。例如,stocks表有一个ticker symbol列和一个(primary)exchange列;期权表有一个股票代码列、一个指向股票表的FK列、一个执行价格列、一个到期日列和一个右(看跌/看涨)列。我认为将它们分为两个表格是一个好主意,尽管这是一个值得讨论的问题

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

稍后,我还需要添加一个positions表。一个简单的头寸由两种交易组成,比如今天买入100股IBM,明天卖出100股IBM。然而,它也可能更为复杂,涉及期权和股票(例如,备兑看涨期权)。似乎如果我为交易创建两个表,那么我将面临与实现单个交易表时相同的困难:我需要一个指向股票交易表或期权交易表的外键

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


<>我应该如何设计这个数据库?< /P> < P>你应该考虑制作一个新的表:<代码>股票<代码> >和<代码>选项>代码>子类型:<代码>仪器< /代码>。当您交易或记录头寸时,它将与超类型
工具相关


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

您介意将SQL DDL和一些示例数据发布为INSERT语句吗?您是对的,这听起来是一种很有前途的方法。您认为仪器表和(比如)库存表之间的主键/外键关系是什么?库存表是否应具有指向仪器表的FK?或者仪器表是否应该有一个指向库存表的FK?还是两者都做?@吉米-我不会两者都做-那是肯定的。通常,子类型指向超类型。如果在绿色字段中构建,则让INSTRUMENT定义主键,并将其用作每个子类型表中的主键。这种方式已经保证了独特性。如果现有的子类型表具有可能冲突的键空间,则您可以选择将候选键添加到与INSTRUMENT.ID相关的子类型(非常类似于绿色字段),或者如果无法触摸现有的子类型表,为超类型的每个子类型生成连接器表。查询显示事务时会是什么样子?我不知道如何告诉查询从instruments表映射到options表或equities表?@Jimmy-典型的方法是在超类型和所有子类型上创建一个视图。该视图是使用一个查询为每个子类型构建的,并使用UNION ALL将它们收集起来。这只适用于您能够找到一组通用列的情况。有时,视图包含每个子类型的所有唯一列。这会导致视图中的“稀疏列”,但是在视图稀疏列中,大多数人通常认为它们是邪恶的。您的查询只是从事务表连接到仪器上的视图等。