1、数据库设计优秀作品范例数据库设计与实现实训报告完成人: 完成时刻:2012年12月21日项目名称:超市商品管理系统项目功能:1.入库表、出库表、供给商表、营业员表、销售表的录入和贮存;2.依照用销售表的要求出各个商品的销售额和所有商品的销售总额单;3.依照用入库表的要求出各个商品的进价额单;4.由供给商表、入库表生成商品所属供给商表;5.生成商品盈利表;6.生成商品表。数据库设计与制作:一、表结构:一、GYSB(供给商信息表)的创建。列名说明数据类型长度约束GYSBH供应商编号Char8主键NAME姓名Char20不允许为空SEX性别Char3检查(check)约束ADDRESS地址Char5
2、0不允许为空PHONE电话Varchar220不允许为空二、RKB(入库表) 的创建。列名说明数据类型长度约束SPBH商品编号Char8主键SPMC商品名称VarChar220不允许为空,外键GYSBH供应商编号Char8不允许为空,外键SPSL数量Number7不允许为空PRICE单价(元)Number7不允许为空LEIBIE类别VarChar220不允许为空GUIGE规格VarChar220不允许为空CFWZ存放位置VarChar250不允许为空 YT用途VarChar2100不允许为空RQ日期DATE默认为空3、CKB(出库表)的创建。列名说明数据类型长度约束SPBH商品编号Char8不
3、允许为空,外键NAME商品名称VarChar220主键SPSL数量Number7不允许为空PRICE单价(元)Number7不允许为空YYYH营业员号Char 20不允许为空,外键RQ日期DATE默认为空4、YEYB(营业员信息表)的创建。列名说明数据类型长度约束YYYH营业员号Char 20主键NAME营业员姓名VarChar220不允许为空PHONE电话Varchar220不允许为空五、SPXSB(商品销售表) 的创建。列名说明数据类型长度约束SPBH商品编号Char8主键NAME商品名称VarChar220不允许为空SPSL数量Number7不允许为空PRICE单价(元)Number7不
4、允许为空XSE销售额VarChar220允许为空RQ日期DATE默认为空二、SQL语句:注意:创建数据库语句 ,请写在这里一、创建GYSB(供给商信息表)create table GYSB(GYSBH char(8) primary key, NAME char(8) not null, SEX char(2) check(SEX in(男,女), ADDRESS char(50) not null, PHONE Varchar2(20) not null);注意:创建约束的语句写在这里-为GYSB表创建名为GYSB_squ(序号)序列。-create sequence GYSB_squinc
5、rement by 1start with 1nocyclenocache;-利用序列的SQL语句对表GYSB插入数据。-insert into GYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)values,李林,男,陕西省商洛市丹循环工业经济区,001);insert into GYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)values,李海,男,重庆市渝中区,001);insert into GYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)values,张东林,男,河南省信阳市平桥区,001);insert into GYSB(
6、GYSBH,NAME,SEX,ADDRESS,PHONE)values,王明,男,河南省驻马店市永辉批发超市,001);insert into GYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)values,王林林,女,河南省信阳市浉河区,01);insert into GYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)values,赵权,男,河南省信阳市羊山区,074);-为GYSB表创建名为GYSB_view的视图。-create view GYSB_viewasselect * from GYSB;-为GYSB表的GYSBH,NAME字段创建索引。-c
7、reate index GYSBH_sqlon GYSB(GYSBH,NAME)tablespace userspctfree 10;-按照营业员编号(GYSBH_no)创建一个查询GYSB表,查询供给商的姓名(NAME)的进程。-create or replace procedure pro_GYSB(GYSBH_no char)as XNAME char(8); DPHONE Varchar2(20);begin select NAME,PHONE into XNAME,DPHONE from GYSB where GYSBH=GYSBH_no; (供给商的姓名是:|XNAME); (电话
8、号码是:|DPHONE);exception when no_data_found then (供给商的编号为找到!);end;-按照供给商姓名创建一个查询GYSB表,来查询供给商的地址的进程。-create or replace procedure proce_GYSB(NAME_na char)as DADDRESS char(50);begin select ADDRESS into DADDRESS from GYSB where NAME=NAME_na; (供给商的地址是:|DADDRESS);exception when no_data_found then (供给商的姓名为找到
9、!);end;-创建程序包,此程序包有两个进程。进程按照营业员编号打印供给商的姓名、电话号码、地址。编写挪用程序执行(利用GYSB表)。-create or replace package pack_GYSBis procedure pro_GYSB(GYSBH_no char); procedure proce_GYSB(NAME_na char);end pack_GYSB;create or replace package body pack_GYSBas procedure pro_GYSB(GYSBH_no char)is XNAME char(8); DPHONE Varchar2
10、(20);begin select NAME,PHONE into XNAME,DPHONE from GYSB where GYSBH=GYSBH_no; (供给商的姓名是:|XNAME); (电话号码是:|DPHONE);exception when no_data_found then (供给商的编号为找到!);end;procedure proce_GYSB(NAME_na char)is DADDRESS char(50);begin select ADDRESS into DADDRESS from GYSB where NAME=NAME_na; (供给商的地址是:|DADDRE
11、SS);exception when no_data_found then (供给商的姓名为找到!);end;end; -在GYSB表上成立触发器,在更新表之前触发。并显示供给商的编号、姓名。-create trigger biud_GYSBbefore insert or update or deleteon GYSBbegin select GYSBH,NAME from GYSB ; (供给商的编号是:|DADDRESS); (供给商的姓名是:|NAME);end;注意:若是有事务,请写在这里二、RKB(入库表) 的创建。create table RKB(SPBH char(8) pri
12、mary key, SPMC varchar2(20) not null, GYSBH char(8) not null, SPSL number(7) not null, PRICE number(7) not null, LEIBIE varchar2(20) not null, GUIGE varchar2(20) not null, CFWZ varchar2(50) not null, YT varchar2(100) not null, RQ date default null, constraint fk_3 foreign key(SPMC) references CKB(NA
13、ME), constraint fk_4 foreign key(GYSBH) references GYSB(GYSBH); tablespace users pctfree 10 pctused 100 initrans 1 maxtrans 255;注意:创建约束的语句请写在这里。-为RKB表创建名为syn_RK的public 同义词,然后用select语句查询。-create public synonym syn_RK for RKBselect * from RKBselect * from syn_RK-为RKB表创建名为RKB_squ(序号)序列。-create sequence
14、 RKB_squstart with 100001nocyclenocacheorder;-利用序列的SQL语句对表RKB插入数据。-insert into RKB(SPBH,SPMC,GYSBH,SPSL,PRICE,LEIBIE,GUIGE,CFWZ,YT)values,雪碧,3,1000,3,饮料,500ml,饮料区,饮用);insert into RKB(SPBH,SPMC,GYSBH,SPSL,PRICE,LEIBIE,GUIGE,CFWZ,YT)values,五香瓜子,5,200,4,零食,30kg,食物区,吃);insert into RKB(SPBH,SPMC,GYSBH,SP
15、SL,PRICE,LEIBIE,GUIGE,CFWZ,YT)values,绿豆糕,7,500,3,食物,15kg,食物区,吃);insert into RKB(SPBH,SPMC,GYSBH,SPSL,PRICE,LEIBIE,GUIGE,CFWZ,YT)values,北京方便面,9,500,5,食物,5kg,食物区,吃);-为RKB表创建名为RKB_view的视图。-create view RKB_viewasselect SPBH,SPMC,GYSBH,SPSL,PRICE,RQ from RKB;-为RKB表的SPBH,SPMC字段创建索引。-create index RKB_sqlon
16、 RKB(SPBH,SPMC)tablespace userspctfree 10storage(initial 128k next 128k minextents 1 maxextents 100 pctincrease 5);-按照商品编号(SPBH_no)创建一个查询RKB表,返回商品的商品名称,数量,单价(SPPNAME,SSPSL,SPRICE)的进程。-create or replace procedure pro_RKB(SPBH_no char)as SPPNAME varchar2(20); SSPSL number(7) ; SPRICE number(7);begin s
17、elect SPSL,PRICE,SPMC into SPPNAME,SSPSL,SPRICE from RKB where SPBH=SPBH_no; (商品名称:|SPPNAME); (数量:|SSPSL); (单价:|SPRICE);exception when no_data_found then (商品编号为找到!);end pro_RKB;beginpro_RKB(100002);end;-按照商品编号(SPBH_no)创建一个查询RKB表,返回供给商编号(GYSBH)的进程。-create or replace procedure proce_RKB(SPBH_no char)a
18、s SGYSBH char(8);begin select GYSBH into SGYSBH from RKB where SPBH=SPBH_no; (供给商编号:|SGYSBH);exception when no_data_found then (商品编号为找到!);end proce_RKB;beginproce_RKB(100002);end;-编写函数以同意商品的商品编号来计算各类商品的金额。-create or replace function fun_RKB(SPBH_no char)return numberas i Char:=100001; x number(7); y
19、 number(7); RKB_sum number:=0;begin select SPSL,PRICE into x,y from RKB where SPBH=SPBH_no; for i in 100001.100004 loop RKB_sum:=x*y; end loop; return RKB_sum;exception when no_data_found then (商品编号为找到!);end fun_RKB;-创建程序包,此程序包有两个进程和一个函数。进程按照商品编号打印商品名称,数量,单价、供给商编号。函数按照商品编号返回各类商品的金额。编写挪用程序执行(利用RKB表)。
20、create or replace package pack_RKBis procedure pro_SPXSB(SPBH_no char); function fun_SPXSB(SPBH_no char)return number;end;create or replace package body pack_RKBas procedure pro_RKB(SPBH_no char)is SPPNAME varchar2(20); SSPSL number(7) ; SPRICE number(7);begin select SPSL,PRICE,SPMC into SPPNAME,SSP
21、SL,SPRICE from RKB where SPBH=SPBH_no; (商品名称:|SPPNAME); (数量:|SSPSL); (单价:|SPRICE);exception when no_data_found then (商品编号为找到!);end pro_RKB;procedure proce_RKB(SPBH_no char)is SGYSBH char(8);begin select GYSBH into SGYSBH from RKB where SPBH=SPBH_no; (供给商编号:|SGYSBH);exception when no_data_found then
22、(商品编号为找到!);end proce_RKB;function fun_RKB(SPBH_no char)return numberis i Char:=100001; x number(7); y number(7); RKB_sum number:=0;begin select SPSL,PRICE into x,y from RKB where SPBH=SPBH_no; for i in 100001.100004 loop RKB_sum:=x*y; end loop; return RKB_sum;exception when no_data_found then (商品编号为
23、找到!);end fun_RKB;end pack_RKB; -在RKB表上成立触发器,在更新表之前触发。不允许该商品编号是“100000”。-create trigger biud_RKBbefore insert or update or deleteon RKBbegin if(to_char(SPBH)!=100000)then raise_application_error(-20600,商品编号不能是“100000”); end if;end;注意:若是有事务,请写在这里。3、CKB(出库表)的创建。create table CKB(SPBH char(8) not null, N
24、AME varchar2(20) primary key, SPSL number(7) not null, PRICE number(7) not null, YYYH char(20) not null, RQ date default null, constraint fk_1 foreign key(YYYH) references YEYB(YYYH), constraint fk_2 foreign key(SPBH) references SPXSB(SPBH); tablespace users pctfree 10 pctused 100 initrans 1 maxtran
25、s 255;注意:创建约束语句,请写在这里。-为CKB表创建名为CKB_squ(序号)序列。-create sequence CKB_squstart with 100001nocyclenocacheorder;-利用序列的SQL语句对表CKB插入数据。-insert into CKB(SPBH,NAME,SPSL,PRICE,YYYH)values,雪碧,1000,3,1001);insert into CKB(SPBH,NAME,SPSL,PRICE,YYYH)values,五香瓜子,200,4,1002);insert into CKB(SPBH,NAME,SPSL,PRICE,YYY
26、H)values,绿豆糕,500,3,1004);insert into CKB(SPBH,NAME,SPSL,PRICE,YYYH)values,北京方便面,500,5,1005);-为CKB表创建名为CKB_view的视图。-create view CKB_viewasselect * from CKB;-为CKB表的SPMC字段创建索引。-create index CKBqlon CKB(NAME)tablespace userspctfree 10storage(initial 128k next 128k minextents 1 maxextents 100 pctincrease 5);-按照商品编号(SPBH_no)创建一个查询CKB表,返回商品的商品名称(SPNAME)的进程。-create or replace procedure pro_CKB(SPBH_no char)as SPNAME varchar2(20);begin select NAME into SPNAME from CKB where SPBH=SPBH_no; (商品名称:|SPNAME);exception when no_data_found then (商品编号为找到!);end pro_CKB;beginpro_CKB(100002);end;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1