本人it从业2年,以前以java开发为主,现在的公司做通信行业,以数据处理为主,包括我以前,现在的公司开发的时候建表是从来不用主外键的,但上天我一同学在跟我争论在开发的时候到底要不要用主外键,我竟说不出个靠的住的理由,特来请教大家。
1.主外键到底该不该用?
2.用它为什么?
3.不用又为什么?

解决方案 »

  1.   

    一、需要主键。
    理由是:
    1、主键是一个关系表数据完整性的体现。
    2、主键是表中记录唯一性的保证。
    3、可能跟某些DML操作带来方便和效率提升。
    4、某些WEB框架需要每个表都有主键。二、个人较少使用外键。
    理由是:
    1、会消耗一部分性能,如果处理不好会带来性能问题(如:未在外键上建立索引)。
    2、平时手工处理一些数据,可能带来麻烦(如表上有较多外键,且不清楚主外键之间的关系)。
    3、一般在中间层可能都会写一些业务逻辑,所以外键显得有点多余。
      

  2.   

    这个要看你所在的公司的生产流程是不是有规定:
    如果你的公司没有关于数据库设计方面对于遵循的范式有明确的要求,如果要求第二范式以上就用主键,否则就可以不用呗.
    关于数据库范式的定义说明:
    构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、...其中第二范式要求是表必须有主关键字
      

  3.   

    没有主键的话怎么确保行之间数据的不同怎么和其他表进行关联
    如果没有索引 
    数据量很大的情况下select也会特别慢所以这个要不要用就取决你是做什么操作比较多 
    而且是对那个操作的效率要求比较高