`
RyanPoy
  • 浏览: 51231 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

要不要在数据库中建立主外键约束

阅读更多
    今天发现一个问题。一个遗留的系统上,每个表都是独立的,没有主外键约束。问系统以前的开发人员。他们说,系统的主外键都是直接由hibernate控制的。
    很是不解。细问之。答曰:效率问题。
    问大家,到底需不需要建立呢?
    我先说说我的想法:
       其实,以前我的所有系统都是建立的。不过听了他的回答,感觉也有些道理。但是,如果上面没有控制得好,就会出现错误的数据。
       所以,我觉得如果系统小,就那么几十张表,业务不复杂就不需要了。系统大,表多,业务复杂那还是建立的好。
    说完我的想法,自己都感觉这个东西都没有必要发帖了。
    不过,仁者见仁,智者见智,还是想听听大家的看法。说说,大家平时怎么做的?以及为什么这么做?
分享到:
评论
10 楼 阳光晒晒 2008-12-29  
开发效率,与数据安全性的矛盾.
9 楼 only_java 2008-12-29  
mysql有外键吗?我所接触的系统基本是不建外键的,但在关联字段加索引。
8 楼 lsqlister 2008-05-11  
外键未加索引是导致死锁的主要原因,这是因为,无论是更新父表住键,或者删除一个父记录,都会在子表上加一个表锁,这就会不必要的锁定更多的行。
7 楼 rain2005 2008-05-09  
外键约束应该由应用程序来保证,有些数据库就是不支持外键的
外键不加索引的情况如果有关联查询的话会造成全表扫描啊,如果同时有批量更新操作,容易造成资源互锁。
6 楼 RyanPoy 2008-05-08  
armorking 写道
"非索引的外码是导致死锁的最主要原因"
----《Expert one-on-one Oracle》中文版p272


不知道能否解释一下这句话。谢谢!!
5 楼 armorking 2008-05-08  
"非索引的外码是导致死锁的最主要原因"
----《Expert one-on-one Oracle》中文版p272
4 楼 jjyy2008 2008-05-08  
之前做 数据分析性的系统 是没有建外键 所以使用sql查询的时候 很多时候都是外关联

后来做些小系统使用 外键

3 楼 kebo 2008-05-04  
没有主外键,
1.执行计划得不到最优的
2.数据完备难以保证, 不可保证这个数据就你一个系统用
2 楼 MarkDong 2008-05-04  
主外键我认为还是要建的,毕竟数据完备性的控制不能全部甩给开发人员,不然一个不小心就把数据完备性破坏了,到时候再想恢复,那可又是一场硬仗啊。
1 楼 xiangzhouwang 2008-05-04  
不建任何外键和存储过程与触发器之类的非通用约束

相关推荐

    数据库表排序,主表子表放置外键约束

    首先,**外键约束**是关系数据库中的一种机制,用于确保一个表(子表)中的数据与另一个表(主表)中的数据保持一致性。外键是子表中引用主表主键的一个字段,它强制了参照完整性的规则,即子表中的记录只能引用主表...

    数据库技术与应用 外键约束-A学习任务书.doc

    在数据库技术中,外键约束是一项至关重要的概念,它确保了数据的一致性和完整性。外键约束是关系数据库设计中的一个关键元素,特别是在实施参照完整性的场景下。本学习任务书将带你深入理解和掌握外键约束的应用。 ...

    在powerdesigen中建立主外键关联表

    以上就是在PowerDesigner中建立主外键关联表的详细过程。通过这个工具,不仅可以快速高效地设计数据库结构,还能生成与多种数据库系统兼容的脚本,极大地提高了数据库设计的工作效率。对于开发人员和DBA来说,掌握...

    java获取数据库主外键

    本文将详细介绍如何使用Eclipse和JDBC API来获取MySQL数据库中的表结构以及主外键信息。 #### 一、准备工作 在开始之前,请确保你的开发环境已经安装了Eclipse IDE,并且项目中已经配置好了MySQL的JDBC驱动。此外...

    oracle查看主外键约束关系

    下面将详细介绍如何通过SQL语句查看Oracle数据库中表的主外键约束关系。 首先,需要了解Oracle数据库中存储主外键约束信息的数据字典视图。在Oracle中,相关视图包括user_constraints、user_cons_columns等。其中,...

    数据库主外键详解

    数据库主外键是数据库设计中的重要概念,它们负责维护数据的完整性和一致性。下面将详细介绍数据库主外键的概念、创建方法、约束类型、操作命令等。 数据库主键 数据库主键(Primary Key)是表中的一个或多个字段...

    sql外键约束

    在SQL(结构化查询语言)中,外键约束是一种重要的关系数据库完整性机制,它用于确保数据的一致性和准确性。外键约束是两个表之间的一种关联,一个表中的外键引用了另一个表的主键,从而建立了两个表之间的联系。...

    Access中如何建立外键关系

    在数据库设计中,外键(Foreign Key)是一种关键机制,用于在两个表之间建立关联,确保数据的一致性和完整性。在Microsoft Access中,通过外键关系可以实现表之间的链接,使得一个表的数据能够引用另一个表的数据。...

    如何处理数据库中的外键

    9. **异常处理**:在编程中,需要捕获和处理外键约束失败的异常,以确保程序的健壮性。 10. **数据库设计范式**:外键是符合第三范式(3NF)和更高范式(如BCNF)的数据库设计的一部分,有助于减少数据冗余和提高...

    MySQL的约束-外键约束

    本文将深入探讨其中的一种约束类型——外键约束(Foreign Key Constraint),它是关系数据库模型中的核心概念,用于建立和维护不同表之间的关联。 外键约束允许一个表中的数据引用另一个表中的数据,这种引用关系...

    经典SQL语句大全_主外键_约束

    2. **外键约束(Foreign Key Constraint)**:用于建立两个表之间的关系,确保引用完整性。外键是指向另一个表的主键,确保插入的数据在参照表中有对应的记录。例如: ```sql CREATE TABLE Courses ( CourseID ...

    MLDN魔乐科技JAVA培训_Oracle课堂18_外键约束.rar

    在数据库设计中,外键约束是一项至关重要的概念,它确保了数据的一致性和完整性。外键(Foreign Key)是数据库关系之间的一种链接,允许在一个表中的数据引用另一个表中的数据,形成表之间的关联。在本MLDN魔乐科技...

    MySQL创建数据表并建立主外键关系详解

    MySQL 创建数据表并建立主外键关系是数据库设计中的关键步骤,这有助于确保数据的一致性和完整性。在MySQL中,主键和外键是实现这种关系的重要工具。以下是关于这个主题的详细说明: 1. **主键**: 主键是表中的一...

    数据库技术与应用 设置成绩表主键和外键约束-A学习任务书.doc

    在《数据库技术与应用》课程中,通过使用SQL Server Management Studio (SSMS) 进行实际操作,学生将能够更深入地理解和掌握如何在数据库中设置主键和外键约束。这不仅可以提高数据管理能力,也有助于理解数据库之间...

    聊聊Oracle外键约束的几个操作选项

    主外键是任何数据库系统都需存在的约束对象,从对象模型中的业务逻辑加以抽象,作为物理设计的一个部分在数据库中加以实现。  Oracle外键是维护参照完整性的重要手段,大多数情况下的外键都是紧密关联关系。外键...

    sql外键的建立文档

    当在主表中插入、更新或删除记录时,外键约束会检查从表中的对应记录,确保操作的合法性。 创建外键的方法有两种: 1. 创建表时定义外键: 假设我们有两张表A和B,A表为主表,B表为从表,A的主键是`a_num`,B的...

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

    在MySQL数据库中,外键是实现表间关系的重要机制,它确保了数据的一致性和完整性。设置外键时,有几点需要注意,以确保数据库设计的规范性和高效性。以下是对这些关键点的详细阐述: 1. **外键约束定义**: 外键是...

    总结三种MySQL外键约束方式

    在数据库设计中,外键约束是确保数据完整性的重要机制,特别是在关系型数据库如MySQL中。外键用于建立两个表之间的关联,确保一个表中的数据(外键)引用另一个表(主表)中存在的数据(主键)。本文将详细介绍MySQL...

Global site tag (gtag.js) - Google Analytics