数据库的设计问题及表间关系

我要设计个mysql的数据库,内容是有多个公司,一个公司有多个部门,一个部门对应多个公司,一个部门有多个岗位,一个岗位只属于一个部门,一个岗位有多名员工,一个员工只有一个岗位,一个员工只属于一个公司,通过公司可以查询其下面的员工和员工所在的部门与岗位,通过岗位可以查到该岗位上的员工和所在的公司,通过部门可以查到该部门内的员工和员工的岗位公司,请问这样的数据库表应该怎么样设计。

公司表:
公司id(主键),公司名称,其他信息
部门表:
部门id(主键),部门名称,所属公司(关联公司表公司id),其他信息
岗位表:
岗位id(主键),岗位名称,所属部门(关联部门表部门id),其他信息
员工表:
员工id,员工姓名,所属岗位(关联岗位表岗位id),其他信息追问

公司和部门关系是多对多,不需要添加公司部门关系表吗?

公司和部门关系是多对多,不需要添加公司部门关系表吗?

追答

其实没事,比如A公司有财务部,B公司也有财务部
部门表里体现2条数据就可以了,分别对应A公司和B公司,如果单纯的一对多,到时候sql查起来也费劲。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-26

第2个回答  2018-03-27

这是很简单的主从表设计,通过外键关联就好。

追问

公司和部门关系是多对多的关系,不需要添加公司部门关系表吗?

追答

一个公司有多个部门,一个部门对应多个公司

我还以为是你写错了。

如果是这样,最好是使用关联表来做

话说这样没问题吗?这样下来,一个职员就可能挂在多个公司名下了。

追问

那查询的时候该怎么写

那查询的时候该怎么写

追答用sql语句的join功能。

不在这写sql语句了,容易被百度当作非法回答禁掉。学习一下join的用法吧。

相似回答