相关疑难解决方法(0)

你应该在哪里定义外键?

在数据库中定义外键还是在应用程序的代码部分中定义外键更好?

foreign-key database-design best-practices

21
推荐指数
4
解决办法
7783
查看次数

在实际实践中不使用外键约束。可以吗?

不使用 FK 约束是我公司的不为人知的规则。FK 约束仅在设计 ERD 时使用,在创建表时不使用。

据我的前辈说,在实际操作中,当我们处理紧急问题时,这些都是非常耗时的障碍。他说,当我们需要立即使用 INSERT/UPDATE/DELETE 语句时,约束会阻止这些语句的执行,并且在保持约束的同时编写语句也很耗时。我什至听说许多其他公司也在这样做。

虽然我有点理解这些挣扎,但我不确定这是否是一个好方法,因为它与我对 DB 的理解完全相反。这家公司也是我的第一份工作,所以我不知道其他公司是如何处理的。

实际上,您对此有何看法?这有道理吗?有更好的方法吗?其他公司在这方面的表现如何?

更新:对于韩国公司来说,这似乎是一种很常见的方法。我问了几个在别的公司工作的前辈,他们大多都说都是这样。甚至其中一个人在一家金融公司工作!有趣的...

foreign-key database-design constraint best-practices

17
推荐指数
1
解决办法
2万
查看次数

为什么要明确一个键?

我对数据库这个主题很陌生,所以这可能听起来很无知,但我很好奇为什么应该在表中明确显示一个键。这主要是为了告诉用户给定的列值(希望)保证在每一行中都是唯一的?即使没有提到它的独特性,它也应该仍然存在。

primary-key unique-constraint

15
推荐指数
4
解决办法
2431
查看次数

关系数据库中的完整性约束——我们应该忽略它们吗?

我正在与我工作的公司的开发人员进行永久讨论,因为他们说最好摆脱关系数据库中的关系强制(通过 FOREIGN KEY 约束定义)以加快大型查询并获得更好的结果表现。

考虑的平台是MySQL 5.x,没有设置FOREIGN KEY,甚至缺少相关表的一些PRIMARY KEY约束,至少对我来说是不合理的。也许他们是对的,我是错的,但我没有足够的论据来讨论这种情况。

三年来,这一直是首选方法。我是这家公司的新人(只有一个月),但是,随着产品“有效”,我对增强数据库犹豫不决;尽管如此,我注意到的第一件事是加载一个页面需要 1 分钟(是的,60 秒!)。

当前状况背后的说法之一是“非规范化”数据库比规范化数据库更快,但我不相信这是真的。

大多数相关查询都包括 JOIN 操作,这使得它们在处理大量数据(数据库包含数百万行)时运行非常非常缓慢。

通常,“CRUD”操作的处理是在应用程序代码级别实现的;例如,为了删除一些数据,让我们说TableA

  • 有必要先检查在运行,如果有排之间的一些关系TableATableB
  • 如果“检测到”所述关系,则应用程序代码将不允许删除相关行,但是
  • 如果由于某种原因应用程序代码失败,那么 DELETE 操作将“成功”,无论涉及的行和表是否存在任何关系。

你能帮我详细阐述一个好的、准确的和可靠的答案来丰富辩论吗?


注意:以前可能有人问过(并回答过)类似的问题,但我无法通过 Google 找到任何内容。

mysql normalization database-design relational-theory denormalization

10
推荐指数
2
解决办法
1717
查看次数