複数の市場で取引されている証券の価格を格納するために、SQL Server 2008を使用してデータベースを構築しています。
特定の市場では、すべての証券に同じ休日カレンダーがあります。ただし、休日のカレンダーは市場によって異なります。
次の 4 つのテーブルが必要です: Market、GoodBusinessDay、Security、およびSecurityPriceHistoryであり、証券が取引された市場が閉鎖された営業日の行がSecurityPriceHistoryにないように強制したいと考えています。
テーブル内のフィールドは次のとおりです。
市場: MarketID (PK)、MarketName
GoodBusinessDay: MarketID (FK)、SettlementDate (ペアは PK)
セキュリティ: SecurityID (PK)、MarketID (FK)、SecurityName
SecurityPriceHistory: これが質問です - 私の好みは SecurityID、SettlementDate、SecurityPrice です
このようにテーブルを定義し、SecurityPriceHistoryのすべての行に対応する行がGoodBusinessDayにあることを保証するにはどうすればよいでしょうか?
MarketIDの列をSecurityPriceHistoryに追加したとします。2 つの外部キー (1 つはSecurityを指し、もう 1 つはGoodBusinessDayを指す) を使用してこれを行う方法はわかりましたが、それは正しい方法ではないようです。