《数据库系统原理》实验报告

2018-11-16 21:38

L_aavailqty INSERT; BEGIN

L_valuediff=NEW.quantity;/*获得插入订单明细项的订购数量*/ /*查询当前订单明细项对应零件供应记录中的可用数量*/ SELECT availqty INTO L_availqty FROM PartSupp

WHERE partkey=NEW.partkey AND suppkey=NEW.suppkey;

IF (L_availqty-L_valuediff >=0) THEN BEGIN

/*如果可用数量可以满足订单订购数量,则提示ENOUGH*/ RAISE NOTICE’Availqty quantity is ENOUGH’;

/*修改当前订单明细项对应零件供应记录中的可用数量*/ UPDATE PartSupp

SET availqty=availqty-L_valuediff

WHERE partkey=NEW.part AND suppkey=NEW.suppkey; END; ELSE

/*如果可用数量不能满足订单订购数量,则插入过程异常中断*/ RAISE EXCEPTION ‘Available quantity is NOT ENOUGH’; END IF; END;

(3)在Lineitem表上定义一个BEFORE DELETE触发器,当删除订单明细时,该订单明细项订购的数量要归还对应的零件供应记录。

CREATE OR REPLACE TRIGGER TRI_Lineitem_Quantity_UPDATE BEFORE DELETE ON Lineitem FOR EACH ROW AS

DECLARE

L_valuediff INSERT; L_availqty INSERT; BEGIN

/*获得删除订单明细项的订购数量*/ L_valuediff=-OLD.quantity;

/*修改当前订单明细项对应零件供应记录中的可用数量*/ UPDATE PartSupp

SET availqty=availqty-L_valuediff

WHERE partkey=NEW.partkey AND suppkey=NEW.suppkey; END;

(4)验证触发器TRI_Lineitem_Quantity_UPDATE。

/*查看1854号订单第1个明细项的零件和供应商编号、订购数量、可用数量*/ SELECT L.partkey,L.suppkey,L.quantity,PS.availqty FROM Lineitem L,PartSupp PS

WHERE L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND L.orderkey=1854 AND L.linenumber=1;

/*激活触发器,修改1854号订单第1个明细项的订购数量*/ UPDATE Lineitem SET quantity=quantity+5; WHERE orderkey=1854 AND lineitem=1;

/*再次查看1854号订单第1个明细项的相关信息,以验证触发器是否起作用*、 SELECT L.partkey,L.suppkey,L.quantity,PS.availqty FROM Lineitem L,PartSupp PS

WHERE L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND L.orderkey=1854 AND L.Linenumber=1;

3. 删除触发器

删除触发器TRI_Lineitem_Price_UPDATE。

DROP TRIGGER TRI_Lineitem_Price_UPDATE ON Lineitem;

四、实验心得

通过本次实验,进一步了解了触发器的定义,初步掌握了数据库触发器的设计和使用方法,成功动手设置了BEFORE触发器和AFTER触发器。实验过程中,由于基础知识薄弱与实践经验匮乏,遇到了不少难题,好在有老师和同学的帮助克服了困难。经过实践,更激励了我们继续努力学习,打好基础。

实验项目名称:数据库设计实验 实验学时: 4 同组学生姓名: 孟陈、陈晓雪、季佰军 实验地点: 1318 实验日期: 6.16 实验成绩: 批改教师: 批改时间:

一、实验目的和要求

掌握数据库设计基本方法及数据库设计工具。

二、实验内容及过程

掌握数据库设计基本步骤,包括数据库概念结构设计、逻辑结构设计,物理结构设计,

数据库魔石SQL语句生成。能够使用数据库设计工具进行数据库设计。

三、实验结果与分析

设计一个采购、销售和客户管理应用数据库。其中,一个供应商可以供应多种零件,一种零件也可以有多个供应商。一个客户订单可以订购多种供应商供应的零件。客户和供应商都分属不同的国家,而国家按世界五大洲八大洋划分地区。请利用PowerDesigner或者ERwin等数据库设计工具设计该数据库。

(1)数据库概念结构设计

① 零件Part:零件编号partkey、零件名称name、零件制造商mfgr、品牌brand、类型type、大小Size、零售价格retailprice、包装container、备注comment。主码:零件编号partkey。 create table part (

partkey int primary key, name char(20), mfgr char(100), brand char(20), type char(10), Sizee int, retailprice int,

comment varchar(150), container char(20)); ② 供应商Supplier:供应商编号suppkey、客户名称name、地址address、国籍nation、电话phone、备注comment等。主码:供应商编号suppkey。 create table supplier (

suppkey int primary key, name char(20), address varchar(50), nationkey int,

foreign key(nationkey) references nation(nationkey), phone char(20), comment varchar(200) );

③ 客户Customer:客户编号custkey、客户名称name、地址address、电话phone、国籍nation、备注comment。主码:客户编号custkey。

create table customer ( orderkey int primary key,

status char(20) check ( status in ( \ totalprice int, orderdate DATE, comment varchar(200), orderpriority int check ( orderpriority> 0 and orderpriority <3 ), shippriority int check ( shippriority> 0 and shippriority <3 ), clerk int );

④ 订单Order:订单编号orderkey、订单状态status、订单总价totalprice、订单日期order-date、订单优先级orderpriority、记账员clerk、运送优先级视频priority、备注comment。主码:订单编号orderkey。

⑤ 订单项Lineitem:订单项编号linenumber、所订零件号partkey、所订零件供应商号suppkey、零件数量quantity、零件总价extendedprice、折扣discount、税率tax、退货标记returnflag等。主码:订单项编号linenumber。

create table lineitem( linenumber int primary key, partkey int, foreign key(partkey) references part(partkey), suppkey int, foreign key(suppkey) references supplier(suppkey), quantity int, extendedprice long, discount long, tax float, returnflag char(1) check ( returnflag in ('N' or 'Y')) );

⑥ 国家Nation:国家编号nationkey、国家名称name、所属地区region、备注comment。主码:国家编号nationkey。

create table nation( nationkey int primary key, name char(15), regionkey int, foreign key(regionkey) references region(regionkey), comments varchar(200) );

⑦ 地区Region:地区编号regionkey、地区名称name、备注comment。主码:地区编号regionkey。

create table region ( regionkey int primary key, name char(20), comments varchar(200) );


《数据库系统原理》实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学经济法考试合同法试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: