本人it从业2年,以前以java开发为主,现在的公司做通信行业,以数据处理为主,包括我以前,现在的公司开发的时候建表是从来不用主外键的,但上天我一同学在跟我争论在开发的时候到底要不要用主外键,我竟说不出个靠的住的理由,特来请教大家。
1.主外键到底该不该用?
2.用它为什么?
3.不用又为什么?
1.主外键到底该不该用?
2.用它为什么?
3.不用又为什么?
解决方案 »
- Oracle 复杂sql 语句,在线等.....
- 关于很简单的sql查询结果讨论,欢迎高手来看
- oracle变量问题,请老大帮忙翻译一下吧,我很弱,可怜死了。
- 掉电后出现错误ora-01033:oracle initialization or shutdown in progress
- 各位大哥,看看怎样把这种语句聚合
- oracle中复制Table的问题
- distinct搞不懂的问题,请指教!
- ********如何在oracle判断一个变量是否为整形(number)?~********
- oracle报表是怎样运行的?
- 急!!求助!!oracle11g rac 总是有Fatal NI connect error 12170 怎么解决
- oralce 乱码的恢复
- 关于sql统计
理由是:
1、主键是一个关系表数据完整性的体现。
2、主键是表中记录唯一性的保证。
3、可能跟某些DML操作带来方便和效率提升。
4、某些WEB框架需要每个表都有主键。二、个人较少使用外键。
理由是:
1、会消耗一部分性能,如果处理不好会带来性能问题(如:未在外键上建立索引)。
2、平时手工处理一些数据,可能带来麻烦(如表上有较多外键,且不清楚主外键之间的关系)。
3、一般在中间层可能都会写一些业务逻辑,所以外键显得有点多余。
如果你的公司没有关于数据库设计方面对于遵循的范式有明确的要求,如果要求第二范式以上就用主键,否则就可以不用呗.
关于数据库范式的定义说明:
构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、...其中第二范式要求是表必须有主关键字
如果没有索引
数据量很大的情况下select也会特别慢所以这个要不要用就取决你是做什么操作比较多
而且是对那个操作的效率要求比较高