论坛首页 综合技术论坛

数据库处键的必要性

浏览 1773 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2009-09-10   最后修改:2009-09-10

以下是个人和一些网友的看法,希望能起个抛砖引玉的作用

1.
规范化的数据库当然需要 FK, 没有 FK 何谈规范化? NF 是已经被被证明的理论

2.
但是,理论终归是理论,NF 一个重要目标就是避免数据冗余,
当冗余不存在的时候,查询就需要更多的操作,比如需要表链接,

3.
所以了,实际应用,一般只 3NF,并且有了 非规范化 或者 逆规范化 的设计

4.
设计 规范化 的数据库很容易,但是 逆规范化 的数据不是每个人都可以设计的,
一般,跟你的 实际需求目标 紧密关联的,至少冗余问题来了,你得考虑更新策略

5.
一般 3NF 就够了,
一般小型应用,还是严格到 3NF
只有大型应用,牛人们才考虑非规范化设计
如果,你连 规范化设计 都不理解,就不要奢望 非规范化设计了,前者是后者的基础

 

6 数据库"设计"需要外键,数据库"实现"不需要外键,只在程序里实现约束,

 

这个第6点的程序实现约束,大家都有哪些作法呢,我是每次手动写代码去判断的

 

   发表时间:2009-09-10  
只是数据整合性的check放在哪里的问题。
0 请登录后投票
   发表时间:2009-09-10  
virgin key?
0 请登录后投票
   发表时间:2009-09-10  
经过几个项目,我更倾向于不建立外键约束,希望在业务层保证完整性。还有一种设想的方式,项目初期建立上外键约束,可以快速发现部分bug,项目后期取消这些约束定义。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics