精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-15
需要权衡,不一定就不能用或一定要用。如果对性能影响不大,而可靠性要求又高的话,还是加上外键更好些。
代码控制也没有问题,但是写代码的时候就确实要有整体意识 |
|
返回顶楼 | |
发表时间:2011-04-16
表列与列之间数据关联,但不建FK
|
|
返回顶楼 | |
发表时间:2011-04-16
海量数据存储有搞头啊~DB2与Oracle的xmltype不知道有没有搞头,相当于no-sql了是不是?
|
|
返回顶楼 | |
发表时间:2011-04-16
在高性能大数据量的系统中,用外键是自讨苦吃。
|
|
返回顶楼 | |
发表时间:2011-04-16
kimmking 写道 xsnxj 写道 表间有联系可以防止出错和乱引用(开发人员),表间无联系可以随意修改和执行具体没有定义哪种的好坏,一般是系统设计员制作的会带上表间联系,相反是临时应用就会出现无表间联系的情况,具体看需求
表有fk的关联,也就有了约束, 优点,数据的一致性, 缺点,插入删除、备份迁移的问题,性能,等等 数据的一致性一般都是要保证的,不用库的关系的话,需要程序里自己去保证。 这个跟 identity字段有点类似,数据库支持identity/increment或者sequence, 再或者不用数据库的,自己写个identity的机制。 具体根据需求来分析 同意该说法 |
|
返回顶楼 | |
发表时间:2011-04-17
pengmj 写道 在高性能大数据量的系统中,用外键是自讨苦吃。
性能再高也不过高在一小部分,还有不用外键数据怎么检查。完全靠程序员的自我意识? 用外键有时候确实是比较烦,但是这个对高性能有什么影响??? |
|
返回顶楼 | |
发表时间:2011-04-18
不用键啊不用键~~~
|
|
返回顶楼 | |
发表时间:2011-04-18
最后修改:2011-04-18
aa87963014 写道 pengmj 写道 在高性能大数据量的系统中,用外键是自讨苦吃。
性能再高也不过高在一小部分,还有不用外键数据怎么检查。完全靠程序员的自我意识? 用外键有时候确实是比较烦,但是这个对高性能有什么影响??? 数据怎么检查,靠文档好不? 数据对不对,测试team得给力,相对于业务逻辑的错误数据,违反关联约束的情形也算不得什么了。 过多的关联约束很可能大幅降低开发的效率。以我所在项目为例,开发数据库靠一个maven-carbon5 的project来维护,包括建表、插入初始数据、虚拟运行时数据、建立索引等等都由包含在carbon5 project内的一系列SQL文件里。每天早上的例行公事就是svn更新carbon5 project,然后运行重建开发数据库。一般来说需要增加一个什么表,即使是一个关系节点,也可以简单地将相应DDL和虚拟数据append到项目的SQL文件序列尾端。一旦因此更新闹出了什么问题,只需删除末尾的那个SQL文件即可回滚。如果表之间都采用外键约束,那么作为关系节点的新表就需要嵌入到某个较早的SQL文件中,并且那个较早文件的其它部分(如插入语句的顺序)也很可能需要修改以满足外键约束,这种事多起来,大家都死定了,虽然有svn的比较功能,追溯起来也会很麻烦的,吃饱了撑着么。 至于外键对性能的影响,前面有人说的很清楚了,约束是什么,就是随时检查你插入的数据对不对。怎么检查,如果是唯一键约束,那每插入一条记录,整个表在这个column上的值都会被扫一遍,以确认新加入的数据并不违反这一约束,难道这种扫描不耗费数据库的性能资源? btw,我的项目的所有表,除了主键没有任何其他约束。 |
|
返回顶楼 | |
发表时间:2011-04-18
以前分析过索引到底性能冲击是什么部分
数据量大,大到什么程度 不受保护的数据是很危险的雷,尤其是表间关系复杂的情况,做做报表就算了,如果你的关键业务依赖于此,还是自求多福 |
|
返回顶楼 | |
发表时间:2011-04-19
F**K小测验,唉,刚开始也用外键,后来,慢慢的就全删了.
|
|
返回顶楼 | |