新闻发布管理系统数据库设计实践(完整文档)
来源:公文范文 发布时间:2022-10-24 12:05:07
下面是小编为大家整理的新闻发布管理系统数据库设计实践(完整文档),供大家参考。
新闻发布管理系统数据库设计实践 摘要 MySQL 是数据库系统重要的实现语言,是数据科学与大数据技术相关专业需要掌握的一门重要技术。
本报告以本学期所学的数据库原理和 MySQL 数据库管理技术为技术基础,以新闻发布管理系统数据库为应用对象,通过实现多媒体公司对其员工、新闻发布记录和工作绩效管理三个主要表格构成的管理系统,旨在实现数据库中表格的各种指标操作和元组操作,主要工作有:
一、数据库和表格的创建; 二、数据库基本操作; 三、表格中创建关键字、外键等操作,属性的添加、次序的调整等操作; 四、表格中数据的插入、修改、删除等基本操作; 五、数据的查询、索引和视图创建。
通过上述的操作,既加深了 MySQL 数据库管理技术的理论知识,又理解和掌握数据库操作及基本语法的使用。
关键字:
数据库、表格、关键字、外键、数据基本操作
主要内容 新闻(编号,分类,作者,字数,内容简述)
员工(工号,姓名,年龄,性别,基本工资,部门)
绩效(工号,新闻编号,奖励)
1、使用合适的数据类型来对数据对象进行命名; 2、使用 MySQL 语句创建新闻管理数据库; 3、创建新闻相关表格,并实现数据的插入、修改、查询和删除等操作; 4、使用索引和视图实现查询等管理操作。
在新闻表中将编号设为关键字,在员工表中将工号设为关键字,在新闻表中将作者创建为员工表工号的外键,在绩效表中奖工号和新闻编号分别设为新闻表的编号和员工表的工号的外键,并将它们设为主键,在新闻表中将作者创建索引。
在员工表中的姓名后添加属性入职时间,数据类型为年份。
在绩效表的工号后添加属性月份,数据类型为字符型,用以记录 2021 年具体某个月的绩效记录;在绩效表的奖励后添加属性罚款,数据类型为整数型,用以记录当月某员工的违规(如迟到一次扣 50 元等)罚款记录。在绩效表的最后添加属性备注,数据类型为字符型 20,用以记录各绩效的分类(如常规,发稿,迟到,早退等)。
在新闻表中插入信息,并自行完善其他信息:
(2021001,政治,20180102,50,“中国实现全面脱贫,向伟大复兴迈进”,
“发稿”)
(2021003,科技,20180101,150,“明星离去,中国又失一大国工匠” , “发稿”)
在员工表插入 20180101,20180102,20180103,20190101,20190102,20190103 等 6 人的信息,要求:
(1)姓名、年龄、性别自拟; (2)部门包括技术部 1 人,人事部 1 人,财务部 1 人,编辑部 3 人,其中20180101 和 20180102 均为编辑部人员; (3)2018 开头的基本工资定为 4000 元,而 2019 开头的基本工资定为 3800元。
绩效表插入上述 6 人的绩效标准如下:
(1)技术部每月 1500 元,新闻编号为 1; (2)人事部每月 1500 元,新闻编号为 2; (3)财务部每月 1500 元,新闻编号为 3; (4)编辑部每出一篇新闻稿相应的会有新闻编号和绩效奖励(100 字以内50 元/篇,100 字以上 60 元/篇,依此类推,每加 100 字奖励加 10 元); 如:20180102 员工出新闻稿一篇 50 字,将绩效表工号为 20180102 员工对应的信息修改,奖励 50,20180101 员工出新闻稿一篇 150 字,将绩效表工号为20180101 员工对应的信息修改,奖励 60.
(5)在绩效表中插入 20190102 员工因迟到罚款 150 元。
完成所有人员的信息表格后,进行下列查询:
(1)
查询工号为 20180102 的当月应发工资(基本工资+奖励-罚款); (2)
查询所有员工的当月应发工资; (3)
查询所有应发工资超过 6000 元的员工信息 (4)
查询所有应发工资超过 6000 元的员工的发稿量。
创建一个员工信息和应发工资的视图,实现下列操作:
(1)
查看编辑部所有员工的当月发稿量; (2)
查看当月罚款金额超过 100 元的员工姓名; (3)
查询当月无罚款记录的员工工号,并在奖励项+500,新闻编号为 10. 请添加 2021 年新招进员工信息:
新进人员 3 人,其中编辑部 1 人,财务部 1 人,人事部 1 人,基本工资 3800元具体信息自行完善。
将 2018 年员工的基本工资改成 4100 元,将 2019 年员工的基本工资改成 4000元。
实验步骤 建立数据库:
CREATE DATABASE xinwen; 建立表格:
CREATE TABLE 新闻表(
编号 SMALLINT UNSIGNED AUTO_INCREMENT KEY,
分类 VARCHAR(20) NOT NULL UNIQUE,
作者 VARCHAR(20),
字数 VARCHAR(20),
内容简述 VARCHAR(20)
)ENGINE=INNODB,CHARSET=utf8;
CREATE TABLE 员工(
工号 INT;
姓名 VARCHAR(20) NOT NULL UNIQUE,
年龄 SMALLINT(3),
性别 enum("男","女","保密"),
工资 VARCHAR(20),
部门 VARCHAR(20) )ENGINE=INNODB,CHARSET=utf8;
CREATE TABLE 绩效
工号 SMALLINT UNSIGNED,
新闻编号 TINYINT UNSIGNED,
奖励 TINYINT(3),
PRIMARY KEY(工号,新闻编号) )ENGINE=INNODB, CHARSET=utf8; 主键、外键设置: ALTER TABLE 新闻 ADD CONSTRAINT 新闻 FOREIGN KEY(作者) REFERENCES 员工(工号); ALTER TABLE 绩效 ADD CONSTRAINT 工号 FOREIGN KEY (工号) REFERENCES 新闻(编号); ALTER TABLE 绩效 ADD CONSTRAINT 新闻编号 FOREIGN KEY (新闻编号) REFERENCES 员工(工号); 绩效表添加属性 :
ALTER TABLE 绩效
ADD 月份 VARCHAR(50) AFTER 工号,
ADD 罚款 INT(50) AFTER 奖励,
ADD 备注 VARCHAR(50);
数据插入:
新闻表中插入信息:
INSERT INTO 新闻表 VALUES(1,"政治",20180102,50,"中国实现全面脱贫,向伟大复兴迈进"), (3,"科技",20180101,150,"明星离去,中国又失一大国工匠") 绩效表中插入信息:
INSERT INTO 绩效 VALUES
(20180103,"二月",1,1500, 0,"常规"),
(20190103,"二月",1,1500, 0,"常规"),
(20190101,"二月",2,1500, 0,"常规"),
(20190102,"二月",3,1500,150,"迟到" ),
(20180101,"二月",4,60,0,"发稿"),
(20180102,"二月",4,50,0,"发稿"); 插入发稿量:
ALTER TABLE 绩效 ADD 发稿量 VARCHAR(1000); UPDATE 绩效 SET 发稿量="32" WHERE 工号=20180101; UPDATE 绩效 SET 发稿量="42" WHERE 工号=20180102; UPDATE 绩效 SET 发稿量="18" WHERE 工号=20180103; UPDATE 绩效 SET 发稿量="32" WHERE 工号=20190101; UPDATE 绩效 SET 发稿量="12" WHERE 工号=20190102; UPDATE 绩效 SET 发稿量="31" WHERE 工号=20190103; 员工表插入数据:
INSERT INTO `员工` VALUES(20180101,"王刚",19,"男","4000","技术部"),(20180102,"万级",20,"男","4000","人事部"),(20180103,"华范德",19,"男 ","4000"," 财 务 部 "),(20190101," 将 阿 德 ",18," 男 ","3800"," 编 辑 部"),(20190102,"冰美",18,"女","3800","编辑部"),(20190103,"方格",19,"女","3800","编辑部"); 数据查询:
查询所有员工当月应发工资: CREATE TABLE 实际工资表(SELECT 员工.工号,员工.基本工资,绩效.奖励,绩效.罚款 FROM 员工 INNER JOIN 绩效 ON 员工.工号 = 绩效.工号); 员工应得的实际工资求和: CREATE TABLE 应得工资表(SELECT *,(基本工资+奖励+罚款) AS
实 际 工 资
FROM 实 际 工 资 表
WHERE 工 号
IN("20180101","20180102","20180103","20190101","20190102","20190103")); 查询工号为 20180103 的当月应发工资:
SELECT 实际工资 FROM 应得工资表 WHERE 工号="20180102"; 查询所有应发工资超过 5000 元的员工信息:
SELECT* FROM 应得工资表 WHERE 实际工资 > 5000; 查询所有应发工资超过 5000 元的员工的发稿量: CREATE TABLE 工资明细(SELECT 应得工资表.工号,绩效.发稿量,应得工资表.实际工资 FROM 绩效 INNER JOIN 应得工资表 ON 绩效.工号 = 应得工资表.工号);
条件查找工资超过 5000 元的员工的发稿量: SELECT * FROM 工资明细 WHERE 实际工资 > 5000; 创建视图: CREATE VIEW 员工信息绩效 AS
SELECT 员工.工号,员工.姓名,员工.年龄,员工.性别,员工.基本工资, 员工.部门,绩效.新闻编号,绩效.奖励,绩效.罚款,绩效.备注,绩效.发稿量 FROM 员工 INNER JOIN 绩效 ON 员工.工号 = 绩效.工号 查看编辑部所有员工的当月发稿量: SELECT 发稿量 FROM 员工信息绩效; 查看当月罚款金额超过 100 元的员工姓名:
SELECT * from 员工信息绩效 WHERE 罚款>100 ; 创建优秀员工视图:
CREATE VIEW 优秀员工 AS SELECT 员工信息绩效.工号,员工信息绩效.姓名,员工信息绩效.新闻编号,员工信息绩效.奖励
FROM 员工信息绩效 WHERE 罚款=0; 优秀员工奖励项: UPDATE 优秀员工 SET 奖励="3200" WHERE 工号=20180101; UPDATE 优秀员工 SET 奖励="3300" WHERE 工号=20180102; UPDATE 优秀员工 SET 奖励="2200" WHERE 工号=20180103; UPDATE 优秀员工 SET 奖励="2100" WHERE 工号=20190101; UPDATE 优秀员工 SET 奖励="2000" WHERE 工号=20190103; UPDATE 优秀员工 SET 新闻编号="4"; 添加新招进员工信息:
INSERT INTO 员工 VALUES
(20210101,"江湖",34,"男",3800,"编辑部"), (20210102,"大海",19,"男",3800,"财务部"), (20210103,"凯文",23,"女",3800,"人事部"); 更改数据: UPDATE 员工 SET 基本工资="4100" WHERE 工号=20180101; UPDATE 员工 SET 基本工资="4100" WHERE 工号=20180102;
UPDATE 员工 SET 基本工资="4100" WHERE 工号=20180103; UPDATE 员工 SET 基本工资="4000" WHERE 工号=20190101; UPDATE 员工 SET 基本工资="4000" WHERE 工号=20190102; UPDATE 员工 SET 基本工资="4000" WHERE 工号=20190103; 实验截图 建立数据库:
建立表格:
主键、外键设置:
绩效表添加属性:
新闻表中插入信息:
绩效表中插入信息:
插入发稿量:
员工表插入数据:
查询所有员工当月应发工资:
员工应得的实际工资求和:
查询工号为 20180103 的当月应发工资:
查询所有应发工资超过 5000 元的员工信息:
查询所有应发工资超过 5000 元的员工的发稿量:
条件查找工资超过 5000 元的员工的发稿量:
创建视图:
查看编辑部所有员工的当月发稿量:
查看当月罚款金额超过 100 元的员工姓名:
创建优秀员工视图:
优秀员工奖励项:
添加新招进员工信息:
更改数据:
总结 在编写 TSQL 语句时,报错的情况我自己看不懂,然后只能找同学帮忙才能解决。对数据表格中的数据插入、修改和删除操作;数据表格中的数据查看、索引等操作自己也有很多不懂,只有通过看书和 PPT同时问同学,通过仔细琢磨好几天才琢磨出来,只有慢慢去做了才懂然后综合课上所讲的内容,加上自己查看 PPT 还是能完成实验报告的,本次考察报告让我掌握了数据表格中索引的创建和删除操作和数据表格中视图的创建和删除等操作;
参考文献 [1]段震,浅谈 MySQL 数据库有关数据备份的几种方法山西电子技术,。
[2]苗雪兰,数据库系统原理及应用教程第 4 版,机械工业出版社。
[3]田玉倩,张文华.SQL Server 2008 数据库完整性的应用探索,中外企业家。
推荐访问:管理系统 新闻发布 实践 新闻发布管理系统数据库设计实践 新闻发布管理系统数据库设计实践报告