所以我正在为我妹妹做一个网络应用程序,因为她最近获得了牙科学学位。
我在数据库设计方面有点困难......
我显然应该有一个约会表(tbl_appointment),约会可能有与之相关的治疗,而且这些治疗都有不同的属性(列)。
所以我认为我应该有tbl_appointment和tbl_treatment,我不知道如何将这些表链接为具有多种治疗类型,具有不同的治疗参数并保存与预约相关的治疗数据。
您认为对此有什么好处?我已经有了一些东西,但它肯定看起来不太好,因为我最终为每种治疗类型都有一张表,我认为这不是最好的解决方案。
修改
由于这个不够清楚,这里是我的实际数据库的截图。
如果我像牙周病一样实施治疗,那么每种治疗类型最终会有20个治疗台。我想避免这种情况!
修改
@Ian Kenney,所以如果我得到了你的建议,那么我们讨论的数据库部分应该是这样的......
我是对的吗?不要注意关系类型,因为它们都是1:1,我知道我应该在那里使用一些M:N,但它只是用于示例。
答案 0 :(得分:1)
各种治疗类型的一种方法是查看它们之间常见的属性,例如它可能包括:
这些成为tbl_treatment的列
然后使用其他(特定于处理的)属性tbl_treatment_attributes的附加表,其结构如下:
每个处理都可以有许多其他属性,可以在tbl_treatment_defaults中管理可接受的属性(包括默认值)
修改强>
+-------------------+ +--------------------+
| 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
的表,其中包含VisitId
和TreatmentId
。所以这个tbl_Visit_treatment
是多对多关系表,跟踪每次访问中完成的所有治疗。
对于TreatmentType(s),它只是一个名为tbl_TreatmentType
的类型表,其中包含ID
,Name
,Code
和Description
字段。 TreatmentId
将是tbl_Treatment
表中的外键。