数据库员工表和部门表

数据库员工表和部门表,第1张

部门表中的部门id,在员工表中设为外键。两个表用部门id相连。并且同时你删除部门表的某个部门时还能把相应部门下的员工数据删了。保证了数据的一致性。

create table employee

(

  emp_id number not null,

  emp_name varchar2(50) not null,

  CONSTRAINT pk_emp_id PRIMARY KEY (emp_id)

);

 

create table student

(

  stu_id number not null,

  stu_name varchar2(100),

  emp_id number not null,

  constraint fk_studentr foreign key (emp_id) references employee(emp_id) on delete cascade

);

该表的主键显然是员工编号,也不存在对非主属性对表的部分依赖,

所以该表已经是2NF,又因员工编号->部门编号,员工编号->部门名称,所以存在传递依赖,因此还达不到3NF的要求。

存在的问题:如果新增加一个还没有员工的部门,因为没有员工信息,所以该部门就无法插入,因此存在插入异常,同时,删除也存在同样的问题。

分为以下两个关系,

(员工编号,员工姓名,员工年龄,部门编号),主键为员工编号

(部门编号,部门名称,部门职责),主键为部门编号,

以上两个关系都满足3NF

使用GROUP BY分组。

假设表的信息为:Employee(CompName,DeptName,EmpName)

--创建数据表

CREATE TABLE Employee

(

CompName VARCHAR(20),  --子公司名称

DeptName VARCHAR(20),  --部门名称

EmpName VARCHAR(20)   --员工姓名

)

--插入测试数据

INSERT INTO Employee VALUES('北京公司', '人事部', '张')

INSERT INTO Employee VALUES('北京公司', '财务部', '赵')

INSERT INTO Employee VALUES('北京公司', '人事部', '孙')

INSERT INTO Employee VALUES('上海公司', '人事部', '王')

INSERT INTO Employee VALUES('上海公司', '财务部', '李')

--SQL查询

SELECT CompName, DeptName, Number = COUNT()

FROM Employee

GROUP BY CompName, DeptName

测试结果:

列出员工号为101的员工销售清单

SELECT

FROM

tb

WHERE

EmployeeID = '101';

列出各部门销售收入的汇总

SELECT

Dept,

SUM( income )

FROM

tb

GROUP BY

Dept;

求出销售收入最高的城市

SELECT TOP 1

city

FROM

tb

GROUP BY

city

ORDER BY

SUM( income ) DESC;

以上就是关于数据库员工表和部门表全部的内容,包括:数据库员工表和部门表、在某企业的信息管理数据库中,有一个表1所示的员工信息表,请指出该表可能存在的问题,并根据3NF对该表进、sql里 如何统计一个公司的部门人数 可以有很多子公司 每个子公司可以有相同的部门 每个部门有多个员工等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9770965.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存