数据表字段都是外键有必要建立这个数据表吗
我建立一张表,里面字段都是外键关联到其他表中的数据,那这个表还有必要建立吗?或者把这个用视图形式展示?但是插入数据时候视图又很麻烦。...
我建立一张表,里面字段都是外键关联到其他表中的数据,那这个表还有必要建立吗?或者把这个用视图形式展示?但是插入数据时候视图又很麻烦。
展开
1个回答
展开全部
一、理清哪些资料表确实需要透过主键外键来建立「相依性」。
例如像你的「负责部门ID」、「测试人员姓名ID」等等,可能就不需要弄成外键。
二、多个资料表之间,某些情况下确实需要中介资料表才能体现出关联性
举个最常见的例子:用户群组及权限,要兜出一个权限机制,至少要四个资料表,即用户资料表、群组资料表、权限资料表,以及用户权限资料表 (或者群组权限资料表),最後一个就是所谓的中介资料表。
三、中介资料表或者子资料表不一定要有外键。是否需要外键,一个最简单的认定方法,就是看父资料表与子资料表是否有共生共灭的关系。
例如:产品主表和产品明细,主表没了,明细就没有存在的意义;商品销售单,主表没了,销售明细也没必要存在。
四、不是很清楚你具体的资料结构是怎麼样,所以只能讲个概念和通则供你参考。
例如像你的「负责部门ID」、「测试人员姓名ID」等等,可能就不需要弄成外键。
二、多个资料表之间,某些情况下确实需要中介资料表才能体现出关联性
举个最常见的例子:用户群组及权限,要兜出一个权限机制,至少要四个资料表,即用户资料表、群组资料表、权限资料表,以及用户权限资料表 (或者群组权限资料表),最後一个就是所谓的中介资料表。
三、中介资料表或者子资料表不一定要有外键。是否需要外键,一个最简单的认定方法,就是看父资料表与子资料表是否有共生共灭的关系。
例如:产品主表和产品明细,主表没了,明细就没有存在的意义;商品销售单,主表没了,销售明细也没必要存在。
四、不是很清楚你具体的资料结构是怎麼样,所以只能讲个概念和通则供你参考。
追问
非常感谢您的细心回答,但是仍有疑问:还想请教您
1、为啥「负责部门ID」、「测试人员姓名ID」等等,可能就不需要弄成外键?
2、这个表的意义就是为一个系统选择不同分工的人员,系统已经存在于系统表,人员已经存在于人员信息表,所以这个分工表有必要建立吗?
3、您说的共生共灭的思想让我受益匪浅,那外表的系统不存在了这个系统分工表也就没意义了,那这样还是需要建立这个表的是吧
以上是我的理解还请多多指教!
追答
1、因为从你提供的表格根本看不出资料表之间有什麼相依性 (相依到什麼程度),所以只能这样猜测,这一点我在最後也说明了。
2、如上所言,即便看到你後来的这些描述,我还是分辨不出资料表之间的相依性到底有多紧密。以用户群组权限的例子来看,若不使用中介资料表,整个权限机制跟本无法运作。
一个用户 (或群组) 需要参照多条权限设定,一个权限设定可以被多个用户参照,甚至更复杂点的:一个用户可隶属多个群组,并且可根据所在的群组,参照到更细腻的权限设定。
除非你有把握用前端代码将这些东西兜起来,并且将这些权限关系维护妥当,那你就可以把中介资料表丢了。
3、需不需要建立中介资料表,答案都在我原先回答的内容里,上面也以用户群组权限的例子做了更深入的说明。
这些观念你消化消化吧,想明白了自然就知道该不该用中介资料表,不然我也不必特地举这些例子。若还有其它疑惑,另开专篇讨论吧。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询