精华内容
下载资源
问答
  • 数据库设计员工管理系统
    千次阅读
    2021-12-04 18:41:34

    数据库实验,课程设计

    员工管理系统的数据库设计

    实验数据库选用MySQL,结合数据库原理相关知识模拟课题,创建员工管理系统数据库。(应付学校实验报告)

    一、实验目的

    1.能够正确运用数据库的思想与方法,结合一个模拟课题,复习、巩固数据库知识,提高数据库的实践能力。

    2.能够完成对具体某一个管理系统的数据库分析和概念结构和逻辑结构设计能力,并通过数据库管理软件完成实施操作。

    二、实验内容

    1、需求分析

    通过设计数据库实现对企业员工的基本信息、职位、所属项目、工资等数据进行存储、查询和管理。数据库需要存储员工的基本信息如员工编号、身份证号、联系方式、所属部门信息、工资信息等,还要对员工参与的项目信息进行存储,如项目编号,项目名称,项目起止时间等。

    系统开发先通过ER图设计模型,然后根据设计好的概念模型进行建库建表。

    并且加入相关数据,在数据库中完成查询管理工作。

    2、概念结构设计:ER图

    在这里插入图片描述

    3、逻辑结构设计

    ①关系模式设计

    一个公司部门中可以包含多个员工,每个员工只能属于一个公司部门,因此员工与公司部门的关系为N:1.

    一个公司部门内可以多个职位,每个特定职位只能属于一个部门,因此公司部门与部门职位的关系为1:N.

    每个员工可以属于不同部门的相同职位,及同一个职位可以对应多个员工,而每个员工只能由一个职位,因此部门职位与员工的关系为1:N.

    每个员工都对应一个工资单,每个工资单只能属于一个员工,因此员工表与工资表的关系是1:1.

    每个员工可以参与多个项目,每个项目可以由多个员工参与,因此员工表与项目表的关系是N:M.

    ②按照三范式标准检验

    没有传递依赖,是3NF

    4、物理结构设计:表的结构设计和索引设计部分

    4.1、表结构

    1:1的关系如员工信息表和工资表,可将员工信息表的主键设置为工资表的外键,也可将工资表的主键设置为员工信息表的外键

    1:N的关系如公司部门表和员工信息表,公司部门表为1的一方,员工信息表为N的一方,需要将公司部门表的主键设为员工信息表的外键。

    M:N的关系如员工信息表和项目表,需要建立一个联系表(员工和项目关系表)将员工信息表的主键和项目表的主键分别设为员工和项目关系表的外键。

    4.2、表索引

    • 根据员工姓名建立索引
    • 根据部门名称建立索引
    • 根据项目名称建立索引
    • 根据职位名称建立索引

    5、SQL语句实施: 建表、输入数据

    CREATE DATABASE `employee_management` CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    USE `employee_management`;
    
    CREATE TABLE `employee` (
      `employee_id` int(8) COMMENT '员工id',
      `department_id` int(8) NULL COMMENT '部门id',
      `position_id` int(8) NULL COMMENT '职位id',
      `employee_name` varchar(50) NULL COMMENT '员工名称',
      `cart_id` int NULL COMMENT '身份证号',
      `sex` varchar(10) NULL COMMENT '性别',
      `phone` varchar(20) NULL COMMENT '手机号',
      `email` varchar(30) NULL COMMENT '邮箱',
      PRIMARY KEY (`employee_id`)
    );
    
    
    CREATE TABLE `department`(
      `department_id` int(8) PRIMARY KEY,
      `department_name` varchar(50),
      `chairman_number` varchar(20)
    );
    
    
    CREATE TABLE `POSITION` (
      `position_id` int(8) PRIMARY key,
      `department_id` int(8),
      `position_name` varchar(20)
    );
    
    CREATE TABLE `project` (
      `project_id` int(8) PRIMARY key,
      `project_name` VARCHAR(20),
      `start_time` varchar(20),
      `end_time` varchar(20)
    );
    
    
    #员工和项目关系表
    
    CREATE TABLE `emp_project_info`(
      `emp_project_r_id` int PRIMARY KEY,
      `employee_id` int(8),
      `project_id` int(8)
    );
    
    CREATE TABLE `salary_info` (
      `bill_id` int(8) PRIMARY key,
      `employee_id` int(8),
      `base_pay` int,
      `insurance_pay` int,
      `merit_pay` int,
      `subsidy_pay` int,
      `overtime_pay` int
    );
    
    #添加表之间的约束
    
    ALTER TABLE `salary_info` 
    ADD FOREIGN KEY (`employee_id`) REFERENCES `employee` (`employee_id`);
    
    ALTER TABLE `salary_info` 
    ADD FOREIGN KEY (`employee_id`) REFERENCES `employee` (`employee_id`);
    
    ALTER TABLE `position` 
    ADD FOREIGN KEY (`department_id`) REFERENCES `department` (`department_id`);
    
    
    ALTER TABLE `emp_project_info` 
    ADD FOREIGN KEY (`employee_id`) REFERENCES `employee` (`employee_id`),
    ADD FOREIGN KEY (`project_id`) REFERENCES `project` (`project_id`);
    
    ALTER TABLE `employee` 
    ADD FOREIGN KEY (`position_id`) REFERENCES `position` (`position_id`);
    
    #3 创建索引
    CREATE INDEX idx_emp_name ON employee(employee_name);
    
    CREATE INDEX idx_dept_name ON department(department_name);
    
    CREATE INDEX idx_project_name ON project(project_name);
    
    ALTER TABLE `position` 
    ADD INDEX `idx_position_name`(`position_name`) USING BTREE;
    
    #插入数据
    INSERT INTO `department` (`department_id`, `department_name`, `chairman_number`) VALUES (1001, '开发部', '202101');
    INSERT INTO `department` (`department_id`, `department_name`, `chairman_number`) VALUES (1002, '设计部', '202102');
    
    INSERT INTO `position` (`position_id`, `department_id`, `position_name`) VALUES (2001, 1001, '技术总监');
    INSERT INTO `position` (`position_id`, `department_id`, `position_name`) VALUES (2002, 1002, '设计总监');
    
    INSERT INTO `employee` VALUES (202101, 1001, 2001, '张三', 2204554, '男', '21343545', '23478957@qq.com');
    INSERT INTO `employee` VALUES (202102, 1001, 2001, '李四', 2203425, '女', '23475453', '23184672@qq.com');
    INSERT INTO `employee` VALUES (202103, 1001, 2001, '王五', 2204545, '男', '32313435', '12323233@qq.com');
    INSERT INTO `employee` VALUES (202104, 1002, 2002, '刘六', 2206756, '女', '12313445', '32847239@qq.com');
    INSERT INTO `employee` VALUES (202105, 1002, 2002, '赵七', 2204735, '男', '32490294', '31287463@qq.com');
    
    INSERT INTO `project` VALUES (3001, 'xx电子平台', '2021.01', '2021.03');
    INSERT INTO `project` VALUES (3002, 'xx电商', '2021.04', '2021.07');
    
    INSERT INTO `emp_project_info` (`emp_project_r_id`, `employee_id`, `project_id`) VALUES (4001, 202101, 3001);
    INSERT INTO `emp_project_info` (`emp_project_r_id`, `employee_id`, `project_id`) VALUES (4002, 202102, 3001);
    INSERT INTO `emp_project_info` (`emp_project_r_id`, `employee_id`, `project_id`) VALUES (4003, 202103, 3001);
    INSERT INTO `emp_project_info` (`emp_project_r_id`, `employee_id`, `project_id`) VALUES (4004, 202104, 3002);
    INSERT INTO `emp_project_info` (`emp_project_r_id`, `employee_id`, `project_id`) VALUES (4005, 202105, 3002);
    
    INSERT INTO `salary_info` VALUES (5001, 202101, 8000, 1000, 2000, 4000, 3000);
    INSERT INTO `salary_info` VALUES (5002, 202102, 7500, 1000, 2000, 3000, 3000);
    INSERT INTO `salary_info` VALUES (5003, 202103, 8000, 1000, 2000, 4000, 3000);
    INSERT INTO `salary_info` VALUES (5004, 202104, 7000, 1000, 2000, 2000, 3000);
    INSERT INTO `salary_info` VALUES (5005, 202105, 9000, 1000, 2000, 1000, 3000);
    

    6、查询,创建视图操作(SQL)

    #1.查询全部员工的平均工资
    SELECT AVG(base_pay+insurance_pay+merit_pay+subsidy_pay+overtime_pay) avg_salary FROM salary_info;
    
    #2.查询开发部员工的平均工资
    
    SELECT AVG(base_pay+insurance_pay+merit_pay+subsidy_pay+overtime_pay) avg_salary_dep 
    FROM salary_info WHERE employee_id IN(SELECT employee_id FROM employee,department 
    WHERE employee.department_id=department.department_id AND department.department_id=1001);
    
    #3.查询各个项目平均补贴
    SELECT AVG(subsidy_pay) FROM salary_info WHERE employee_id 
    IN(SELECT employee_id FROM emp_project_info WHERE project_id=3001);
    SELECT AVG(subsidy_pay) FROM salary_info WHERE employee_id 
    IN(SELECT employee_id FROM emp_project_info WHERE project_id=3002);
    
    #4.查询工资最高的员工的姓名
    SELECT employee_name FROM employee e 
    JOIN salary_info s
    ON e.employee_id=s.employee_id
    HAVING MAX(base_pay+insurance_pay+merit_pay+subsidy_pay+overtime_pay);
    
    #5.查询技术总监的平均工资
    SELECT AVG(base_pay+insurance_pay+merit_pay+subsidy_pay+overtime_pay) avg_pos FROM salary_info 
    WHERE employee_id IN(SELECT employee_id FROM employee 
    WHERE position_id IN(SELECT position_id FROM `position` WHERE `position_name`='技术总监'));
    
    #创建视图:
    CREATE VIEW s1 AS SELECT AVG(base_pay+insurance_pay+merit_pay+subsidy_pay+overtime_pay) avg_salary FROM salary_info;
    
    

    7、实验总结

    经过这次实验,我学习如何正确运用数据库,加深了对数据库思想与方法的理解,通过这次实验复习、巩固数据库知识,提高数据库的实践能力。深一步了解了数据库的设计,学会创建ER图,能够更加熟练的完成对具体某一个管理系统的数据库分析和概念结构和逻辑结构设计能力,并通过数据库管理软件完成实施操作。

    更多相关内容
  • 员工信息(员工编号,员工姓名,年龄,性别,出生年月,婚姻状态,政治面貌,学历,部门编号,职务,联系方式,备注) 主键:员工编号; 外码:部门编号; 部门信息(部门编号,部门名称,部门人数) 主键:部门编号...
  • (2)员工模块:用来记录员工编号、姓名、性别、年龄、学历、职务等信息; (3)客户模块:用来记录客户编号、姓名、联系方式、购买时间、购买药品编号、名称、数量等信息; (4)入库和出库模块:用来记录当前库存...
  • 该企业员工信息管理系统采用B/S结构,使用JAVA开发语言,结合JSP技术,以MySQL作为后台数据库。 该系统共包含两种角色:管理员和员工。各角色的功能如下: 1.管理员 1)更改密码:管理员可以更改他/她的密码。 2)...
  • 本项目是一套基于SSM的企业员工信息管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目...
  • 企业员工信息管理系统主要用于实现公司的员工相关信息管理,基本功能包括:密码修改、员工管理、部门管理、出勤管理、工资管理、请假审核、我的请假、我的工资等。本系统结构如下: 密码修改:修改自己的密码。 ...
  • 输入:员工信息 功能:对员工基本信息的查询、修改、删除和查询。 员工考勤管理模块 输入:员工考勤情况 功能:完成对员工的考勤以及对考勤情况的查询、统计和删除员工考勤等情况 员工出差模块 输入:员工出差...
  • 企业员工信息管理系统主要用于实现公司的员工相关信息管理,基本功能包括:密码修改、员工管理、部门管理、出勤管理、工资管理、请假审核、我的请假、我的工资等。本系统结构如下: (1)管理员端 密码修改:修改...
  • SQL server+java实现的学生信息管理系统-数据库原理课程设计报告。SQL server+java实现的学生信息管理系统-数据库原理课程设计报告。SQL server+java实现的学生信息管理系统-数据库原理课程设计报告。
  • 员工管理信息系统 access 数据库 源码 系统总体功能需求 功能概述:该系统界面友好,操作简便,能完成添加工种,浏览工种,修改工种,删除工种等一系列人事信息管理功能,开发本系统的总体任务是实现人事管理的系统...
  • 工资管理系统就是对员工工资的管理,所以首先我们需要知道的是员工有哪些信息,并且是怎样进行分类的。 工资信息包含1:员工基本信息(姓名,年龄,所在部门和职务:如经理、工程师、销售员等);2:部门信息;3工资...
  • 如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统
  • 基于JSP企业员工信息管理系统设计软件程序源码+数据库+WORD毕业设计论文文档. 企业员工信息管理系统主要用于实现公司的员工相关信息管理,基本功能包括:密码修改、员工管理、部门管理、出勤管理、工资管理、请假...
  • 员工管理系统数据库课程设计

    千次阅读 热门讨论 2021-08-22 17:25:55
    主要是用java与sql server2012写的员工管理系统,功能如下,有完整的数据库文档以及代码有分层数据流图,ER图,数据字典,有JDBC安装包 调查一些企业,根据了解到的具体情况,分析、设计和实现员工管理的管理系统。...

    主要是用java与sql server2012写的员工管理系统,功能如下,有完整的数据库文档以及代码有分层数据流图,ER图,数据字典,有JDBC安装包

    调查一些企业,根据了解到的具体情况,分析、设计和实现员工管理的管理系统。该系统主要的功能如下:

    1. 员工基本信息的管理:员工基本信息的录入、修改、删除和查询功能。
    2. 部门信息的管理:部门信息的录入、修改、删除和查询功能。
    3. 请假信息管理:实现员工请假信息的录入、修改、删除和查询功能
    4. 考勤信息管理:迟到、早退、旷工等信息的录入、修改、删除和查询功能。
    5. 加班信息管理:加班信息的录入、修改、删除和查询功能。
    6. 工资信息管理:工资信息的录入、修改、删除和查询功能

    效果图

     

     

     

    附上一部分登录页面的代码

     

    package demo;

    import demo.JDBC.contest1;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.sql.*;
    import java.sql.Statement;

    public class login extends JFrame {
        JTextField jtf1=new JTextField(20);
        JPasswordField jtf2=new JPasswordField(20);
        JButton jb1=new JButton("登录");
        JButton jb2=new JButton("退出");
        public login() throws SQLException {
            JPanel p=new JPanel();
            p.setLayout(null);

            setTitle("员工管理系统");
            JLabel jl1=new JLabel("用户");
            JLabel jl2=new JLabel("密码");
            JLabel jl3=new JLabel("员工信息管理系统");
            jl1.setFont(new Font("",1,19));
            jl2.setFont(new Font("",1,19));
            jtf1.setFont(new Font("楷体",0,19));
            jtf2.setFont(new Font("",1,19));
            jl3.setFont(new Font("宋体",1,25));
            jl1.setBounds(230, 230, 63, 30);
            jl2.setBounds(230, 280, 63, 30);
            jtf1.setBounds(280, 230, 190, 30);
            jtf2.setBounds(280, 280, 190, 30);
            jb1.setBounds(250, 370, 80, 35);
            jb2.setBounds(400,370,80,35);
            jl3.setBounds(250,25,250,225);
            jb1.setFont(new Font("楷体",1,19));
            jb2.setFont(new Font("楷体",1,19));
            jb1.addActionListener(e-> {
                try {
                    join();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            });
            jb2.addActionListener(e->{
                System.exit(1);
            });
            p.add(jl1);
            p.add(jl2);
            p.add(jtf1);
            p.add(jtf2);
            p.add(jb1);
            p.add(jb2);
            p.add(jl3);
            getContentPane().add(p);
            setSize(700,650);
            setResizable(false);
            setVisible(true);
            setLocationRelativeTo(null);
        }
        public void join() throws SQLException {
            String user=jtf1.getText();
            String pass=jtf2.getText();
            String sql="select * from users where name='"+user+"' and ps='"+pass+"'";   //sql语句查找,根据输入查找数据库,如果查找得到就说明输入正确
            contest1 c=new contest1();
            Connection con=c.getcontest();        //连接对象con调用在JDBC定义并连接到相应的数据库,通过getconnection函数
            Statement st= con.createStatement();
            ResultSet rs=st.executeQuery(sql);   //接受数据库里面的字符串
            if (rs.next()) {
                JOptionPane.showMessageDialog(this, "成功登录", "提示",JOptionPane.INFORMATION_MESSAGE);
                mainface f=new mainface();
                setVisible(false);
            }
            else {
                JOptionPane.showMessageDialog(this, "帐号或密码错误!", "警告",JOptionPane.WARNING_MESSAGE);
            }
            c.close(con,st,rs);                           //通过c调用jdbc里面的close函数对这些连接进行关闭
        }
    }

    欢迎有需要的同学联系我哦

     

     

     

     

     

     

     

    展开全文
  • 这是基于Java的企业员工信息管理系统,内含程序完整源码、论文、答辩PPT、MySQL数据库源文件,只是一个Javaweb项目,可作为毕设使用。
  • 通过对现行人事管理系统的调查,明确了人事管理系统由档案管理、职务调动管理、奖惩管理、考勤管理、工资管理、请销假管理组成。系统功能的主要描述如下: (1)员工档案管理 ① 对公司里所有员工进行统一编号;将每...
  • 各院系(或部门)主要职责是对本部门员工的论文、科研项目、科研成果、奖励等信息进行审核后输入到本系统数据库中,查询本部门在某时间内的科研信息、统计科研情况、打印相关资料等,同时对本部门的错误录入信息进行...
  • 职工信息管理系统,是Java以及数据库结合,加上前端的一些UI界面的设计,是本人的一个简单的设计的源代码。
  • 题目:点菜管理信息系统 ...管理员有权对所有在职员工信息进行操作。 后厨系统功能: 订单保存在数据库中,并传入后厨系统; 后厨界面同步显示所有正在进行的订单; 后厨对订单具有查询,接单等操作功能。
  • 详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结。 包括程序毕设程序源代码一份,数据库一份,完美运行。配置环境里面有...
  • 由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。因此,不仅大型计算机及中小型计算机,甚至微型机都配有数据库管理...
  • 工资管理系统,包含数据库设计、详细设计、代码等资源。资源是我大学时期学习数据库的大作业,非常适合学生使用。
  • 涵盖员工管理,职工号一类。 代码简单功能全面,专为课设答辩所用。 适合新手入门全面的课设,直接打印就行了。
  • JavaJsp应用源码,主要面向的是学生毕业设计学习,源码数据库论文视频资料齐全。
  • 员工管理员工信息管理系统设计与实现数据库ppt.pdf
  • Java毕业设计——企业员工信息管理系统设计与实现(论文+答辩PPT+源代码+数据库+讲解视频).zip Java毕业设计——企业员工信息管理系统设计与实现(论文+答辩PPT+源代码+数据库+讲解视频).zip Java毕业设计——...
  • 员工管理数据库设计

    万次阅读 多人点赞 2019-07-06 20:56:52
    员工管理数据库系统,有助于为对员工数量增多,信息量增大,以及员工部门分配,工资发放等问题实现现代、化网络化管理,能够提高企业管理效率,提高准确度,节约企业成本,提高生产效率。 通过该课题可以熟悉...

    一、课题背景和目的

    员工管理数据库系统,有助于为对员工数量增多,信息量增大,以及员工部门分配,工资发放等问题实现现代、化网络化管理,能够提高企业管理效率,提高准确度,节约企业成本,提高生产效率。

    通过该课题可以熟悉PowerDesigner设计数据库的流程,巩固数据库的设计规则和设计原理,以及对数据库进行多种逻辑查询。

     

    二、数据库的需求分析

    通过设计数据库实现对企业员工的基本信息、职位、所属项目、工资等数据进行存储、查询和管理。数据库需要存储员工的基本信息如员工编号、身份证号、联系方式、所属部门信息、工资信息等,还要对员工参与的项目信息进行存储,如项目编号,项目名称,项目起止时间等。

    系统开发首先通过PowerDesigner设计物理模型,并将设计好的模型转换为可执行的SQL代码。通过SQL Server 创建数据库,并加入相关数据,在数据库中完成查询管理工作。

    系统的开发过程中使用 PowerDesigner16.5和 SQL Server 2014实现。

     

    三、数据库概念模型构造

    模型中包含五个实体,实体名称以及属性如下:

    员工信息表:员工编号、员工姓名、身份证号、性别、手机号、邮箱;

    公司部门表:部门编号、部门名称、负责人工号;

    部门职位表:职位编号、职位名称;

    项目表:项目编号、项目名称、开启时间、结束时间;

    工资表:出纳编号、基本工资、五险一金、绩效奖金、补贴、加班费。

    (以上加有下划线的属性为表的主键属性)

    根据以上实体设计的数据库系统ER图如下图图1所示:

    图 1系统ER图

    四、数据库逻辑设计说明

    一个公司部门中可以包含多个员工,每个员工只能属于一个公司部门,因此员工与公司部门的关系为N:1.

    一个公司部门内可以多个职位,每个特定职位只能属于一个部门,因此公司部门与部门职位的关系为1:N.

    每个员工可以属于不同部门的相同职位,及同一个职位可以对应多个员工,而每个员工只能由一个职位,因此部门职位与员工的关系为1:N.

    每个员工都对应一个工资单,每个工资单只能属于一个员工,因此员工表与工资表的关系是1:1.

    每个员工可以参与多个项目,每个项目可以由多个员工参与,因此员工表与项目表的关系是N:M.

     

    五、数据库物理设计说明

    1:1的关系如员工信息表和工资表,可将员工信息表的主键设置为工资表的外键,也可将工资表的主键设置为员工信息表的外键

    1:N的关系如公司部门表和员工信息表,公司部门表为1的一方,员工信息表为N的一方,需要将公司部门表的主键设为员工信息表的外键。

    M:N的关系如员工信息表和项目表,需要建立一个联系表(员工和项目关系表)将员工信息表的主键和项目表的主键分别设为员工和项目关系表的外键。

    系统设计物理模型图如下图图2所示:

    图 2物理模型图

     

    六、数据库及表的创建实施过程

    通过PowerDesigner生成可执行的SQL文件,其操作过程如下图图3所示:

    图 3生产SQL文件

    在SQL server 2014 中创建一个EmploySystem数据库,然后在该数据库中运行PowerDesginer生产的SQL文件,来创建表,SQL代码如下图所示:

    图 4SQL代码

    表的结构生成后,需要为每个表添加数据,截图如下:

    公司部门表数据如图5:

    图 5公司部门表

    员工信息表数据如图6:

    图 6员工信息表

    部门职位表数据如图7:

    图 7部门职位表

    项目表数据如图8:

    图 8项目表

    员工和项目关系表数据如图9:

    图 9员工和项目关系表

    工资表数据如图10:

    图 10工资表

    七、涉及到相关业务逻辑的单表查询及多表查询

    (1)查询所有员工信息:

    SQL语句如下:

    select * from Employee_info

    执行结果如下:

    (2)查询20100101员工的工资信息:

    SQL语句如下:

    select * from Salary_info where employee_id='20100101'

    执行结果如下:

     

    (3)查询20100101员工所在的部门和职位:

    SQL语句如下:

    select employee_id, deparment_name , position_name

    from Department_info ,position_info, Employee_info

    where  employee_id='20100101' and Employee_info.department_number = Department_info.department_number

         and position_info.position_number = Employee_info.position_number

    执行结果如下:

     

    (4)查询20100101员工所分配的项目:

    SQL语句如下:

    select Employee_info.employee_id, employee_name, Project_info.project_number, project_name

    from Employee_info ,Project_info, employee_project_r

    where  Employee_info.employee_id='20100101' and Employee_info.employee_id=employee_project_r.employee_id

             and employee_project_r.project_number = Project_info.project_number

    执行结果如下:

     

    八、涉及到相关业务逻辑的存储过程和触发器设计

    (1)创建存储过程“stuff_pr”,查询员工号为“20100101”的员工所有的相关信息

    SQL语句如下:

    create procedure stuff_pr as

    select distinct * from Employee_info as e

       left join Department_info on e.department_number = Department_info.department_number

       left join position_info on e.position_number = position_info.position_number

       left join employee_project_r on e.employee_id = employee_project_r.employee_id

       left join Project_info on employee_project_r.project_number = Project_info.project_number

       left join Salary_info on e.employee_id = Salary_info.employee_id

    where e.employee_id='20100101'

    执行结果如下:

    SQL语句如下:

    exec stuff_pr

     

    (2)创建触发器“project_del”,当删除项目表里的项目时,对应的雇员与项目关系表中的数据也同时删除。

    SQL语句如下:

    create trigger ep_project_del

    on employee_project_r

    after delete

    as

    if exists(select * from Project_info,deleted where Project_info.project_number = deleted.project_number)

      begin

           delete from Project_info

           where Project_info.project_number in (select project_number from deleted)

      end

     

    执行结果如下:

    SQL语句如下:

    delete from employee_project_r

    where project_number = '1901'

    执行结果如下:

    SQL语句如下:

    select * from employee_project_r

    执行结果如下:

    SQL语句如下:

    select * from Project_info

    执行结果如下:

     

    九、心得体会

    通过本次数据设计,熟悉了PowerDesigner设计数据库的流程,更加深化了对数据库的设计规则和设计原理的理解,提高了动手设计数据库的能力。通过对数据库中简单少数数据的操作验证了数据库设计的合理性,在实际项目中可以通过验证来完善数据库。

    在对数据库进行操作的过程中,提高了对SQL语句的掌握程度,加深了对存储过程和触发器的理解。通过数据库来管理和查询数据能够很大程度地提高工作效率。

     

    十、相关参考文献

    [1]雷景生,叶文珺,楼越焕.数据库原理及应用(第2版)[M].北京:清华大学出版社,2015

     

    展开全文
  • 基于java的企业员工信息管理系统设计与实现上传的项目源码配置好环境和数据库均可以运行,为了方便大家对于java的学习,作为毕业设计的参考也是非常合适的,欢迎大家交流!
  • 此次数据库设计只能在一些收集到的基本材料与个人直观认识的基础上,简单模仿中等规模的酒店设计管理系统,并将其抽象成一个由三部门组成、实现三大服务的系统。 二、部门的划分 饮食部门  它是酒店基本部门之一。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,082
精华内容 22,032
关键字:

员工信息管理系统数据库设计