データベースには、株式 (株式) 用とオプション用の 2 つのテーブルがあります。情報が異なるため、これらは別の表です。たとえば、株式テーブルにはティッカー シンボル列と (プライマリ) 取引所列があります。オプション テーブルには、ティッカー シンボル列、株式テーブルを指す FK 列、行使価格列、満期日列、右 (プット/コール) 列があります。議論の余地はありますが、それらを 2 つの表に分けるのは良い考えだと思います。
取引 (または注文、またはトランザクション) をデータベースに保存する必要があります。単一の取引は、「2012 年 4 月 14 日に 200 ドルで IBM の株式を 100 株購入する」のようなものです。取引には、株式またはオプションのいずれかが含まれます。取引が株式に関連するかどうかを示す 1 つの列を持つ、1 つのテーブルとして取引を保存する必要があります。またはオプション、および株式テーブルまたはオプション テーブルのいずれかを指す FK である別の列? または、株式を含む取引用とオプションを含む取引用の 2 つの取引テーブルが必要ですか?
後で、位置テーブルも追加する必要があります。単純なポジションは、今日 IBM の 100 株を購入し、明日 IBM の 100 株を売却するなど、2 つの取引で構成されます。ただし、オプションと株式の両方を含む、より複雑な場合もあります (たとえば、カバード コール)。取引用に 2 つのテーブルを作成すると、単一の取引テーブルを実装した場合と同じようにポジション テーブルを設計するのが困難になるようです: 株式取引テーブルまたはオプション取引のいずれかを指す外部キーが必要になります。テーブル。
これは、株式とオプションの両方を含む単一の商品テーブルが必要なように感じさせます。ただし、株式に必要な情報はオプションとは大きく異なるため (最初の段落を参照)、これも間違っていると感じます。株式を含む行では、すべてのオプション固有の列が null になります。
このデータベースをどのように設計すればよいですか?