• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
激情 希望 斗志昂扬
Records of growth process 专注微软技术
博客园    首页    新随笔    联系   管理    订阅  订阅

primary key and Foreign Key someCopyIdea

所谓外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
至于主键:主关键字是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。

如上可知:若name是表B的主键,由于name还是表A的外键。由上面的定义可知表B是表A的主表,表A则是表B的从表

 

 

主健、唯一性约束,可以确保该列数据的唯一
同时在查询的时候用到这些列的话,效率会高写
外键,为了保持数据库的一致性,在主键表中更新或删除,以此主键为外键的表也会随之变化等

主健 本来就有唯一性。。。。用主健就能跟银行帐号一样!!一个帐号就能知道其他的属性!!
外键 数据保持完整性!!

说到底为了性能.
所有一切都是让你的数据库操作更加快速.

 

 

今天又发现自己以前的无知,关于数据库的外键,以前我一直以为不允许为空的,今天看到一个项目中使用了空的数据库外键,很惊讶,后来才发现是自己以前错误了。数据库外键是可以为空的。

不过为空的数据跟与之相关联的表就没有关系了。一般不采用。

 

虽然一般不建议使用允许空的外键来避免null对join的影响,但事实上,允许为空的外键几乎出现在了所有的系统中,很多时候还是一种比较好的方法的

 

 

个人意见:
我一般不用主外键,感觉没有什么优点可取。。外键关联几乎不 用。我只用主键。。
有外键在维护数据库,转移,迁移数据等等特别麻烦,而且一个表的外键太多,影响性能,有了外键数据 库内部操作必能会对此外键的约束进行查询与审核。。
我设计 的库几乎没有外键

 

 

 

 

理论称实践总会有偏差的,多年经验告诉我,外键只是说明两个表存在关联,分析时可以这么写,但在表结构设计及物理设计时,如果表的数据量比较大,而且对这个表的DML性能要求非常高,建议还是不要建外键。
主键大部份情况下还是要的,因为一方面主键起到数据完整性约束作用,另外主键建好后会自动建一个唯一索引,可以达到提高单笔记录访问的性能。如果你的表不需要单笔记录访问及DML性能要求非常高,比如说一些数据仓库的事实表,那可以考虑不建主键。
posted @ 2008-12-05 21:37  贤  阅读(264)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3