1

T-SQL でのコーディングには慣れていますが、db 設計は初めてです。私は持っている

  1. PK_Department を持つ部門のテーブル
  2. PK_Loinc を使用した loinc コード/テスト情報のテーブル
  3. PK_nonLoinc を使用した非 loinc コード/テスト情報の (異なる構造の) テーブル。

(PK_Department) <--> (PK_Loinc OR PK_nonLoinc) の間に 1 対 1 の関係を設定したい

T-SQL で 2 つの FK を使用してこの関係をセットアップする方法はありますか?

そうでない場合は、LoincAndNonLoincCodes テーブルを 3 つの列でPK_union, PK_Loinc and FK_nonLoinc -- where (FK_Loinc is filled ExclusiveOR FK_nonLoinc is filled)セットアップしてから、リンクするテーブルをセットアップFK_UNIONできるFK_Departmentと思いますが、理想的には、別のテーブルを作成せずにこれを行うことができます。

4

1 に答える 1

2

各部門を特定の観測 (つまり、LOINC の「O」) に関連付けようとしていると思います。

問題は Department オブジェクトではなく、'Observation' オブジェクトにあります。Observation は型階層です。抽象的な観測は、具体的な非 LOINC 観測または具体的な LOINC 観測である場合があります。リレーショナル モデルは、型階層のモデル化には適していません。観測をモデル化するための 3 つのオプションがあります。

  1. LOINC コードと非 LOINC コードの両方を含む 1 つの観測テーブルを使用します。その場合、PK は Type 属性と Code 属性の複合キーになり、LOINC コードと非 LOINC コードの両方のすべての属性が含まれます。次に、この監視テーブルに対して 1:1 の FK を持つことができます。

  2. 非 LOINC コード用の 1 つのテーブルと LOINC コード用の 1 つのテーブル。この場合、質問で述べたように問題があります。

  3. 3 つのテーブル。1 つは観測用、もう 1 つは非 LOINC 観測用、もう 1 つは LOINC 観測用です。次に、観測テーブルに 1:1 の FK を設定します。

これは、オブジェクト/リレーショナル インピーダンスの不一致の問題の典型的な例です。

于 2013-03-28T19:07:16.813 に答える