2012-04-25 9 views
2

データベースには、株式(株式)とオプション用の2つのテーブルがあります。彼らは異なる情報を持っているので、これらは別のテーブルです。たとえば、株価表にティッカー記号列と(主な)交換列があります。オプションテーブルには、ティッカーシンボル列、株式表を指すFK列、ストライク価格列、有効期限列、および権利(プット/コール)列があります。私は議論のために開いているが、2つのテーブルでそれらを分けるのは良い考えだと思う。データベース設計:在庫とオプション取引

私は、取引(または注文、取引)をデータベースに保存する必要があります。 1回の取引は、「2012年4月14日にIBMの100株を200米ドルで購入する」のようなもので、取引には株式またはオプションが含まれます。ストック・テーブルまたはオプション・テーブルのいずれかを指し示すFKである別の列または株式を含む取引とオプションを伴う取引の2つの取引表があるか?

その後、シンプルなポジションは、今日のIBM株式100株の買収と明日のIBM株100株の売却という2つの取引で構成されますが、オプションと株式の両方を含むより複雑なものになる可能性もあります(例えば、カバーされたコール)。私は、取引のための2つのテーブルを作成する場合、私は単一の取引のtablを実装した場合、 e:株価表またはオプション取引表のいずれかを指す外部キーが必要です。

これは、株式とオプションの両方を含む単一の楽器テーブルがあるように感じます。しかし、株式に必要な情報はオプションとは非常に異なっており(最初の段落を参照)、これも間違っていると感じています。在庫を含む行には、すべてのオプション固有の列がNULLになります。

このデータベースの設計方法を教えてください。

+0

SQL DDLといくつかのサンプルデータをINSERT文として投稿しても構いませんか? –

答えて

3

新しいテーブルののサブタイプをSTOCK sとOPTIONとすることを検討してください。あなたがポジションを交換したり記録したりするときは、スーパータイプINSTRUMENTに関してです。

これにより、ストックとオプションの異なるテーブルを保持することができます。異なる属性を持つため、分かりやすいです。同時に、単一のトランザクションセットで賢明な方法で作業することができます。

+0

あなたは正しいです、それは有望なアプローチのように思えます。 INSTRUMENTテーブルとSTOCKテーブルの間の主キー/外部キーの関係は何ですか? STOCKテーブルがINSTRUMENT TABLEを指しているFKを持っていますか?または、INSTRUMENTテーブルにSTOCKテーブルを指すFKが必要ですか?または両方? – Jimmy

+1

@ジミー - 私はどちらもしません - それは確かです。通常、サブタイプはスーパータイプを指しています。緑色のフィールドに構築する場合は、INSTRUMENTで主キーを定義し、それを各サブタイプテーブルの主キーとして使用します。一意性はすでにそのように保証されています。潜在的にキースペースが衝突するサブタイプ・テーブルがある場合は、INSTRUMENT.IDに関連するサブタイプに候補キーを追加するか(緑色のフィールドに非常に似ています)、既存のサブタイプ・テーブルに触れることができない場合は、それぞれのサブタイプをスーパータイプに変換します。 –

+0

トランザクションを表示するためにクエリがどのように見えますか?私は、計測器テーブルからオプションテーブルまたは株式テーブルにマップするクエリをどのように伝えるべきかわかりません。 – Jimmy