外码的概念,多人学数据库时总是一头雾水。尤其像学生表里的专业号
,和专业表里的主码对上了,其实它就是外码。嗯,外码说白了就是用来“搭桥”的字段,方便不同表之间建立联系。你只要记住:它不是多余字段,是数据库设计里蛮关键的一个纽带。
外码的设置其实挺常见的,是当你想让两个表“认识彼此”的时候。比如学生表要知道每个学生是哪个专业的,那专业号
作为外码就挺合理。这样查数据就方便多了,查专业名时不用硬写死,直接连专业表查一波,简单清晰。
要注意的是,外码跟主码的关系不是单纯的复制,背后牵扯到参照完整性。比如主码如果改了,外码也得跟着改,不然数据就乱套了。关于主码修改的策略,可以看看这篇文章关系数据库主码修改策略与参照完整性维护,讲得还挺细。
外码这个点,不是复杂,但确实容易被忽视。你想想,如果忘了设置外码,学生表和专业表之间就断联了,查数据就得绕圈子,效率低不说,还容易出错。建议你建表时想清楚主外码的设计,后期维护会省不少麻烦。
如果你对关系模型感兴趣,也可以看看关系数据库的关系数据模型优势和关系数据库优势浅析,算是对这个话题的补充。
嗯,还有 SQL 语法方面的事也别忽视,外码设置和删除都得写 SQL,尤其是主码被修改后的更新操作,可以参考SQL 语言基础被参照关系中主码修改的策略,写得比较实在。
如果你正折腾关系型数据库,外码的用法建议早点搞清楚。逻辑理顺了,数据之间的关系一目了然,查得快、改得稳,开发起来也省心。