微人事(HR)系统数据库表设计及查询

本文详细介绍了微人事(HR)系统的数据库表设计,包括初始化、表分析、高级查询、视图设计和事务应用。重点讨论了一对多关系的维护、关键字段分析以及各种SQL查询实践,如统计岗位雇员数、查询薪资等级等。同时,解释了视图的作用和事务的ACID特性,探讨了事务并发执行可能遇到的问题及其解决方案。
摘要由CSDN通过智能技术生成

微人事(HR)系统数据库表设计及查询

● 初始化
● 分析表设计
● 高级查询应用
● 视图(View)的设计
● 事务(Transaction)的应用

数据初始化操作

命令行登陆mysql,然后执行source d:/hr_mysql.sql

关键表设计分析

当如上sql脚本执行完之后,会默认创建一个hr数据库,并且在数据库中会创建如下多张表:

● 区域表(Regions)
● 国家表(Countries)
● 地址表(Locations)
● 部门表(Departments)
● 雇员表(Employees)
● 岗位表(Jobs)
● 岗位变更历史表(job_history)

关键表关系分析

● 一个区域(Regions)可以有多个国家(one2many)
● 一个国家可以有多个locations(one2many)
● 一个地址(locations)中可以有多个部门(one2many)
● 一个部门中可以有多个雇员(one2many)
● 一个岗位下可以有多个雇员(one2many)
● 一个雇员可以有多个岗位变动(one2many)

FAQ?一对多个关系,关系维护方在哪里?(多的一方)

表中关键字段分析

区域表(Regions)


CREATE TABLE regions
(
region_id int auto_increment comment '编号',
region_name VARCHAR(25) comment '区域名称',
primary key (region_id),
unique key (region_name)
) engine=innodb default character set utf8;

国家表(Countries)

CREATE TABLE countries
(
country_id CHAR(2) primary key, 
country_name VARCHAR(40) comment '国家名称',
region_id int
)engine=innodb default character set utf8;

ALTER TABLE countries
ADD (
CONSTRAINT countr_reg_fk
FOREIGN KEY (region_id)
REFERENCES regions(region_id)
);

地址表(Locations)

CREATE TABLE locations
( location_id int(4) primary key auto_increment,
  street_address VARCHAR(40),
  postal_code VARCHAR(12), 
  city VARCHAR(30) not null, 
  state_province VARCHAR(25),
  country_id CHAR(2)
) engine=innodb default character set utf8;

ALTER TABLE locations
ADD (
CONSTRAINT loc_c_id_fk
FOREIGN KEY (country_id)
REFERENCES countries(country_id)
);

部门表(Departments)

CREATE TABLE departments
( department_id int(4) primary key auto_increment, 
  department_name VARCHAR(30) NOT NULL,
  manager_id int(6), 
  location_id int(4)
) engine=innodb default character set utf8;

ALTER TABLE departments
ADD (
CONSTRAINT dept_loc_fk
FOREIGN KEY (location_id)
REFERENCES locations (location_id)
) ;

岗位表(Jobs)

CREATE TABLE jobs
( job_id VARCHAR(10) primary key, 
  job_title VARCHAR(35) NOT NULL, 
  min_salary numeric(6), 
  max_salary numeric(6)
) engine=innodb default character set utf8;

雇员表

CREATE TABLE employees
( employee_id int(6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啤酒烧烤小烧腰

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值