1

リレーショナルデータベースに保存したい医療情報がいくつかありますが、それを最良の方法でモデル化するのが難しいかどうかわかりません。

ここでの問題は、他のフィールドに細分化され、同時に他のフィールドに細分化されるいくつかのフィールドがあることです。

たとえば、私はこのSQLコードを持っています:

 CREATE TABLE Distribution_patterns(
              id_Distribution_pattern  INTEGER  NOT NULL PRIMARY KEY,
              LEFT_SIDE_VIEW           VARCHAR(40)  NOT NULL,
              RIGHT_SIDE_VIEW          VARCHAR(40)  NOT NULL,
              dorsal_view              VARCHAR(10 ) NOT NULL,
              ventral_ view            VARCHAR(10 ) NOT NULL,              
              CONSTRAINT uc_Info_d_p UNIQUE (id_Distribution_pattern)           
            );


CREATE TABLE lymph_nodes (
              id_lymph_nodes       INTEGER  NOT NULL PRIMARY KEY,
              MANDIBULAR           VARCHAR(40)  NOT NULL,
              scapular             VARCHAR(40)  NOT NULL,
              INGUINAL             VARCHAR(10 ) NOT NULL,
              popliteal            VARCHAR(10 ) NOT NULL,              
              CONSTRAINT uc_Info_l_n UNIQUE (id_lymph_nodes)           
            );

CREATE TABLE evaluation(
          ID_evaluation            INTEGER  NOT NULL PRIMARY KEY,
          Distribution_pattern     INTEGER ,
          lymph_node               INTEGER ,
          Musculoskeletal_system   INTEGER ,
          FOREIGN KEY (Distribution_pattern) references Distribution_patterns (id_Distribution_pattern),
          FOREIGN KEY (lymph_nodes)    references lymph_nodes (id_lymph_node),
          FOREIGN KEY (Musculoskeletal_system) references Musculoskeletal_system_parts (id_Musculoskeletal_system),
          CONSTRAINT uc_Info_evaluation UNIQUE (ID_evaluation)           
        );
  • 分布パターン
    • 左側面図
    • 右側面図
    • 背面図
    • 腹側ビュー
  • リンパ節
    • 下顎
    • スカプラリオ
    • 鼠径ヘルニア
    • 膝窩
  • 筋骨格系
    • 歩行評価
    • トロットの評価
    • 触診
      • ヒント胸部
        • 肘と前腕
        • カルポと指
      • ヒント骨盤
        • 骨盤
        • ホック
      • 特定のテスト
        • カホンテスト
        • オルトラーニテスト
        • 他の

もちろん、これはデータ全体ではありません。200のフィールドと14のカテゴリがあります。

より細分化された「筋骨格系」に対してこのアプローチを行うのは正しいですか?

この種の状況をモデル化する他の方法はありますか、またはIDが他のテーブルへのポインターを持つ他のテーブルへのポインターであるいくつかのテーブルが必要です。

「医学的評価」のためのすべてのデータを含む巨大なテーブルを提供するクエリを作成したい場合、最良のアプローチは何でしょうか。いくつかの結合がIDになりますか?

4

2 に答える 2

2

これは潜在的に大規模なデータベーススキーマであるため、筋骨格系に焦点を当てます。ただし、その前に、データベースの正規化の重要性について説明する必要があります。それは重要です!そして多くの理由で。主に、適切で正規化されたデータベースを設計することにより、データの整合性と信頼性を確保しながら、将来の問題を回避できます。「このデータベースはどのように成長するのか」、「システム、ビュー、または配布パターンをさらに追加する必要がある場合はどうなるか」などを常に念頭に置いてください。簡単な概要はここで読むことができます:http: //databases.about.com/od/specificproducts/a/normalization.htm

データベース設計へ:

冗長な列と、他の列のサブセットである列をテーブルから外して独自の列に保持する必要があります。たとえば、リンパ節の表を見てください。今から1年後に、別のリンパ節を追加する必要があることに気付いた場合はどうなりますか?または1つ削除しますか?または、クライアントから1つのノードのみを表示している場合はどうなりますか?あなたのやり方でそれをする代わりに、患者やリンパ系のようなより大きな物体(医者ではないので、答えが何であるかわからない)にテーブルを結び付けてください。または両方。例:

患者は多くのシステムを持っています(患者テーブルとシステムテーブルの間の1対多の関係)リンパシステムは多くの器官を持っています(リンプシステムと器官の間の1対多の関係)システムまたは器官は多くのテストを持っています(1対多の関係船システムとテストの間)。

例:

TablePatient

PatientId(int PK)

PatientFName(文字列)

PatientLName(文字列)

このテーブルには、個々の患者に関するデータのみを含める必要があります

TableSystems

SystemId(int PK)

SystemName(String)

SystemDescription(文字列)

このテーブルには、すべてのシステムに固有の列のみが含まれている必要があります。システムは、リンパ系、呼吸器系、排泄系などである可能性があります。

TablePatient_TableSystems

Patient_System_ID(int PK)

PatientID(int FK)

SystemID(int FK)

多対多の関係を持つことはできません。このテーブルはそれを解決します。これがなかった場合は、各患者/システムの各テーブルに冗長なレコードを保持する必要があります

TableOrgans

OrganID(int PK)

OrganName(文字列)

OrganDesc(文字列)

TableOrgan_TableSystem

Organ_SystemID(int PK)

OrganID(int FK)

SystemID(int FK)

システムと臓器の多対多を解決します

今テストのために。テストは臓器またはシステムに固有ですか?または両方?この例では両方とも言います

TableTest

TestID

TestName

TestDesc

TestCost

Tabel_Test_Stytem

TestSytemID(int PK)

TestID(int FK)

SystemID(int FK)

Tabel_Test_Organ

TestSytemID(int PK)

TestID(int FK)OrganId(int FK)

ここにはたくさんあるので、ここは立ち止まるのに良い場所だと思います。データの正規化を読み、質問がある場合は、ここに投稿してください(または私にメッセージを送ってください)。

于 2013-03-08T18:12:06.187 に答える
1

あなたは階層構造について話している。私がそれをするように頼まれたら、データと参照の 2 つのテーブルを作成します。

評価表

  • 評価ID
  • パーツ ID
  • 評価テキスト

参照表

  • パーツ ID
  • グループ ID
  • パーツの説明

参照テーブルには次が含まれます。

PartId  GroupId PartDesc
0   null    Evaluation
1   0   Distribution pattern
2   1   LEFT SIDE VIEW
3   1   RIGHT SIDE VIEW
4   1   dorsal view
5   1   Ventral view
6   0   lymph nodes
7   6   MANDIBULAR
8   6   scapular
9   6   INGUINAL
10  6   popliteal
11  0   Musculoskeletal system
12  11  Gait assessment
13  11  VALUATION OF TROT
14  11  PALPATION
15  14  TIP thoracic
16  15  Elbow and forearm
17  15  CARPO AND FINGERS
18  14  TIP pelvic
19  18  PELVIS
20  18  KNEE
21  18  HOCK
22  11  specific tests
23  22  CAJON TEST
24  22  Ortolani TEST
25  22  OTHER

これで、きちんとしたテーブルが使用できるようになりました。どのように使用しますか?もちろん、再帰的な CTE です。DB エンジンについては言及されていませんが、MySQL を除いて、ほぼすべての主要な DBMS で実行できます。このクールな機能を自分で調べるか、DB エンジンをお知らせください。この議論を続けることができます。

于 2013-03-12T01:13:09.953 に答える