0

データベースのモデリングについて話すのは初めてです。しかし、私は自分でできる限り多くを学ぶために最善を尽くします。したがって、私の最初の試みが次の例にとって意味があるかどうかを尋ねたいと思います。

ここに画像の説明を入力

したがって、データベースを次のようにモデル化しました。

ここに画像の説明を入力

データベースは医学に関するものです。患者の年齢に応じて投与する必要があるいくつかの医薬品があります。すべての医薬品アイテムは、1 つまたは複数のグループに属する (またはグループに属さない) ことができます。

これは、これまでに学んだことを示すための単なるテスト ケースです。だから私のスキルを向上させるためのあらゆるヒントは大歓迎です!

どうもありがとう!

4

2 に答える 2

2
  1. テーブル名はrelationtable単なるプレースホルダーですよね? 多分もっと説明的であるべきdosageですか?

  2. 年齢層が大きく異なることがわかります。一部の医薬品には、3 歳未満の子供、5 歳未満、10 歳未満などの子供には異なる規則があります。別のテーブルを作成する代わりに、2 つの余分な列 (startおよびend) を に含めるだけrelationtableです。クエリがはるかに簡単になるため、これを非正規化とは見なしません。

  3. ageとテーブルについて話しますdose- 列を取り除き、unit正規化された固定単位を使用します。年齢は年、投与量はmg。これにより、クエリがはるかに簡単になります。浮動小数点数を使用することを恐れないでください。たとえば、0.5 は 6 か月を表します。

于 2012-08-25T21:30:57.207 に答える
1

Tomaszが書いたことに同意し、追加したいと思います。

  1. リレーションテーブルが正しい方法であるかどうかは、テーブルに含まれていない知識に依存します。1つの薬が異なるグループの一部になる可能性があり、投与量がその関係に依存するのは奇妙に聞こえます。薬は異なるグループに属することができ(medicine2groupマッピングテーブルになります)、薬の年齢に応じて異なる投与量が存在することを期待します(したがって、既存の年齢と投与量のテーブルを組み合わせた、dosage4ageテーブルを取得します。その新しいテーブル薬を直接参照します)

どのバージョンが正しいかは、表だけではわかりません。

経験則として、適切な名前と概念のないテーブルが他の2つのテーブルよりも多くリンクしていると、私は懐疑的になります。それは可能ですが、どこかに隠れている概念を示唆することがよくあります。

提案されたモデルが正しいかどうかを確認するために、最初の3行のいずれかで抗生物質をSuperantibiotikaに置き換えても、表がまだ正しいかどうかをビジネス専門家に尋ねてください。もしそうなら、これは投与量がグループに依存せず、それにリンクされるべきではないことを意味するので、私が提案したモデルはより正しいでしょう。

変更されたテーブルが正しくない場合は、モデルの方が適している可能性がありますが、正しくない理由の説明については注意深く耳を傾けます。

于 2012-08-25T21:41:33.667 に答える