繁体   English   中英

如何构建此关系数据库

[英]How to structure this relational database

基本上,我将拥有3个具有关联关系的表。 他们是: usersdepartmentscompany

我的问题是这样的:

  • company可以有很多部门
  • 一个department只能隶属于一个公司
  • user只能是一个公司的一部分
  • user可以是多个部门的一部分

这实际上就是表关系的样子:

                    ____________________
                    | | | |            |
                    | | | |            |
--------      --------------      -----------
| user |      | department |      | company |
--------      --------------      -----------
 |   |         | | | | |               |
 |   |         | | | | |               |
 |   ___________________               |
 |                                     |
 |                                     |
 |                                     |
 _______________________________________

以上倍数| 行显示一个选项,因此上面的“公司”有4个部门,依此类推。

现在我的问题是,我应该如何构建关系表?

我应该有user_departmentsuser_companycompany_departments表吗?

基本上看起来像这样:

--------------------
| user_departments |
--------------------------------
| id | user_id | department_id |
--------------------------------

----------------
| user_company |
-----------------------------
| id | user_id | company_id |
-----------------------------

-----------------------
| company_departments |
-----------------------------------
| id | company_id | department_id |
-----------------------------------

还是有其他选择让我考虑/实施,而不是我要走的路,因为它似乎只会变得越来越复杂?

您实际上是在建立多余的关系。 您应该不需要company_departments,company_id只会是Departments表的一个字段,以引用一个部门所属的公司。 同样,您将不需要user_company表,但是将需要user_departments一个。 这是因为用户与部门之间的关系实际上是多对多的。

在给出的示例中,您只需要四个表。

company: company_id, other company info (such as name) 
department: department_id, company_id (referencing the company record), other department info 
user: user_id, company_id (referencing the company record), other user info
user_departments: user_id, department_id, perhaps information such as user's role in department, or if you want historical data preserved dates assigned to and removed from department

这是您使用的格式的布局:

---------
| users |
--------------------------------
| id | name | company_id | ... |
--------------------------------

-----------
| company |
-------------------
| id | name | ... |
-------------------

-----------
| departments |
--------------------------------
| id | name | company_id | ... |
--------------------------------

--------------------
| user_departments |
--------------------------------
| id | user_id | department_id |
--------------------------------

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM