如何在MySQL中设计医院RDBMS?

时间:2012-09-03 04:27:58

标签: mysql rdbms

我这样使用MySQL和数据库设计。

hospital rdbms design

该数据库是医院的部分设计。 在患者表中有超过1.500.000的患者记录。 在诊所表有15个记录。 在医生表中有25条记录。 在诊断表中有超过500条记录。 在out_condition表中有10条记录。

表transaction_current中要关联的所有表。 完成后,事务移至历史表。

这是一个糟糕的设计吗?因为在查询选择中,需要一分钟以上才能让一名患者进入浏览模式。 如果这是最好的关系设计,我应该如何使用包含所有关系表引用的事务表的select查询。

感谢您的帮助。

编辑: “对不起......我的图像设计在哪里?只有我的borwser呢?......”

这是样本选择查询

select  transaction_current.registration_number, 
        transaction_current.Date_registration, 
        patient.mr_code, 
        patient.patient_name,
        clinic.Poly_clinic_name, 
        doctor.doctor_name, 
        diagnose.diagnose_name,
        out_condition.OC_name
from transaction_current,patient, clinic, doctor, diagnose, out_condition
where   transaction_current.patient_code=patient.MR_code and 
        transaction_current.clinic_code=clinic.clinic_code and 
        transaction_current.doctor_code=doctor.doctor_code and 
        transaction_current.diagnose_code=diagnose.doagnose_code and 
        transaction_current.OC_code=Out_Condition.OC_code
        and patient.patient_name = 'xxx%'

回答: 经过先生的仔细回答。 rj45,有时不推荐任何标准化。特别是对于历史数据。如果参考表中有变化,则历史数据也将被更改。 像这样的情况...... 如果代码更改医生或删除,则记录将遵循更改历史记录。当它不在遗嘱中。它的极端,数据历史不会出来,因为关系代码没有匹配。 非常感谢@ rj45

2 个答案:

答案 0 :(得分:0)

最好在查询中应用一些优化步骤。

例如:   - 在查询中适当使用运算符EXISTS,IN和表连接

最好避免在where子句中进行过多的比较。我相信这是你有滞后的地方。您可以比较具有构建索引的字段。因此查询会更快。

P.S。 :尽管规范化有时会更好地坚持较少规范化的形式(通过经验;))

答案 1 :(得分:0)

你的桌子设计似乎很好。它是标准化的,我不希望设计出现任何性能问题。使用引擎的更多细节(InnoDB?),特定表格的定义和现有指数将有助于其他人提供更多建议。

您的查询似乎正在加入4个相当小的表和两个较大的表(patienttransaction_current)。因此,如果您在图像显示时定义了外键并将它们编入索引(并且引用和引用的列具有相同的数据类型),则此查询应该非常快。

最可能的瓶颈是patient_name上没有索引。这需要对patient表进行表扫描。