例: 有两张表,分别是员工表 和 部门表。
方案1:员工表中,存在一个部门ID,用于关联到部门表中对应的数据。(个人倾向)
方案2:创建第三张表,部门员工表,里面只有两个字段,一个是员工ID,一个是部门ID,用于记录员工与部门之间的关联。(客户倾向)
不知道方案1和方案2的优劣如何?到底要如何设计表关联方式?
两种方法都可以表达员工和部门的关系。
1、方案一,在数据关系上,仅仅是一对多
2、方案二,在数据关系上,其实是多对多。兼容了一对多的情况。
可以粗略理解为:多对多的情况下一定选择关系表形式,一对多的关系根据实际业务选择。(可忽略)
因此,方案二的扩展性显然要更好,这里不能用范式或者反范式来下结论。因为部门和员工之间的关系,可能以后真的就成了多对多。何况还有程序中的数据操作也表达了数据关系,因此仅仅通过数据表的结构,不能简单的得到反范式的结论。
再更进一步,在考虑到性能时,有时反范式也是需要的。比如员工部门表独立出来,可以进行表缓存,甚至进一步加载到缓存数据库中。这样员工登录时,系统可快速根据部门情况决定其权限。如果员工表非常大,每次都要进行关联查询无疑是增加了数据库的压力。这是常见的空间换时间的打法。
参考知乎文章 :https://www.zhihu.com/question/314207532
标签:关系,方案,范式,意义,数据库,员工,部门,关联 来源: https://www.cnblogs.com/heikedeblack/p/15727753.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。