Я хотел бы разработать базу данных условий финансовых инструментов и увидеть 2 возможных решения. Первый - это то, что я называю минимальным дизайном, который я считаю наиболее гибким. Второе включало бы наличие базы данных Master с каскадной системой обновлений в подтаблицы, в которых хранятся более мелкие детали каждого отдельного типа безопасности.
В качестве примера для иллюстрации этих понятий. Я думаю, что для минимального дизайна нужны только 4 колонки. Эта таблица, которую я считаю наиболее универсальной, поскольку производные инструменты должны быть легко включены путем включения нового AttibuteName's
UpdateDate SecurityID AttributeName AttributeValue
----------------- ----------- --------------- ---------------
09/12/2011 18:01 1 Name HSBC Plc
09/12/2011 18:01 1 Ticker HSBA LN Equity
09/12/2011 18:01 1 SecurityType Equity
09/12/2011 18:01 1 Currency GBP
09/12/2011 18:01 1 Country UK
11/12/2011 12:23 2 Name RBS 6% 15-Mar-2015
11/12/2011 12:23 2 Ticker XS0000000123 Corp
11/12/2011 12:23 2 SecurityType Bond
11/12/2011 12:23 2 Currency EUR
11/12/2011 12:23 2 Country UK
11/12/2011 12:23 2 Coupon 6%
11/12/2011 12:23 2 Maturity 15-Mar-15
11/12/2011 12:23 2 CouponFreq 2
Хотя большинство финансовых инструментов не изменяют свои свойства, этот метод позволяет легко изменять экзотические деривативы, которые имеют барьерные триггеры, поскольку SecurityType можно изменить позднее, когда триггерное событие изменит характеристики безопасности. Этот метод также сохраняет «старые» характеристики секьюрити, которые сохраняются (UpdateDate определяет дату вступления в силу изменения данных секьюрити). Единственная проблема в этом заключается в том, что нужно будет создать запрос сводного типа, в котором отдельные имена атрибутов затем будут транспонированы в имена столбцов новой сводной таблицы. (Я не уверен, что является правильным термином, но назовем его надувающим данные).
Это проблеск того, как я вижу второе решение.
Name Ticker SecurityType SecurityID Currency Country
--------- --------------- ------------ ---------- -------- -------
HSBC Plc HSBA LN Equity Equity 1 GBP UK
Если AttributeName являются общими для всех ценных бумаг (имя, тикер, валюта), эти столбцы будут храниться в таблице SecurityMaster. Там, где инструменты имеют «особенности», будет каскадное обновление таблицы, в которой будут храниться конкретные детали контракта (например, SecurityBond, SecurityEquityFuture, SecurityEquityOption, SecurityInterestRateFuture, ...)
Надеюсь, вы сможете увидеть 2 парадигмы. Первый стол очень компактен и легко вмещает любую охрану. Единственная проблема, связанная с 1, состоит в том, что нужно будет создать код таблицы Dynamic Pivot, который по существу создает отдельные таблицы SecurityType, которые будут создаваться в соответствии с парадигмой 2.
Любые комментарии / указатели будут приветствоваться и приносить извинения, если что-то неясно (или если я не использовал формальную терминологию БД). Особенно, если у кого-то есть Pivot-код для перехода от парадигмы 1 к парадигме 2.
Большое спасибо и наилучшие пожелания,
Берти
постскриптум Опыт работы: 2-3 месяца работы с Sql Server Express (в компании без инженеров программного обеспечения).