При создании таблицы Funds
или Assets
, я часто сталкиваюсь с той же проблемой: не все Assets
имеют одинаковый идентификатор.Дизайн базы данных: множественные потенциальные идентификаторы
Например: 70% имеют ISIN
, некоторые из них имеют код bloomberg, некоторые из них имеют, некоторые из них имеют только AccountingID
, исходящие из местного пакета учета и т. Д.
Вообще я в конечном итоге, давая эту таблицу суррогатной PK, плюс различные поля для всех возможных идентификаторов (Bloomberg, ISIN, AccoutingID
, ..)
я когда-то унаследованную такую базу данных, где разработчик мигрировали альтернативные ключи к дочерний стол [Идентификаторы], исходя из того, что он заранее не знал все возможные альтернативные ключи.
Эта Идентификаторы таблица выглядит следующим образом:
AssetID
(суррогатной один)IdentifierType
(например: ISIN)IdValue
Что является лучшим решением?
Я думаю, что первая (единственная таблица) лучше всего, потому что, даже если я рискую иметь несколько Nulls, ISIN является ISIN и является хорошо определенным атрибутом Fund
.
+1 для будущей проверки. Я никогда не доверяю внешним идентификаторам в качестве первичных ключей. Если кто-то другой контролирует их, то у них нет мотивации, чтобы поддерживать стабильность вашей системы, оставив ценности в одиночку. Изоляция нескольких внешних идентификаторов позволяет легко и последовательно извлекать информацию, оставаясь гибкой для будущих изменений. –
Да, я полностью согласен с тем, что тип ненормальности, описанный при вводе идентификаторов в связанную сущность, должен, вероятно, использоваться только в том случае, если вы знаете, что это не изменится, или сингулярное отношение к сущности. – dougajmcdonald
@Joel Brown: решение 1 (отдельная таблица) не подразумевает использование внешних идентификаторов как PK! Я упоминал об использовании суррогатной ПК. –