灯塔员工资料信息整理
原始资料
灯塔公司2000年员工资料(Excel文件)
灯塔公司2001年员工花名册(Excel文件)
目标
通过对照两年的资料,统计出2001年灯塔公司各岗位中年龄、性别、学历结构以及在灯塔工作的年数。
难点及问题说明
灯塔所提供的原始材料本身存在很多问题,包括:
1.2001年的员工花名册缺乏所在部门、职位、学历结构等重要信息
2.两年的员工信息中存在许多明显相矛盾的信息。
比如从2001年花名册中可发现,在2000年之前加入灯塔的员工有2425人,但从2000年的资料中只能找到1424人与2001年的表相吻合!3.信息的表示非常不规范。
比如出生日期,有的具体到日期,有的只有年份,而在2001年的花名册上更是只有年龄。
给数据的整
理带来极大的不方便。
工作流程
1.系统分析
由于两张表的人数都超过了2000人,而且分成了三十多个部门,单凭人工统计是非常不现实的,应使用数据库完成统计。
前面已经提到,原始数据存在很多不规范之处,所以在使用数据库之前,必须对原始数据加以整理。
经考虑,决定采取PHP编程实现数据的规范化整理,使用MySQL数据库实现数据存储,采用IIS WWW服务器作为PHP的运行平台。
2.数据结构设计
使用三张表来存放数据,分别是:
表1:Staff2000数据结构—存放2000年员工数据
+-----------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | +-----------------+----------+------+-----+---------+-------+
| name | char(10) | YES | | NULL | |姓名
| sex | char(2) | YES | | NULL | |性别
| age | int(11) | YES | | NULL | |年龄
| yr_start_work | year(4) | YES | | NULL | |开始工作年度
| yr_start_beacon | year(4) | YES | | NULL | |加入灯塔年度
| edu | char(20) | YES | | NULL | |学历
| id | char(20) | YES | | NULL | |身份证号
| position | char(20) | YES | | NULL | |职位
| poison | int(11) | YES | | NULL | |
有毒工作
| contract | char(50) | YES | | NULL | |
合同日期
| note | char(50) | YES | | NULL | |
备注
| dept | char(20) | YES | | NULL | |
部门
| end_date | char(50) | YES | | NULL | |
合同终止日期
表2:Staff2001数据结构—存放2001年员工数据
+-------------------+----------+------+-----+---------+----
---+
| Field | Type | Null | Key | Default | Extra
|
+-------------------+----------+------+-----+---------+----
---+
| employee_id | char(10) | YES | | NULL | |员工号
| name | char(10) | YES | | NULL | |姓名
| age | int(11) | YES | | NULL | |年龄
| year_start_work | year(4) | YES | | NULL | |开始工作年度
| sex | char(2) | YES | | NULL | |性别
| year_start_beacon | year(4) | YES | | NULL | |加入灯塔年度
| poison | int(11) | YES | | NULL | |有毒工作
表3:Staffboth数据结构—存放两张表中相吻合的员工数据
+-------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| name | char(10) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
| edu | char(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| dept | char(20) | YES | | NULL | |
| position | char(20) | YES | | NULL | |
| beacon_year | int(11) | YES | | NULL | |在
灯塔工作时间(年数)
3.数据整理
(a)因为软件无法直接读取excel文件,所以需要将excel文件另存为“以制表符分隔的文本文件(.txt)”。
(b)编写PHP程序读取该文本文件,并对数据加以处理
(c)通过Web服务器(IIS)将处理后的标准化数据存入MySQL数据库。
4.数据统计
利用数据库的结构化查询语言(Structural Query Language)查找所
需信息。
例如,要查询在2000人员表和2001人员表中姓名、性别、年龄相同的人员信息,可以这样写:
mysql> select , staff2000.sex, ,staff2000.age,
-> staff2000.dept, staff2000.position
-> from staff2000, staff2001
-> where =
-> and staff2000.sex=staff2001.sex
-> and staff2000.age=staff2001.age
-> order by staff2000.dept;
+----------+------+----------+------+------------+---------
---+
| name | sex | edu | age | dept | position |
+----------+------+----------+------+------------+---------
---+
| 王继文 | 男 | 中技 | 33 | 104 | 树脂
|
| 闫士强| 男| 高中| 41 | 104 | |
| 房娟| 女| 中专| 28 | 104 | |
| 安文陆 | 男 | 大专 | 50 | 104 | 树脂
|
……
| 赵家泰 | 男 | 大本 | 56 | 综合处 | 销售
|
| 高春发 | 男 | 大专 | 40 | 综合处 | 内联
|
| 张金柱 | 男 | 初中 | 43 | 综合处 | 采购
|
| 穆瑞泉 | 男 | 中专 | 43 | 综合处 | 管理
|
+----------+------+----------+------+------------+---------
---+
1424 rows in set (5.65 sec)
结果
通过下面URL可直接查询
http://localhost/beacon/query.php
查询界面:
结果显示界面:
(注:由于该软件放在家里的机器上,所以只能在本地机器访问)
工作所花时间约8小时。