我有一份excel表,其中包含为我公司工作的所有员工,并且仍在为我们工作。这是一张约200行。每行都有基本信息,如姓氏,姓名,职位,资格等.16列基本信息。现在,棘手的部分是这个。在16列之后,有几个月(从05年5月到现在(4月12日))。在每个月的专栏下,员工要么得到0(合同),1(永久),2(合同终止)或3(学生)。
最好的方法是什么?我想到了4个表(下面列出),其中一个表确定了永久终止的人(为了知道谁在哪种类型的工作)。
MySQL Table: hr_employees
|-----------------|-------|----|----|----|
| employee_number | name | sur| etc| etc|
|-----------------|-------|----|----|----|
| 1 | Dave | F | xx | xx |
|-----------------|-------|----|----|----|
MySQL Table: hr_month
|----|--------|
| id | month |
|----|--------|
| 1 | May-05 |
| 2 | Jun-05 |
|----|--------|
MySQL Table: hr_status
|----|------|------|--------|
| id | e_no | date | status |
|----|------|------|--------|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 1 |
|----|------|------|--------|
MySQL Table: hr_terminated
|----|------|
| id | e_no |
|----|------|
| 1 | 1 |
| 2 | 1 |
|----|------|
我希望你们明白我想要达到的目标,否则,问一个问题,我会尽我所能回答! :)
感谢。
答案 0 :(得分:0)
这是一个简化数据输入的设计,它更像是关系型数据库,而不像Excel那样,只要它被标准化。
MySQL Table: hr_employee
|-----------------|-------|----|----|----|
| employee_number | name | sur| etc| etc|
|-----------------|-------|----|----|----|
| 1 | Dave | F | xx | xx |
|-----------------|-------|----|----|----|
| 2 | Bob | M | xx | xx |
|-----------------|-------|----|----|----|
MySQL Table: hr_employee_status
|-----------------|------------|------------|--------|
| employee_number | from_date | to_date | status |
|-----------------|------------|------------|--------|
| 1 | 2005-05-01 | 2005-08-31 | 3 |
|-----------------|------------|------------|--------|
| 1 | 2006-05-01 | 2010-02-28 | 0 |
|-----------------|------------|------------|--------|
| 2 | 2010-03-01 | 9999-12-31 | 1 |
|-----------------|------------|------------|--------|
在这里你可以看到Dave从05年5月到05年8月被聘为学生,然后他于06年5月作为合同雇员回来,直到2010年2月底。然后在2010年3月1日,鲍勃被聘为永久雇员,他仍然在工作(最大整理日期意味着“直到另行通知”)。
这种设计的巨大优势在于,您只需在发生变化时输入/编辑数据,而不是每月为您拥有或曾经拥有的每位员工输入/编辑数据。您还可以通过非常简单的SQL查询查看您的员工在任何给定日期(而不仅仅是几个月)的样子。