Я создаю базу данных с помощью SQL Server 2008 для хранения цен на ценные бумаги, торгуемые на нескольких рынках.
Для данного рынка все ценные бумаги имеют одинаковый календарь праздников. Однако календари праздников отличаются от рынка к рынку.
Мне нужны следующие четыре таблицы: 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. Я мог представить, как это сделать с двумя внешними ключами (один указывает на Security, а другой указывает на GoodBusinessDay), но это не похоже на правильный способ сделай это.