`
FZtree
  • 浏览: 109993 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MySQL数据库应不应该拿掉所有的外键约束?

 
阅读更多

我不太喜欢外键,
原因:
1.程序逻辑,完整性,我会在存储过程或包等地方做严谨的判断;
2.性能问题,这是我最不喜欢用的关键原因,比如一个业务流水表,频繁插入数据,如果这个表身上有3外键,那么每次插入一条,就必须对这3个外键对应的3个表做相应的查找判断有无对应数据,如果这3个表也很大,那就这3个表的判断时间就很常,虽然外键指向的关联表的字段肯定是索引,但是我觉得很多时候,这样的判断本来就在程序里控制好了,通过外键再判断一次,就是降低性能;而且其实有的地方判不判断也无所谓的,但是用了外键,就必须化时间去判断,无论oracle内部多么优化外键对于数据的检索速度,它总是一个不小的消耗;
3.维护麻烦,很多公司的软件都是定制的,这种定制的东西,随意性相对较大,项目开发实施过程中,需要经常对表修修补补;还有就是业务逻辑有bug或者其他情况,需要经常手工维护数据,有错综复杂的外键关联着,很是麻烦;
4.不灵活,外键定死了两个表之间数据的先后生成关系,最常见的是单据主从表,有的时候,在生成单据的时候,是先生成明细,再生成主表;如果钉死了外键,这个就没法实现;
当然有些关键的业务,确实需要外键;
为什么说这个话题,我今天把项目数据库建立好后,用了很少的外键,周围同事说数据不严谨,需要错综复杂的那些相同字段名的外键都建立起来,这个我很不情愿;
比如这个数据库一共100个表,按他们的想法,外键就可能有300个;我晕,太教条主义了;
如果说让我建300个索引,我很乐意,因为提高运作效率的,而外键只是检测严谨性,对数据库的运作效率只有降低,没有任何提高的可能性;

 

http://segmentfault.com/q/1010000000401455

 

分享到:
评论

相关推荐

    MySQL删除表的时候忽略外键约束的简单实现

    在MySQL数据库管理中,删除表是一项需要谨慎操作的任务,尤其是当表之间存在外键约束时。外键约束是关系数据库中确保数据完整性和一致性的重要机制,它不允许在父表(引用其他表的字段的表)中删除那些已被子表引用...

    禁用启用所有外键约束.tst

    在数据库管理中,外键约束是关系...总之,禁用和启用外键约束是一项常见的数据库维护任务,但在进行操作时应遵循最佳实践,确保数据完整性和一致性。了解不同数据库系统的操作方式可以帮助我们更有效地管理数据库。

    mysql数据库设置外键应该注意的几点

    MySQL的MyISAM存储引擎不支持外键约束,因此在设置外键时,需要确保使用支持外键的存储引擎,如InnoDB。 8. **外键约束检查时机**: 默认情况下,MySQL在`DEFERRED`模式下,只在事务提交时检查外键约束。若需在...

    数据库外键约束方式

    数据库外键约束方式 外键约束是数据库中实现参照完整性的重要手段,它能够确保数据的一致性和正确性。外键约束方式有多种,包括级联、置空和禁止三种方式。 级联(Cascade)方式是指当主表中的记录被删除或更新时...

    MySQL的约束-外键约束

    在数据库设计中,数据完整性是至关...总结,外键约束是MySQL数据库设计中的关键组成部分,它保证了表之间的关联性,维持数据的完整性和一致性。理解并正确使用外键约束,对于构建健壮、可维护的数据库系统至关重要。

    动力节点MySQL数据库入门视频教程-096-外键约束

    动力节点的杜老师讲述的mysql教程,详细讲解了MySQL的相关知识,包括MySQL概述,MySQL应用环境,MySQL系统特性,MySQL初学基础,MySQL管理工具,如何安装MySQL及MySQL新特性,通过观看可掌握MySQL全套知识。

    国家开放大学 MySQL数据库应用 实验训练1 在MySQL中创建数据库和表

    "国家开放大学 MySQL数据库应用实验训练1 在MySQL中创建数据库和表" 本实验训练旨在让学生掌握 MySQL 中的数据库和表的创建过程。 MySQL 是一种关系型数据库管理系统,广泛应用于各种领域。为提高学生的实践能力,...

    头歌MySQL数据库实训答案有目录.pdf

    本资源提供了 MySQL 数据库实训答案,涵盖了数据库定义、表操作、约束应用等多方面的知识点。 数据库定义和操作 在 MySQL 中,创建数据库使用 `CREATE DATABASE` 语句,例如 `CREATE DATABASE MyDb;`。创建表使用 ...

    MySQL数据库基础与实例教程所有资源

    MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于学习的特性深受开发者喜爱。本教程将全面介绍MySQL的基础知识,并通过实例帮助你掌握其核心操作。 首先,我们来了解一下MySQL的基本...

    MySQL数据库PDF文档

    本文档主要介绍了MySQL数据库的基本概念、数据类型、SQL语言、约束条件、查询语言、聚合函数、子查询和多表查询等知识点。 数据库基础概念 在介绍MySQL数据库之前,首先需要了解数据库的基本概念。数据库是一个...

    数据一致性守护者:MySQL外键约束深度解析

    ### 数据一致性守护者:MySQL 外键约束深度解析 #### 引言 在现代软件开发中,特别是Web应用程序领域,数据库扮演着极其重要的角色。其中MySQL作为一种流行的关系型数据库管理系统(RDBMS),因其开放源代码特性、...

    MySQL外键约束常见操作方法示例【查看、添加、修改、删除】

    在MySQL数据库中,外键约束是关系型数据库中用于维护数据完整性和一致性的重要工具。它确保了一张表中的数据与另一张表的数据之间的关联性,通常用于实现一对一、一对多或多对多的关系。本篇文章将详细讲解如何进行...

    数据库外键约束的作用与实现

    外键约束是数据库中维护数据完整性和一致性的重要工具。通过合理使用外键约束,可以有效地管理和维护数据库中的数据关系。本文详细介绍了外键约束的作用、实现方法和性能优化策略,并提供了代码示例,希望能帮助读者...

    pbootcms数据sqlite转mysql数据库

    4. **索引和约束**:在MySQL中创建索引和外键约束可能需要额外的语法调整。 5. **性能优化**:MySQL提供多种性能优化策略,包括存储引擎的选择(如InnoDB),索引设计,查询优化等。 6. **安全考虑**:在迁移过程...

    MySQL数据库相关课件PPT

    MySQL支持多种存储引擎,例如InnoDB(支持事务处理、外键约束)、MyISAM(快速读取,不支持事务)、Memory(数据存储在内存中)等。选择合适的存储引擎对数据库性能有很大影响。 通过这些课件,学习者可以系统地...

    Mysql数据库文档生成工具(含使用说明)

    MySQL数据库文档生成工具是一款高效实用的软件,专为MySQL数据库设计者和开发者提供方便,能够自动生成详尽的数据库设计文档。这款工具极大地简化了在项目验收阶段对数据库设计进行整理和呈现的工作流程,尤其适合...

    mysql数据库实验报告 数据表的操作

    2. 查看数据库:使用`SHOW DATABASES`命令列出所有已创建的数据库。 3. 删除数据库:使用`DROP DATABASE`命令删除指定的数据库。 4. 使用数据库:通过`USE`命令切换到需要操作的数据库。 二、表结构创建与修改 1. ...

    MySQL数据库应用与开发实训报告.doc

    通过设置主键、外键约束等方式,可以强制执行实体完整性、参照完整性和用户定义的完整性。 【数据检索】部分主要讲解了使用`select`语句进行单表查询、多表连接和子查询的操作。`select`语句是数据库操作中最常用的...

    VB6.0连接MySQL数据库

    在信息技术领域,VB6.0(Visual Basic 6.0)是一个经典的编程语言版本,而MySQL则是一个流行的开源关系数据库管理系统。在编写应用程序时,经常会涉及到数据库的操作,比如查询、更新、删除和插入等。本文将详细地...

Global site tag (gtag.js) - Google Analytics