以下の表モデルは、最初の検査時に患者が提供する情報を保存するために患者に提供する実際のフォームのデザインです。この情報を格納するデータベース オブジェクトを設計/モデル化するよう求められています。基本的に、この画像の左端のフィールド (「主訴」、「後部」など) が属性であり、表の列になると判断しました。チェック ボックスは、これらのテーブルの実際の値です。すべての列に複数の値を指定できます (つまり、列ごとに複数のチェック ボックスをオンにできます)。
私は基本的に2つのアプローチを考えました(上に示したよりも多くの列があることに注意してください。例を示すために設計しようとしているテーブル全体の一部のみを表示することにしました):
1) 各属性の可能な値ごとに列を持つテーブルを 1 つ設計します。
長所と短所(私の意見では):
これにより、設計している画面のデータをこのテーブルから簡単かつ簡単に選択して保存できます。
テーブルは非常に幅の広いテーブルになります (ほぼ 200 列が含まれます)。
画面/テンプレートに変更があった場合に問題を引き起こす大きなテーブルを 1 つ作成することは、非常に基本的なデータベース設計の原則に違反していますか?
2) すべてのチェック ボックスをコード テーブルにします (基本的に、これらは独自のエンティティになります)。
その場合、各属性 (後部、前部) の相関テーブルを作成し、メイン テーブルの行を各列の各相関テーブルの複数の行に関連付ける必要があります。
これにより、複数のコード テーブルと、列ごとに 1 つの相関テーブルが作成されます。(これまでに 18 個の相関テーブル)
この設計に従うと、最初の試験の全体像を示すために、ここに含まれる 18 以上のテーブルからデータを選択する必要があり、それらを更新することを忘れてしまいます。
シンプルなので最初の解決策に傾いていますが、
2番目の解決策は複雑であり、列/属性(後部、前部など)をエンティティに変換して相関テーブルに変換することにより、データベース設計の非常に基本的な原則に違反していると思いますが、これらは実際には属性であり、列になります。完全な試験画像を表示するには、少なくとも 18 のテーブル間で結合する必要があります。
ここで私のジレンマを思い描いていただければ幸いです。このオブジェクトを適切に設計する必要があり、上記の 2 つのアプローチしか考えられません。決定を下すには助けが必要であり、私には別の側面があるかもしれません。考慮もしていません。誰かが以前にこのようなことをしたことがあるといいのですが、私は彼らとこれについて話し合うことができます.
残念ながら、このデータを表示する画面がどのように見えるかという点で、私が話していることをよりよく理解できる画面の画像を投稿することはできません。言葉で絵:
初診台(メインテーブル)
attributes/columns possible values
posterior class1 class11 crowded rotated
anterior overbite open bite upper lower
erosion spaced abraded fractured discolored
bleeding normal light moderate advanced