首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL表设计的良好实践

MySQL表设计的良好实践
EN

Stack Overflow用户
提问于 2016-01-08 09:37:47
回答 2查看 60关注 0票数 1

我目前正在从事一个保健项目,而我对DB不太熟悉。由于DB是该项目的基础,所以我仍在努力工作。

这是我的问题。根据我的经验,设置外键FK是数据库设计的良好实践。然而,在部署了OpenEMR (一个开放源代码的病人概要系统)之后,我看到创建了几十个表,而其中没有一个表具有FK,甚至从patient_datapatient_profile都没有。

有什么原因吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-01-08 09:50:18

数据库OpenEMR的创建脚本使用MyISAM作为存储引擎。MyISAM本机不支持FK (阅读http://dev.mysql.com/tech-resources/articles/mysql-enforcing-foreign-keys.html),但InnoDB支持(http://dev.mysql.com/doc/refman/5.7/en/ansi-diff-foreign-keys.html)。

因此,这只是与开始时的发动机选择有关。

票数 2
EN

Stack Overflow用户

发布于 2016-01-08 09:57:14

我们没有在其中一个系统中使用外键的一个原因是,我们从一个有点不可靠的源系统中导入数据。源系统负责维护系统的完整性。

但有时却失败了。通常情况下,这对我们的系统来说并不是灾难性的,所以我们仍然可以导入数据。通常情况下,我们导入的文件是无序约束的,因此我们可能首先得到病人日记记录,几分钟后得到病人自己。

把这两点加起来,我们就知道了:

  1. 在大多数情况下,我们的系统可以在数据库约束失败的情况下工作。
  2. 无论如何,我们对诚信不负责任。

因此,只要继续使用受约束破坏的数据库(=不添加外键)运行我们的系统就没有什么坏处了,如果由于某种原因失败了,那么我们就不能修复完整性。

人们可能会问,为什么源系统不能只修复其约束问题,这将是一个完全有效的问题。不过,这个问题是经济社会的,不是技术性的,不适合堆叠溢出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34673701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档