Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中设计医院RDBMS?_Mysql_Rdbms - Fatal编程技术网

如何在MySQL中设计医院RDBMS?

如何在MySQL中设计医院RDBMS?,mysql,rdbms,Mysql,Rdbms,我使用过MySQL和数据库设计,就像这样 该数据库是医院的部分设计。 住院患者表中有超过1500.000份患者记录。 临床表中有15例记录。 在医生表中有25条记录。 在诊断表中有500多条记录。 输入输出条件表有10条记录 以及表事务_current中要关联的所有表。 完成后,事务移动到历史记录表 这是一个糟糕的设计吗?因为在查询选择中,需要一分钟以上才能让一名患者处于浏览模式。 如果这是最好的关系设计,那么在包含所有关系表引用的情况下,我应该如何对事务表使用select查询 谢谢你的帮助

我使用过MySQL和数据库设计,就像这样

该数据库是医院的部分设计。 住院患者表中有超过1500.000份患者记录。 临床表中有15例记录。 在医生表中有25条记录。 在诊断表中有500多条记录。 输入输出条件表有10条记录

以及表事务_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

最好对查询应用一些优化步骤

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

最好避免在where子句中进行过多比较。我相信这是你落后的地方。您可以比较具有生成索引的字段。因此,查询速度会快得多


附言:尽管有时会出现规范化,但最好还是坚持使用规范化程度较低的表单(根据经验;)

您的表设计看起来不错。它是标准化的,我不认为设计会带来任何性能问题。引擎使用的更多细节(InnoDB?),特定表的定义和现有索引将帮助其他人提供更多建议

您的查询似乎连接了4个相当小的表和两个较大的表(
patient
transaction\u current
)。因此,如果您已经按照图像显示的方式定义了外键,并且它们被索引(以及引用和引用了相同数据类型的列),那么这个查询应该会非常快


如果
患者姓名
上没有索引,则最有可能出现瓶颈。这需要对
患者
表格进行表格扫描。

尝试在dba.stackexchange.comindex中以所有p_键询问,但不以f_键询问“浏览模式下的一名患者”是什么意思?只是为了搜索还是别的?请提供Shivan的SelectQueryToothanks样品。我会在那个网站上试试。@rj45是的。用于在帐单交易中搜索和获取患者信息。嗯。。。您的意思是在事务中不将“代码”保存为“f_键”?所以在交易中,我们有这样的。。。医生的名字,诊所的名字等等?谢谢你的回答。请参考链接。。重新设计我的RDBMST非常感谢你。我明白了。见我编辑的问题。很高兴能帮助你坎德拉·普纳玛。我播下你的编辑,你得到了重点。此外,还有更多的优化技术。谷歌搜索“sql查询优化”,您会发现更多有用的提示:对InnoDB在我的所有表中都使用。所有的主键(p_键)都是索引,但不是所有的f_键。正如你写的,patient.patient\u name没有索引。我尝试为这个患者的名字建立索引,并将reduce view设置为第二个,但仍然限制了一分钟。我认为用“病人。病人姓名”作为“关键字搜索”,应该被索引。是吗?如果我在哪里修改条款会有好的结果?前任;从“事务\当前。诊所\代码=诊所。诊所\代码”到“诊所。诊所\代码=事务\当前。诊所\代码”。谢谢您的解释。您是否在
CREATE TABLE
语句中定义了外键?对不起,我迟到了。并非所有时间都在线。在事务_中,当前带有f_键的是外键。另一个是
patient.patient_名称='xxx%'
。你的意思是写病人的名字,比如“xxx%”?