MySql数据库设计 - 对于可能为null的列最有效吗?

时间:2012-12-13 06:43:59

标签: mysql database-design

在这个数据库中,有时员工只在一个辖区内,有时不止一个。例如,鲍勃的管辖权将是北美,南美和非洲。而Janes将只是北美。但是,每个员工都会有一个部门。

由于一些申请人只会分配一个司法管辖权,而其他人可能拥有更多,这是否是实施司法管辖区的最佳方式?还是有更有效的方式?

我将使用join语句并按部门选择我的查询。

employees
-----------------
userID (primary key)
deptID (foreign key and NOT NULL references departments)
firstName
lastName
jurisdiction1 (foreign key references jurisdictions)
jurisdiction2 (foreign key references jurisdictions)
jurisdiction3 (foreign key references jurisdictions)
jurisdiction4 (foreign key references jurisdictions)
jurisdiction5 (foreign key references jurisdictions)
jurisdiction6 (foreign key references jurisdictions)
jurisdiction7 (foreign key references jurisdictions)

jurisdictions
-------------------
jurID primary key
jurisdictionName


departments
--------------------
deptID primary key
departmentName

2 个答案:

答案 0 :(得分:2)

您的计划中的管辖权表格设计不正确。您需要一个中间表来存储用户和区域之间的关系。像这样。

employee table
--------------
user_id
first_name
depart_id
j_id

jurisdiction table
-----------------
j_id
region

employee_jurisdiction
------------------
id
user_id 
j_id
(Set INDEX as no duplicate for user_id+j_id)     

答案 1 :(得分:1)

在这种情况下,最好有一个新表jurisdictionsEmployeesJurisdictions

<强> Jurisdictions

  • Id
  • JurisdictionName

<强> UsersJurisdictions

  • EmployeeId外键引用Employees(EmployeeId)
  • JurisdictionId外键引用jurisdictions(jurisdictionId)