牙医应用程序的数据库设计

时间:2014-02-06 23:48:14

标签: database medical

所以我正在为我妹妹做一个网络应用程序,因为她最近获得了牙科学学位。

我在数据库设计方面有点困难......

我显然应该有一个约会表(tbl_appointment),约会可能有与之相关的治疗,而且这些治疗都有不同的属性(列)。

所以我认为我应该有tbl_appointment和tbl_treatment,我不知道如何将这些表链接为具有多种治疗类型,具有不同的治疗参数并保存与预约相关的治疗数据。

您认为对此有什么好处?我已经有了一些东西,但它肯定看起来不太好,因为我最终为每种治疗类型都有一张表,我认为这不是最好的解决方案。

修改

由于这个不够清楚,这里是我的实际数据库的截图。

如果我像牙周病一样实施治疗,那么每种治疗类型最终会有20个治疗台。我想避免这种情况!

enter image description here

修改

@Ian Kenney,所以如果我得到了你的建议,那么我们讨论的数据库部分应该是这样的......

enter image description here

我是对的吗?不要注意关系类型,因为它们都是1:1,我知道我应该在那里使用一些M:N,但它只是用于示例。

2 个答案:

答案 0 :(得分:1)

各种治疗类型的一种方法是查看它们之间常见的属性,例如它可能包括:

  • 名称
  • 描述
  • time_required

这些成为tbl_treatment的列

然后使用其他(特定于处理的)属性tbl_treatment_attributes的附加表,其结构如下:

  • treatment_id
  • 属性名称
  • ATTRIBUTE_VALUE

每个处理都可以有许多其他属性,可以在tbl_treatment_defaults中管理可接受的属性(包括默认值)

  • treatment_id
  • 属性名称
  • field_type
  • 验证
  • DEFAULT_VALUE

修改

+-------------------+              +--------------------+
| tbl_treatment     |              | tbl_treatment_type |
+===================+              +====================+
|*treatment_id      |              |*treatment_type_id  |
|+treatment_type_id |<-------------| treatment_name     |
|  ......           |              | ......             |
+-------------------+              +--------------------+
         |                                   |
         v                                   v
+--------------------------+       +------------------------+
| tbl_treatment_attributes |       | tbl_treatment_defaults |
+==========================+       +========================+
|*treatment_id             |       |*treatment_type_id      |
| attribute_name           |<------| attribute_name         |
| attribute_value          |       | default_value          |
| ........                 |       | .......                |
+--------------------------+       +------------------------+

答案 1 :(得分:0)

tbl_appointment约会表应该只有约会数据和patientId(外键到您的tbl_Patient表中)

您应该有一个名为tbl_Visit的第3个表,其中包含tbl_appointment的外键。然后是另一个名为tbl_Visit_treatment的表,其中包含VisitIdTreatmentId。所以这个tbl_Visit_treatment是多对多关系表,跟踪每次访问中完成的所有治疗。

对于TreatmentType(s),它只是一个名为tbl_TreatmentType的类型表,其中包含IDNameCodeDescription字段。 TreatmentId将是tbl_Treatment表中的外键。