Funds
またはAssets
テーブルを作成するときに、同じ問題が発生することがよくあります。すべてがAssets
の識別子と同じではありません。データベースデザイン:複数の潜在的な識別子
例:70%がISIN
で、一部にはブルームバーグコードがあり、一部には両方があり、一部はローカルアカウンティングパッケージから来るもののみなどがあります。
一般私は一度開発者がに代替キーを移動したようなデータベースを継承
そのテーブルサロゲートPK、プラスすべての可能な識別子の異なるフィールド(Bloomberg, ISIN, AccoutingID
、..)を与えることによって終わります子テーブル[Identifiers]は、可能なすべての代替キーを事前に知らなかったという事実に基づいています。
この識別子テーブルはこのように見えた:
AssetID
(サロゲート1)IdentifierType
(例えば:ISIN)IdValue
最善の解決策は何ですか?
私はいくつかのNullを持つリスクがあっても、ISINはISINであり、Fund
のよく定義された属性であるため、最初の(単一テーブル)が最適だと思います。
+1将来の校正用です。私は外部識別子を主キーとして信頼しません。他の誰かが自分のコントロールを持っているなら、価値を残してシステムを安定させ続ける意欲はありません。複数の外部識別子を分離することで、将来の変更に柔軟に対応しながら、簡単で一貫性のある検索が可能になります。 –
ええ、私は全く同意します。関連するエンティティに識別子を入れて記述されたデノルマリズムのタイプは、おそらく変更されないことがわかっている場合にのみ、またはエンティティとの特異関係を使用する必要があります。 – dougajmcdonald
@Joel Brown:ソリューション1(単一テーブル)は、外部識別子をPKとして使用することを意味しません!私はサロゲートPKを使って言及しました。 –