管理信息系统(MIS)设计

实验4:管理信息系统(MIS)设计

实验目的

  1. 熟悉数据库设计的基本步骤和流程、熟练掌握ER模型设计工具。
  2. 体会数据模型和数据模式在数据库设计中的作用,以及与数据库管理系统之间的关系。

实验平台与工具

  1. Windows、Linux操作系统
  2. 数据库管理系统PostgreSQL
  3. ER设计工具(如EZDML,http://www.ezdml.com/)。

实验内容及要求

按照“图书借阅系统数据库设计.pdf”完成数据库管理系统设计的全过程。

具体包括:

  1. 需求分析
  2. 概念结构设计
  3. 逻辑结构设计
  4. 物理设计与实施
  5. 数据库访问
  6. 数据库维护(可选)

1.使用SQL创建数据库 CREATE DATABASE 图书借阅系统 ON PRIMARY (NAME = ’图书借阅系统_data’, FILENAME = ‘E:\lx\DataBase\data\图书借阅系统_mdf’, SIZE = 10MB, FILEGROWTH = 10% ) LOG ON (NAME = ’图书借阅系统_log’, FILENAME = ‘E:\lx\DataBase\data\图书借阅系统_ldf’, SIZE = 10MB, MAXSIZE = 100MB, FILEGROWTH = 10% ) 2.创建四张基本表 CREATE TABLE 图书 ( 图书编号 CHAR(13) NOT NULL PRIMARY KEY, 图书名称 VARCHAR(50) NOT NULL, 图书分类号 CHAR(7) NOT NULL, 作者 CHAR(10) NOT NULL, 出版社 CHAR(30), 价格 MONEY NOT NULL CHECK (价格>0) CONSTRAINT Book_Borrow_fkflh FOREIGN KEY (图书分类号) REFERENCES 图书类型 (图书 分类号) ) CREATE TABLE 读者 ( 证件号 CHAR(10) NOT NULL PRIMARY KEY, 姓名 CHAR(8) NOT NULL, 证件状态 CHAR(4) NOT NULL CHECK(证件状态 IN ('可用','失效')), 联系方式 CHAR(11) ) CREATE TABLE 图书类型 ( 图书分类号 CHAR(7) NOT NULL PRIMARY KEY, 图书分类名称 CHAR(20) NOT NULL, 描述信息 VARCHAR(50) ) CREATE TABLE 借阅 ( 证件号 CHAR(10) NOT NULL , 图书编号 CHAR(13) NOT NULL , 借阅日期 DATE NOT NULL, 应还日期 DATE NOT NULL, 归还日期 DATE, 罚款金 MONEY NOT NULL DEFAULT 0.0 CHECK(罚款金>=0.0), CONSTRAINT Book_Borrow_pkzjsh PRIMARY KEY (证件号,图书编号,借阅日期), CONSTRAINT Book_Borrow_fkzjh FOREIGN KEY (证件号) REFERENCES 读者(证件号), CONSTRAINT Book_Borrow_fktsbh FOREIGN KEY (图书编号) REFERENCES 图书(图书编号) ) 3.例题 例3-1 添加价格默认值10.00 例3-2 给读者表中的属性列“证件状态”添加默认值“可用” ALTER TABLE 读者 ADD DEFAULT ('可用') FOR 证件状态 例3-3 删除读者表中的“联系方式”字段 ALTER TABLE 读者 DROP COLUMN 联系方式 例3-4 为读者表增加一列属性“电话”,要求属性类型是CHAR(12) ALTER TABLE 读者 ADD 电话 CHAR(12) 例3-5 修改“图书”表中“图书名称”字段的属性,将数据类型改为VARCHAR(50),允许为空 值 ALTER TABLE 图书 ALTER COLUMN 图书名称 VARCHAR(50)NULL 例3-6 删除“图书类型”表 DROP TABLE 图书类型 例3-7 为类型是“计算机”的图书建立视图 CREATE VIEW 计算机图书 AS SELECT 图书.*,图书类型 .图书分类名称 FROM 图书 ,图书类型 WHERE 图书 .图书分类号=图书类型 .图书分类号 AND 图书类型 . 图书分类名称 LIKE '计算机%' 例3-8 建立视图“读者借书情况表” CREATE VIEW 读者借书情况表(读者证件号,读者姓名,图书名称,借书日期) AS SELECT 读者 .证件号,读者.电话,图书.图书名称,借阅.借阅日期 FROM 读者 ,图书 ,借阅 WHERE 读者.证件号=借阅 .证件号 AND 图书 . 图书编号 = 借阅.图书编号 SELECT * FROM 读者借书情况表 例3-9 删除“计算机图书”视图 DROP VIEW 计算机图书 例3-10 为“借阅表”中的“证件号”和“借阅日期”建立组合次索引 CREATE INDEX BookBorrowInfo_ZJH_JYRQ ON 借阅(证件号,借阅日期) 例3-11 为“图书”表中的图书分类号、图书名称、出版社字段分别建立次级索引 CREATE INDEX BookBorrowInfo_FLH ON 图书(图书分类号) CREATE INDEX BookBorrowInfo_TSMC ON 图书(图书名称) CREATE INDEX BookBorrowInfo_CBS ON 图书(出版社) 3.5 访问数据库 插入数据:图书类型表数据 INSERT INTO 图书类型(图书分类号,图书分类名称,描述信息) VALUES ('O411',' 电子类-电工技术','电子类图书'), ('O412 ','电子类-自动控制','NULL'), ('TP301','电子类-家店维修','电子类的家店维修'), ('TP312','计算机类-软件开发','NULL'), ('TP312.7','计算机类-其他','NULL'), ('TP312.8','计算机类-办公软件','NULL'), ('TP316.2','计算机类-操作系统','NULL'), ('TP317.2','计算机类-平面设计','NULL'), ('TP392','计算机类-数据库','NULL'), ('TP393','计算机类-网络技术','NULL'); INSERT INTO 图书(图书编号,图书名称,图书分类号,作者,出版社,价格) select'9787115179041','Excel 高效办公-市场与销售管理 ','TP312.8','沈登华','机械 工业出版社','49.0000'UNION select'9787115179042','Excel 高效办公-市场与销售管理','TP312.8','沈登华','机械 工业出版社','49.0000'UNION select'9787115179043','Excel 高效办公-市场与销售管理 ','TP312.8','沈登华','机械 工业出版社','49.0000'UNION select'9787115219618','随身查-Office办公高手应用技巧','TP312.8','沈丽','清华大 学出版社','12.8000'UNION select'9787115219619','随身查-Office办公高手应用技巧','TP312.8','沈丽','清华大 学出版社','12.8000'UNION select'9787115220577','说服力让你的PPT会说话','TP312.7','周丹','清华大学出版社 ','39.0000'UNION select'9787115220578','说服力让你的PPT会说话','TP312.7','周丹','清华大学出版社 ','39.0000'UNION select'9787115221671','精通 Linux 设备驱动程序开发','TP316.2','陈华亭','机械工 业出版社','89.0000'UNION select'9787115221672','精通 Linux 设备驱动程序开发','TP316.2','陈华亭','机械工 业出版社','89.0000'UNION select'9787115221673','精通 Linux 设备驱动程序开发','TP316.2','陈华亭','机械工 业出版社','89.0000'UNION select'9787115221674','精通 Linux 设备驱动程序开发','TP316.2','陈华亭','机械工 业出版社','89.0000'UNION select'9787115222817','spss统计分析标准教程','TP312.7','江铠同','机械工业出版社 ','48.0000'UNION select'9787115223104','Office 2003 办公应用完全','TP312.8','蒋健','清华大学出版 社','49.0000'UNION select'9787115223883','软件测试技术(第二版)','TP312','于丹','机械工业出版社 ','32.0000'UNION select'9787115224132','苹果 Mac OS X10.6 SnowLeopard 超级手册','TP316.2','陈廷飞 ','清华大学出版社','79.0000'UNION select'9787115224262','电路基础','O411','王红','安徽科学技术出版社 ','24.0000'UNION select'9787115224996','模拟电子技术','O412','陈晨','安徽科学技术出版社 ','22.0000'UNION select'9787115225184','电子技术基础与技能','O411','张震','中国商务出版社 ','25.0000'UNION select'9787115225481','Office办公软件案例教程','TP312.8','杨启申','清华大学出版 社','24.5000'UNION select'9787115226075','Java 程序设计实例教程','TP312','渝万里','科学出版社 ','32.5000'UNION select'9787115226334','电工基础','O412','陈忠彪','安徽科学技术出版社 ','24.0000'UNION select'9787115226662','常用工具软件','TP312.8','李大力','中国农业出版社 ','32.0000'UNION select'9787115226845','计算机主板维修从业技能全程通','TP301','徐燕','安徽科学技 术出版社','39.0000'UNION select'9787115226846','计算机主板维修从业技能全程通','TP301','徐燕','安徽科学技 术出版社','39.0000'UNION select'9787115227430','深入 Linux 内核架构','TP316.2','陈登','清华大学出版社 ','149.0000'UNION select'9787115227478','金蝶ERP-K/3培训教程','TP312.7','杨万华','清华大学出版社 ','59.0000'UNION select'9787115227607','金蝶KIS模拟实训-财务培训教程','TP312.7','李丽莎','清华大 学出版社','35.0000' INSERT INTO 读者(证件号,姓名,证件状态,联系方式) select'H200121001','程晓曦','可用','18909346754'UNION select'H200121002','周鼎','可用','15809346721'UNION select'H200121004','马骁','可用','15609346733'UNION select'H200121006','王小虎','可用','15809346746'UNION select'H200121009','王力','可用','13609346778'UNION select'H200121010','杨华','可用','15209346790'UNION select'J200902001','王浩粗','可用','13209346752'UNION select'J200902002','王潮','失效','15209346757'UNION select'J200902003','催定科','可用','15620934672'UNION select'J200902005','李晨','失效','13209346950'UNION select'J200902006','周大华','可用','13709346751'UNION select'J200902007','马威','可用','13809346732'UNION select'J200902008','马晓华','可用','13909346724'UNION select'W200912001','崔灿','可用','13409346780'UNION select'W200912002','李涵','可用','13209346759'UNION select'W200912003','陈晓晨','可用','15209346712'UNION select'W200912004','陈晓琪','失效','15820934670' INSERT INTO 借阅(证件号,图书编号,借阅日期,应还日期,归还日期,罚款金) select'H200121001','9787115179041','2015/9/10',' 2015/10/10','2016/01/01','10.0000'UNION select'H200121002','9787115179042','2015/10/11','2015/11/11', '2016/01/01','10.0000'UNION select'H200121004','9787115226846','2015/7/10','2015/8/10','2015/9/10','3.0000' UNION select'H200121006','9787115227430','2015/8/10','2015/9/10','2015/9/15','0.5000' UNION select'J200902001','9787115224262','2015/4/6','2015/5/6','2015/5/10','0.4000'UN ION select'J200902005','9787115227607','2015/7/10','2015/8/10','2015/8/10','0.0000' UNION select'J200902006','9787115225481','2015/4/5','2015/5/5','2015/5/5','0.0000'UNI ON select'J200902006','9787115226334','2015/4/5','2015/5/5','2015/6/5','3.0000'UNI ON select'J200902006','9787115227478','2015/4/5','2015/5/5','2015/5/5','0.0000'UNI ON select'J200902006','9787115227430','2015/4/5','2015/5/5','2015/5/5','0.0000'UNI ON select'J200902006','9787115220577','2015/8/10','2015/9/10','2015/9/10','0.0000' UNION select'J200902006','9787115220577','2015/4/5','2015/5/5','2015/5/5','0.0000'UNI ON select'J200902006','9787115219619','2015/9/9','2015/10/9','2016/01/01','10.0000 'UNION select'J200902007','9787115224262','2015/7/10','2015/8/10','2015/8/10','0.0000' UNION select'J200902007','9787115223104','2015/9/18','2015/10/18','2015/10/18','0.000 0'UNION select'W200912002','9787115222817','2015/5/6','2015/6/6','2015/6/16','1.0000'UN ION select'W200912003','9787115224132','2015/7/10','2015/8/10','2015/8/10','0.0000' UNION select'W200912004','9787115224996','2015/6/6','2015/7/6','2015/8/6','3.0000'UNI ON select'W200912004','9787115223883','2015/9/18','2015/10/18','2015/10/18','0.000 0'UNION select'W200912004','9787115223883','2015/11/10','2015/11/10', '2016/01/01','10.0000' 插入表格结果如下: 例3-12 查询作者“杨万华”编写的图书名称、出版社和价格 SELECT 图书名称,出版社,价格 FROM 图书 WHERE 作者='杨万华' 例3-13 查询图书“计算机主板维修从业技能全程通”的价格 SELECT DISTINCT 图书名称,价格 FROM 图书 WHERE 图书名称='计算机主板维修从业技 能全程通' 例3-14 统计图书馆每本图书(图书名称相同)的馆藏量,并按照馆藏量由多到少排列 SELECT 图书名称,COUNT(*) 总馆藏量 FROM 图书 GROUP BY 图书名称 ORDER BY 总馆藏量 DESC 例3-15 查询读者“王小虎”所借图书的情况 SELECT 姓名,图书名称,借阅.借阅日期 ,借阅.归还日期 FROM 图书,读者,借阅 WHERE 读者.证件号=借阅.证件号 AND 图书.图书编号=借阅.图书编号 AND 姓名='王小虎' 例3-16 统计每位读者的借书数量 SELECT 读者.姓名,COUNT(*) 借书数量 FROM 读者,借阅 WHERE 读者.证件号=借阅.证件号 GROUP BY 读者.姓名 例3-17 查询不可以借阅图书的读者 SELECT 姓名 AS 不可借阅读书的读者,证件状态 FROM 读者 WHERE 读者.证件状态='失效' 例3-18 查询借阅图书超期归还的读者信息,包括读者的证件号和姓名 SELECT 读者.证件号,读者.姓名 FROM 读者,借阅 WHERE 读者.证件号=借阅.证件号 AND 借阅.应还日期应还日期 AND 读者.证件号=借阅.证件号 AND 借阅.归还日期 is NULL 例3-20 统计截止到2015年9月共借出多少本书 SELECT COUNT(*) 借书总量 FROM 借阅 WHERE 借阅日期<'2015-09-01' 例3-21 将读者“陈晓琪”的证件状态设置为“可用” UPDATE 读者 SET 证件状态='可用' where 姓名='陈晓琪' 例3-22 删除姓名为“李涵”的读者的借阅信息 DELETE FROM 借阅 where 证件号=(SELECT 证件号 FROM 读者 WHERE 姓名='李涵') 例3-23 增加一条图书信息 INSERT INTO 图书(图书编号,图书名称,图书分类号,作者,出版社,价格) VALUES('9787115231011','C++程序设计','TP301','谭浩强','清华大学出版社','24.00') 例3-24 “王潮”在“2015/10/13”借了一本“模拟电子技术”,并且应该在一个月后还书 SELECT 证件号 FROM 读者 WHERE 姓名='王潮' SELECT 图书编号 FROM 图书 WHERE 图书名称='模拟电子技术' INSERT INTO 借阅(证件号,图书编号,借阅日期,应还日期,归还日期,罚款金) VALUES('J200902002','9787115226334','2015/10/13','2015-11-13','','') 例3-25 更新借阅表中证件号='W200912004'和图书编号='9787115224996'的罚款金 UPDATE 借阅 SET 罚款金=0.1*(SELECT DATEDIFF(day,归还日期,getdate()) FROM 借阅 WHERE 证件号='W200912004' AND 图书编号='9787115224996' ) WHERE 证件号='W200912004' AND 图书编号='9787115224996' 例3-26 在“借阅表”中建立一个插入触发器 CREATE TRIGGER Insert_借阅 ON 借阅 FOR INSERT AS IF (SELECT COUNT(*) FROM 读者,inserted WHERE 读者.证件号=inserted.证件号)=0 BEGIN PRINT '没有该读者信息' ROLLBACK TRANSACTION END 例3-27 在“借阅表”中建立一个更新触发器 CREATE TRIGGER UPDATE_借阅 ON 借阅 FOR UPDATE AS IF UPDATE(借阅日期) BEGIN PRINT '不能手工修改借阅日期' ROLLBACK TRANSACTION END 例3-28 在“读者”表中建立删除触发器 CREATE TRIGGER DELETE_读者 ON 读者 FOR DELETE AS DELETE FROM 借阅 WHERE 证件号 IN (SELECT 证件号 FROM Deleted)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值