数据库设计优秀作品范例.docx

上传人:b****8 文档编号:29782830 上传时间:2023-07-26 格式:DOCX 页数:29 大小:20.30KB
下载 相关 举报
数据库设计优秀作品范例.docx_第1页
第1页 / 共29页
数据库设计优秀作品范例.docx_第2页
第2页 / 共29页
数据库设计优秀作品范例.docx_第3页
第3页 / 共29页
数据库设计优秀作品范例.docx_第4页
第4页 / 共29页
数据库设计优秀作品范例.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数据库设计优秀作品范例.docx

《数据库设计优秀作品范例.docx》由会员分享,可在线阅读,更多相关《数据库设计优秀作品范例.docx(29页珍藏版)》请在冰豆网上搜索。

数据库设计优秀作品范例.docx

数据库设计优秀作品范例

数据库设计与实现实训报告

完成人:

完成时刻:

2012年12月21日

项目名称:

超市商品管理系统

项目功能:

1.入库表、出库表、供给商表、营业员表、销售表的录入和贮存;

2.依照用销售表的要求出各个商品的销售额和所有商品的销售总额单;

3.依照用入库表的要求出各个商品的进价额单;

4.由供给商表、入库表生成商品所属供给商表;

5.生成商品盈利表;

6.生成商品表。

数据库设计与制作:

一、表结构:

一、GYSB(供给商信息表)的创建。

列名

说明

数据类型

长度

约束

GYSBH

供应商编号

Char

8

主键

NAME

姓名

Char

20

不允许为空

SEX

性别

Char

3

检查(check)约束

ADDRESS

地址

Char

50

不允许为空

PHONE

电话

Varchar2

20

不允许为空

二、RKB(入库表)的创建。

列名

说明

数据类型

长度

约束

SPBH

商品编号

Char

8

主键

SPMC

商品名称

VarChar2

20

不允许为空,外键

GYSBH

供应商编号

Char

8

不允许为空,外键

SPSL

数量

Number

7

不允许为空

PRICE

单价(元)

Number

7

不允许为空

LEIBIE

类别

VarChar2

20

不允许为空

GUIGE

规格

VarChar2

20

不允许为空

CFWZ

存放位置

VarChar2

50

不允许为空

YT

用途

VarChar2

100

不允许为空

RQ

日期

DATE

默认为空

3、CKB(出库表)的创建。

列名

说明

数据类型

长度

约束

SPBH

商品编号

Char

8

不允许为空,外键

NAME

商品名称

VarChar2

20

主键

SPSL

数量

Number

7

不允许为空

PRICE

单价(元)

Number

7

不允许为空

YYYH

营业员号

Char

20

不允许为空,外键

RQ

日期

DATE

默认为空

4、YEYB(营业员信息表)的创建。

列名

说明

数据类型

长度

约束

YYYH

营业员号

Char

20

主键

NAME

营业员姓名

VarChar2

20

不允许为空

PHONE

电话

Varchar2

20

不允许为空

五、SPXSB(商品销售表)的创建。

列名

说明

数据类型

长度

约束

SPBH

商品编号

Char

8

主键

NAME

商品名称

VarChar2

20

不允许为空

SPSL

数量

Number

7

不允许为空

PRICE

单价(元)

Number

7

不允许为空

XSE

销售额

VarChar2

20

允许为空

RQ

日期

DATE

默认为空

二、SQL语句:

注意:

创建数据库语句,请写在这里

一、创建GYSB(供给商信息表)

createtableGYSB

(GYSBHchar(8)primarykey,

NAMEchar(8)notnull,

SEXchar

(2)check(SEXin('男','女')),

ADDRESSchar(50)notnull,

PHONEVarchar2(20)notnull);

注意:

创建约束的语句写在这里

-------------为GYSB表创建名为GYSB_squ(序号)序列。

--------

createsequenceGYSB_squ

incrementby1

startwith1

nocycle

nocache;

---------------利用序列的SQL语句对表GYSB插入数据。

--------

insertintoGYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)

values,'李林','男','陕西省商洛市丹循环工业经济区','001');

insertintoGYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)

values,'李海','男','重庆市渝中区','001');

insertintoGYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)

values,'张东林','男','河南省信阳市平桥区','001');

insertintoGYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)

values,'王明','男','河南省驻马店市永辉批发超市','001');

insertintoGYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)

values,'王林林','女','河南省信阳市浉河区','01');

insertintoGYSB(GYSBH,NAME,SEX,ADDRESS,PHONE)

values,'赵权','男','河南省信阳市羊山区','074');

-------------为GYSB表创建名为GYSB_view的视图。

-------------

createviewGYSB_view

as

select*fromGYSB;

---------------为GYSB表的GYSBH,NAME字段创建索引。

-------

createindexGYSBH_sql

onGYSB(GYSBH,NAME)

tablespaceusers

pctfree10;

----------------按照营业员编号(GYSBH_no)创建一个查询GYSB表,查询供给商的姓名(NAME)的进程。

-------------------------

createorreplaceprocedurepro_GYSB(GYSBH_nochar)

as

XNAMEchar(8);

DPHONEVarchar2(20);

begin

selectNAME,PHONEintoXNAME,DPHONEfromGYSBwhereGYSBH=GYSBH_no;

('供给商的姓名是:

'||XNAME);

('电话号码是:

'||DPHONE);

exception

whenno_data_foundthen

('供给商的编号为找到!

');

end;

----------------按照供给商姓名创建一个查询GYSB表,来查询供给商的地址的进程。

----------------------------

createorreplaceprocedureproce_GYSB(NAME_nachar)

as

DADDRESSchar(50);

begin

selectADDRESSintoDADDRESSfromGYSBwhereNAME=NAME_na;

('供给商的地址是:

'||DADDRESS);

exception

whenno_data_foundthen

('供给商的姓名为找到!

');

end;

------------------创建程序包,此程序包有两个进程。

进程按照营业员编号打印供给商的姓名、电话号码、地址。

编写挪用程序执行(利用GYSB表)。

----------------------------

createorreplacepackagepack_GYSB

is

procedurepro_GYSB(GYSBH_nochar);

procedureproce_GYSB(NAME_nachar);

endpack_GYSB;

 

createorreplacepackagebodypack_GYSB

as

procedurepro_GYSB(GYSBH_nochar)

is

XNAMEchar(8);

DPHONEVarchar2(20);

begin

selectNAME,PHONEintoXNAME,DPHONEfromGYSBwhereGYSBH=GYSBH_no;

('供给商的姓名是:

'||XNAME);

('电话号码是:

'||DPHONE);

exception

whenno_data_foundthen

('供给商的编号为找到!

');

end;

procedureproce_GYSB(NAME_nachar)

is

DADDRESSchar(50);

begin

selectADDRESSintoDADDRESSfromGYSBwhereNAME=NAME_na;

('供给商的地址是:

'||DADDRESS);

exception

whenno_data_foundthen

('供给商的姓名为找到!

');

end;

end;

---------------------在GYSB表上成立触发器,在更新表之前触发。

并显示供给商的编号、姓名。

----------

createtriggerbiud_GYSB

beforeinsertorupdateordelete

onGYSB

begin

selectGYSBH,NAMEfromGYSB;

('供给商的编号是:

'||DADDRESS);

('供给商的姓名是:

'||NAME);

end;

注意:

若是有事务,请写在这里

二、RKB(入库表)的创建。

createtableRKB

(SPBHchar(8)primarykey,

SPMCvarchar2(20)notnull,

GYSBHchar(8)notnull,

SPSLnumber(7)notnull,

PRICEnumber(7)notnull,

LEIBIEvarchar2(20)notnull,

GUIGEvarchar2(20)notnull,

CFWZvarchar2(50)notnull,

YTvarchar2(100)notnull,

RQdatedefaultnull,

constraintfk_3foreignkey(SPMC)referencesCKB(NAME),

constraintfk_4foreignkey(GYSBH)referencesGYSB(GYSBH));

tablespaceusers

pctfree10

pctused100

initrans1maxtrans255;

注意:

创建约束的语句请写在这里。

-----为RKB表创建名为syn_RK的public同义词,然后用select语句查询。

-------

createpublicsynonymsyn_RKforRKB

select*fromRKB

select*fromsyn_RK

------------为RKB表创建名为RKB_squ(序号)序列。

----------------

createsequenceRKB_squ

startwith100001

nocycle

nocache

order;

---------------利用序列的SQL语句对表RKB插入数据。

-------

insertintoRKB(SPBH,SPMC,GYSBH,SPSL,PRICE,LEIBIE,GUIGE,CFWZ,YT)

values,'雪碧','3',1000,3,'饮料','500ml','饮料区','饮用');

insertintoRKB(SPBH,SPMC,GYSBH,SPSL,PRICE,LEIBIE,GUIGE,CFWZ,YT)

values,'五香瓜子','5',200,4,'零食','30kg','食物区','吃');

insertintoRKB(SPBH,SPMC,GYSBH,SPSL,PRICE,LEIBIE,GUIGE,CFWZ,YT)

values,'绿豆糕','7',500,3,'食物','15kg','食物区','吃');

insertintoRKB(SPBH,SPMC,GYSBH,SPSL,PRICE,LEIBIE,GUIGE,CFWZ,YT)

values,'北京方便面','9',500,5,'食物','5kg','食物区','吃');

-------------为RKB表创建名为RKB_view的视图。

-------------

createviewRKB_view

as

selectSPBH,SPMC,GYSBH,SPSL,PRICE,RQfromRKB;

---------------为RKB表的SPBH,SPMC字段创建索引。

------------

createindexRKB_sql

onRKB(SPBH,SPMC)

tablespaceusers

pctfree10

storage(initial128knext128kminextents1maxextents100pctincrease5);

----------------按照商品编号(SPBH_no)创建一个查询RKB表,返回商品的商品名称,数量,单价(SPPNAME,SSPSL,SPRICE)的进程。

-------------------------

createorreplaceprocedurepro_RKB(SPBH_nochar)

as

SPPNAMEvarchar2(20);

SSPSLnumber(7);

SPRICEnumber(7);

begin

selectSPSL,PRICE,SPMCintoSPPNAME,SSPSL,SPRICEfromRKBwhereSPBH=SPBH_no;

('商品名称:

'||SPPNAME);

('数量:

'||SSPSL);

('单价:

'||SPRICE);

exception

whenno_data_foundthen

('商品编号为找到!

');

endpro_RKB;

begin

pro_RKB('100002');

end;

----------------按照商品编号(SPBH_no)创建一个查询RKB表,返回供给商编号(GYSBH)的进程。

-------------------------

createorreplaceprocedureproce_RKB(SPBH_nochar)

as

SGYSBHchar(8);

begin

selectGYSBHintoSGYSBHfromRKBwhereSPBH=SPBH_no;

('供给商编号:

'||SGYSBH);

exception

whenno_data_foundthen

('商品编号为找到!

');

endproce_RKB;

begin

proce_RKB('100002');

end;

----------------编写函数以同意商品的商品编号来计算各类商品的金额。

--------------

createorreplacefunctionfun_RKB(SPBH_nochar)

returnnumber

as

iChar:

=100001;

xnumber(7);

ynumber(7);

RKB_sumnumber:

=0;

begin

selectSPSL,PRICEintox,yfromRKBwhereSPBH=SPBH_no;

foriin100001..100004loop

RKB_sum:

=x*y;

endloop;

returnRKB_sum;

exception

whenno_data_foundthen

('商品编号为找到!

');

endfun_RKB;

------------------创建程序包,此程序包有两个进程和一个函数。

进程按照商品编号打印商品名称,数量,单价、供给商编号。

函数按照商品编号返回各类商品的金额。

编写挪用程序执行(利用RKB表)。

createorreplacepackagepack_RKB

is

procedurepro_SPXSB(SPBH_nochar);

functionfun_SPXSB(SPBH_nochar)returnnumber;

end;

 

createorreplacepackagebodypack_RKB

as

procedurepro_RKB(SPBH_nochar)

is

SPPNAMEvarchar2(20);

SSPSLnumber(7);

SPRICEnumber(7);

begin

selectSPSL,PRICE,SPMCintoSPPNAME,SSPSL,SPRICEfromRKBwhereSPBH=SPBH_no;

('商品名称:

'||SPPNAME);

('数量:

'||SSPSL);

('单价:

'||SPRICE);

exception

whenno_data_foundthen

('商品编号为找到!

');

endpro_RKB;

procedureproce_RKB(SPBH_nochar)

is

SGYSBHchar(8);

begin

selectGYSBHintoSGYSBHfromRKBwhereSPBH=SPBH_no;

('供给商编号:

'||SGYSBH);

exception

whenno_data_foundthen

('商品编号为找到!

');

endproce_RKB;

functionfun_RKB(SPBH_nochar)

returnnumber

is

iChar:

=100001;

xnumber(7);

ynumber(7);

RKB_sumnumber:

=0;

begin

selectSPSL,PRICEintox,yfromRKBwhereSPBH=SPBH_no;

foriin100001..100004loop

RKB_sum:

=x*y;

endloop;

returnRKB_sum;

exception

whenno_data_foundthen

('商品编号为找到!

');

endfun_RKB;

endpack_RKB;

---------------------在RKB表上成立触发器,在更新表之前触发。

不允许该商品编号是“100000”。

------------------

createtriggerbiud_RKB

beforeinsertorupdateordelete

onRKB

begin

if(to_char(SPBH)!

='100000')then

raise_application_error(-20600,'商品编号不能是“100000”');

endif;

end;

注意:

若是有事务,请写在这里。

3、CKB(出库表)的创建。

createtableCKB

(SPBHchar(8)notnull,

NAMEvarchar2(20)primarykey,

SPSLnumber(7)notnull,

PRICEnumber(7)notnull,

YYYHchar(20)notnull,

RQdatedefaultnull,

constraintfk_1foreignkey(YYYH)referencesYEYB(YYYH),

constraintfk_2foreignkey(SPBH)referencesSPXSB(SPBH));

tablespaceusers

pctfree10

pctused100

initrans1maxtrans255;

注意:

创建约束语句,请写在这里。

------------为CKB表创建名为CKB_squ(序号)序列。

---------------

createsequenceCKB_squ

startwith100001

nocycle

nocache

order;

---------------利用序列的SQL语句对表CKB插入数据。

-----------

insertintoCKB(SPBH,NAME,SPSL,PRICE,YYYH)

values,'雪碧',1000,3,'1001');

insertintoCKB(SPBH,NAME,SPSL,PRICE,YYYH)

values,'五香瓜子',200,4,'1002');

insertintoCKB(SPBH,NAME,SPSL,PRICE,YYYH)

values,'绿豆糕',500,3,'1004');

insertintoCKB(SPBH,NAME,SPSL,PRICE,YYYH)

values,'北京方便面',500,5,'1005');

-------------为CKB表创建名为CKB_view的视图。

-------------

createviewCKB_view

as

select*fromCKB;

---------------为CKB表的SPMC字段创建索引。

--------------

createindexCKBql

onCKB(NAME)

tablespaceusers

pctfree10

storage(initial128knext128kminextents1maxextents100pctincrease5);

----------------按照商品编号(SPBH_no)创建一个查询CKB表,返回商品的商品名称(SPNAME)的进程。

------------------------

-createorreplaceprocedurepro_CKB(SPBH_nochar)

as

SPNAMEvarchar2(20);

begin

selectNAMEintoSPNAMEfromCKBwhereSPBH=SPBH_no;

('商品名称:

'||SPNAME);

exception

whenno_data_foundthen

('商品编号为找到!

');

endpro_CKB;

begin

pro_CKB('100002');

end;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1