数据库设计问题

时间:2011-04-21 10:32:19

标签: database-design

我正在开发医疗应用程序,用户需要注册(除其他外)患者临床症状和眼科测量。

临床病史由患者的病史和家族史组成。它们都可以包括一般病理学(前糖尿病)和特殊病理学(前青光眼)。 我被要求以两种方式对病理进行分类:如果它是一种特定的病理学,它必须定义与眼睛相关的解剖部位;如果它是一般病理学,则需要定义病理学的描述。 最后,我要区分眼科测量是指右眼还是左眼。

现在我做出了以下决定,但我不确定他们,我想有别人的意见:

临床病史是一个表格,其中包含患者的fk并且包含日期列“最后更新日期” 病理学被分组为单个表,其中包含数字pk列,名称列,描述和标记是/否,其指定它是专门的还是一般的病理学 临床病史和病理学通过一个表进行绑定,该表具有由临床病史上的fk和fk至patology表组成的主键,以及标记是/否的标志,其定义了它是患者病理学还是家庭病理学。

眼科测量与检查表相关,每次检查可包含0-2条记录(左眼,右眼或无眼睛检查),再次用眼睛识别眼睛。它的pk是由检查台上的fk和旗帜组成的。 最后,由于测量始终存储相同的值类型(浮点)和常用的测量集(类型),具体取决于所使用的仪器(轴,圆柱......),我添加了:m(其中n是o- 2)表格由眼科学测量pk和仪器类型组成的pk

我感到不舒服的标志,我必须推断和分组数据,另一方面,我没有发现任何比重复表更好的反映我已经给出的描述(前两个病理表,不同之处仅在于列的名称:“解剖部分”或解释)

我想就此设计中的任何缺陷及其改进提出一些意见,建议和建议

提前谢谢

2 个答案:

答案 0 :(得分:2)

您正在使用哪些医疗系统标准,分类方案和元数据模型?我假设您知道这类事情有一系列国家和国际标准:例如: SNOMED,ICD,HL7,HIPAA。如果您首先遵循标准中定义的分类方案,代码和元数据,那么这应该是开始数据模型的良好基础。

答案 1 :(得分:0)

这是一个相当普遍的问题 - 它有点类似于“如何在我的数据库中建模面向对象的继承概念?”问题,Craig Larman的书“应用UML和模式”对待的确非常好。

您有选择权 - 在名称反映业务域的特定表中对业务域进行建模没有任何内在错误。特别是对于长寿命的应用程序,尽可能清晰地减少错误和疯狂。

如果我理解你的问题,“专门的病理学”与“一般病理学”有不同的属性 - 我肯定会将它们建模为两个独立的表格。

对于你的“考试”表,我会考虑如下:

Table: examinations
ExaminationID
LeftEyeExaminationID - FK to EyeExaminations table
RightEyeExaminationID - FK to EyeExaminations table

Table: eye_examinations
EyeExaminationID
Value 

至于旗帜 - 真实,讨厌,容易出错。大多数数据库允许您定义“类型”,它至少将标志抽象为更易于理解的内容,就像常量类似于C语言一样。