`
RyanPoy
  • 浏览: 50466 次
  • 性别: 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  
不建任何外键和存储过程与触发器之类的非通用约束

相关推荐

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

    项目中需要把一个数据库的部分表插入到另外一个数据库,设计到外键约束,写了一个程序对主表子表进行排序,插入的时候再也不用去考虑外键约束问题了

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

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

    MySQL外键约束的实例讲解

    MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化。从这个特点来看,它主要是为了保证表数据的一致性和完整性的。 对于两个通过外键关联的表,相关联字段中主键所在的表是主...

    简单图书管理系统数据库设计(MSSQL)

    在学校做课程设计时设计的简单的图书管理系统的数据库设计,表总量不是很多,里面的SQL是MSSQL...为方便理解基本构成,看看中文的容易,因表之间有主外键关系,故建表的顺序不可随便更改,如果要更改,请取消外键约束。

    数据库SQL语句讲解.pptx

    建立数据库表之间的主外键关系是为了维护数据库的哪种完整性? 年龄信息、性别信息分别采用哪种数据类型存储? 限制年龄在18-40岁之间的检查约束表达式如何写? 完整地设置数据库表的一个字段需要哪几个步骤? ...

    数据库系统概论(王珊第五版)数据库实验9.doc

    掌握主键约束、外键约束及check约束的用法; 2. 掌握默认值约束和默认值对象的应用; 3. 掌握用触发器实现参照完整性的方法。 二、实验学时 2学时 三、实验要求 1. 了解约束、默认值; 2. 了解触发器的定义方法; 3...

    计算机病毒与防护:数据库基础.ppt

    物理独立性 逻辑独立性 数据的完整性约束 实体完整性(通过主键约束条件) 参照完整性(通过主外键约束条件) 用户自定义完整性(通过CHECK子句) 数据由DBMS统一管理和控制 查询引擎、事务控制、数据存储模块/组件 ...

    数据库完整性实验-完整代码.rar

    (1)分别定义ScoreDB数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束; (2)往student表插入一条跟已有的学号相同的学生数据,验证实体完整性约束; (3)向score表中插入一条数据,其中数据中的...

    使用Visio进行数据库设计.doc

    在表Class和Student之间建立外键 将"关系"从左边拖到右边空白区,实心箭头放在主表Class表上,另一头放在从 表Student表上,VISIO会自动在主表和从表选择相关的字段。 图 7 "返回页首 " " " "[pi" " "c] " 4、建立...

    数据库物理设计(1).docx

    l 在经常用于连接的列上建立索引,即在外键上建立索引。 l 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。 l 在经常需要排序的列上建立索引,因为索引已经排序,这样查询...

    教室管理系统数据库系统设计

    2.2.1能够存储一定数量的教室信息,并方便有效的进行相应的教室如何分配和管理,这主要包括:  1) 教室信息的录入、删除及修改。...可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。

    数据库五大约束使用方法

    五大约束  —-主键约束 (Primay Key Constraint) 性,非空性 ...  —-外键约束 (Foreign Key Constraint) 需要建立两表间的关系并引用主表的列  五大约束的语法示例  —-添加主键约束(将s

    工厂数据库管理系统.doc

    三、设计内容 1将概念模型转化为关系模型 从E- R图中可以看到有6个实体,所以我建立了6个实体关系表,并且把实体键作为表的关键字 ,4个一对多的联系表,在建立关系模型的过程中,我是把一这边的实体键放到多这边做...

    数据库资料

    主键约束、外键约束、检查约束、默认约束和唯一性约束(唯一性约束将在后续课程中使用SQL语句实现)总结创建数据库表需要:确定表的列名、数据类型、是否允许为空,还需要确定主键、必要的默认值、标识列和检查约束...

    数据控件及其应用

    建立数据库时同时注意主外键的相互参照性。 2.根据实验设计需要在窗体上放上若干所需的标签控件,文本框控件,图片框,命令按钮等,并设置各控件的必要属性值。 3.在窗体适当位置放置一个数据控件(Data),首先...

    数据库管理规范.doc

    【强制】所有的MySQL数据库除历史原因外,都必须采用UTF8编码 【建议】一个表的某列与另一表有关联关系的时候, 请在应用程序维护外键关系,如果在数据库建立外键约束请遵循以下几点: 尽量少使用外键,在高并发下...

    数据库系统原理实验.docx

    要求全部用约束命名子句实现,主码约束也要用约束命名子句实现,列信息见之前例子 修改表student中的完整性约束,去掉对性别的限制,并将对年龄的限制由小于30改为小于40 5.触发器 触发器可以看成是一类特殊的存储...

    (mysql面试题)MySQL中的索引、主键和外键的概念及其作用及代码展示.txt

    1. 索引(Index): 索引是数据库中用于提高查询速度的数据结构。通过使用索引,可以快速定位到表中的特定行,而无需扫描整个表。索引可以基于一列或多列创建,根据... - 确保数据的一致性和完整性,通过外键约束可以

    mysql数据库的基本操作语法

    注意:外键约束的参照列,在主表中引用的只能是主键或唯一键约束的列,假定引用的主表列不是唯一的记录, 那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。 创建外键约束: 主表 create table ...

    国科大数据库提纲答案

    主码 Ks 相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中每个元组在 F 上的值必须为:或者取空值(F 的每个属性值均为空值);或者等于 S 中某个元 组的主码值。 用户定义的完整性指数据间应满足的语义...

Global site tag (gtag.js) - Google Analytics