SSM整合項目人事管理系統改(2)——需求分析和數據庫表結構設計

參考《Spring+MyBatis企業應用實戰》(以後稱原書)可以知道人事管理系統分爲6個模塊以及各種實現的功能爲:

1.用戶管理:CRUD用戶;

2.部門管理:CRUD部門;

3.員工管理:CRUD員工;

4.公告管理:CRUD公告;

5.職位管理:CRUD職位;

6.下載中心:上傳下載,預覽刪除,模糊查詢文件。

 

這6個模塊就對應6個實體,其關係爲:

    一個部門下可以有多個員工(1..N),同一個職位下的員工可以有多個(1..N),一個用戶可以發多個公告(1..N),一個用戶可以上傳多個文檔(1..N)。

模式圖如下:

在MySQL DB創建以上模式的Sql語句爲(參考原書):

#創建數據庫hrm_db
CREATE DATABASE IF NOT EXISTS hrm_db  DEFAULT CHARACTER SET utf8;

#使用數據庫hrm_db
USE hrm_db;

#部門表dept_inf
CREATE TABLE dept_inf (
  ID INT(11) NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(50) NOT NULL,
  REMARK VARCHAR(300) DEFAULT NULL,
  PRIMARY KEY (ID)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT  INTO dept_inf(ID,NAME,REMARK) VALUES 
(1,'技術部','技術部'),
(2,'運營部','運營部'),(3,'財務部','財務部'),
(5,'總公辦','總公辦'),(6,'市場部','市場部'),
(7,'教學部','教學部');

#職位表job_inf
CREATE TABLE job_inf (
  ID INT(11) NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(50) NOT NULL,
  REMARK VARCHAR(300) DEFAULT NULL,
  PRIMARY KEY (ID)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT  INTO job_inf(ID,NAME,REMARK) VALUES 
(1,'職員','職員'),
(2,'Java開發工程師','Java開發工程師'),
(3,'Java中級開發工程師','Java中級開發工程師'),
(4,'Java高級開發工程師','Java高級開發工程師'),
(5,'系統管理員','系統管理員'),
(6,'架構師','架構師'),
(7,'主管','主管'),
(8,'經理','經理'),
(9,'總經理','總經理');

#管理員表user_inf
CREATE TABLE user_inf (
  ID INT(11) NOT NULL AUTO_INCREMENT,
  loginname VARCHAR(20) NOT NULL,
  PASSWORD VARCHAR(16) NOT NULL,
  STATUS INT(11) NOT NULL DEFAULT '1',
  createdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  username VARCHAR(20) DEFAULT NULL,
  PRIMARY KEY (ID)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT  INTO user_inf(ID,loginname,PASSWORD,STATUS,createdate,username) VALUES 
(1,'admin','123456',2,'2019-03-12 09:34:28','超級管理員');

#職員表employee_inf
CREATE TABLE employee_inf (
  ID INT(11) NOT NULL AUTO_INCREMENT,
  DEPT_ID INT(11) NOT NULL,
  JOB_ID INT(11) NOT NULL,
  NAME VARCHAR(20) NOT NULL,
  CARD_ID VARCHAR(18) NOT NULL,
  ADDRESS VARCHAR(50) NOT NULL,
  POST_CODE VARCHAR(50) DEFAULT NULL,
  TEL VARCHAR(16) DEFAULT NULL,
  PHONE VARCHAR(11) NOT NULL,
  QQ_NUM VARCHAR(10) DEFAULT NULL,
  EMAIL VARCHAR(50) NOT NULL,
  SEX INT(11) NOT NULL DEFAULT '1',
  PARTY VARCHAR(10) DEFAULT NULL,
  BIRTHDAY DATETIME DEFAULT NULL,
  RACE VARCHAR(100) DEFAULT NULL,
  EDUCATION VARCHAR(10) DEFAULT NULL,
  SPECIALITY VARCHAR(20) DEFAULT NULL,
  HOBBY VARCHAR(100) DEFAULT NULL,
  REMARK VARCHAR(500) DEFAULT NULL,
  CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (ID),
  KEY FK_EMP_DEPT (DEPT_ID),
  KEY FK_EMP_JOB (JOB_ID),
  CONSTRAINT FK_EMP_DEPT FOREIGN KEY (DEPT_ID) REFERENCES dept_inf (ID),
  CONSTRAINT FK_EMP_JOB FOREIGN KEY (JOB_ID) REFERENCES job_inf (ID)
) ENGINE=INNODB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
INSERT  INTO employee_inf(ID,DEPT_ID,JOB_ID,NAME,CARD_ID,ADDRESS,POST_CODE,TEL,PHONE,QQ_NUM,EMAIL,SEX,PARTY,BIRTHDAY,RACE,EDUCATION,SPECIALITY,HOBBY,REMARK,CREATE_DATE) 
VALUES (1,1,8,'愛麗絲','4328011988','廣州天河','510000','020-77777777','13902001111','36750066','[email protected]',0,'黨員','1980-01-01 00:00:00','滿','本科','美聲','唱歌','四大天王','2019-03-14 11:35:18'),
(2,2,1,'傑克','22623','43234','42427424','42242','4247242','42424','[email protected]',2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2019-03-14 11:35:18'),
(3,1,2,'bb','432801197711251038','廣州','510000','020-99999999','13907351532','36750064','[email protected]',1,'黨員','1977-11-25 00:00:00','漢','本科','計算機','爬山','無','2019-07-14 09:54:52');

#公告表notice_inf
CREATE TABLE notice_inf (
  ID INT(11) NOT NULL AUTO_INCREMENT,
  TITLE VARCHAR(50) NOT NULL,
  CONTENT TEXT NOT NULL,
  CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  USER_ID INT(11) DEFAULT NULL,
  PRIMARY KEY (ID),
  KEY FK_NOTICE_USER (USER_ID),
  CONSTRAINT FK_NOTICE_USER FOREIGN KEY (USER_ID) REFERENCES user_inf (ID)
) ENGINE=INNODB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;

#文檔表document_inf
CREATE TABLE document_inf (
  ID INT(11) NOT NULL AUTO_INCREMENT,
  TITLE VARCHAR(50) NOT NULL,
  filename VARCHAR(300) NOT NULL,
  REMARK VARCHAR(300) DEFAULT NULL,
  CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  USER_ID INT(11) DEFAULT NULL,
  PRIMARY KEY (ID),
  KEY FK_DOCUMENT_USER (USER_ID),
  CONSTRAINT FK_DOCUMENT_USER FOREIGN KEY (USER_ID) REFERENCES user_inf (ID)
) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

 

   數據庫層弄好了之後,就開始項目的分層構建。

   首先是實體類層(原書叫領域對象層,也有叫pojo層...)。在hrm項目的src/main/java下建立一個domain包,並創建六個實體類,了。完成之後類似下圖:

Dept.java:

package com.rr.hrm.domain;

import java.io.Serializable;

public class Dept implements Serializable{
	private Integer id;
	private String name;
	private String remark;  // 詳細描述

    // ... Getter and Setter 
}

Document.java:

package com.rr.hrm.domain;

import java.io.Serializable;
import java.util.Date;

public class Document implements Serializable {
	private Integer id;
	private String title; // 標題
	private String fileName; // 文件名
	// 文件,缺Spring依賴,先註釋掉
	//private MultipartFile file;
	private String remark; // 描述
	private Date createDate; // 上傳時間
	private User user;  // 上傳人

    // ...Getter and Setter
}

Employee.java:

package com.rr.hrm.domain;

import java.io.Serializable;
import java.util.Date;

public class Document implements Serializable {
	private Integer id;
	private String title; // 標題
	private String fileName; // 文件名
	// 文件,缺Spring依賴,先註釋掉
	//private MultipartFile file;
	private String remark; // 描述
	private Date createDate; // 上傳時間
	private User user;  // 上傳人

    // ...Getter and Setter
}

Job.java:

package com.rr.hrm.domain;

import java.io.Serializable;

public class Job implements Serializable{
	private Integer id;
	private String name;
	private String remark;  // 詳細描述

    // ...Getter and Setter
}

Notice.java:

import java.io.Serializable;
import java.util.Date;

public class Notice implements Serializable{
	private Integer id;
	private String title; // 標題
	private String content; // 內容
	private Date createDate; // 發佈日期
	private User user; // 發佈人

    // ...Getter and Setter
}

User.java:

package com.rr.hrm.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable{
	private Integer id;
	private String username;
	private String loginname;
	private String password;
	private Integer status;
	private Date createDate;

    // ...Getter and Setter
}

 

  這樣基本的模型就搭建起來了,由於Spring依賴沒導入進來,所以實體類中有一些屬性被我暫時註釋掉了,下一篇中就來完成pom依賴的導入吧!

 源碼參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章