连锁超市数据库及代码.docx
- 文档编号:23862561
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:19
- 大小:216.82KB
连锁超市数据库及代码.docx
《连锁超市数据库及代码.docx》由会员分享,可在线阅读,更多相关《连锁超市数据库及代码.docx(19页珍藏版)》请在冰豆网上搜索。
连锁超市数据库及代码
实验7数据库设计
一、实验目的
使学生能够对给定的实际需求,选择一种编程语言或开发工具,完成数据库设计,并实现数据的查询等操作,从而掌握数据库应用系统的设计方法和步骤。
熟悉大型数据库管理系统的结构与组成;
熟悉数据库应用系统的设计方法和开发过程;
掌握一种大型数据库管理系统(SQLSERVER或ORACLE)的应用技术和开发工具的使用;
熟悉数据库设计工具的使用;
熟悉数据库安全的相关知识和技术;
熟悉数据库系统的管理和维护。
二、实验时数4学时
三、实验内容
完整实践数据库应用系统设计的工程过程:
需求分析\概念设计\逻辑设计\物理设计\实施\编写应用程序:
(1)需求分析:
选定一个应用,对所设计的数据库系统有一定的调研分析,其结果应该以简单的需求分析说明书\数据字典和数据流图(2级数据流即可)表示;
(2)概念分析:
使用E-R图作为描述工具.描述出局部和全局的E-R图;
(3)逻辑设计:
将E-R图转化为相应的关系模式,并根据范式理论进行优化分析,关系模式不少于3个;
(4)物理设计:
根据需要设计必要的索引等结构;
(5)实施:
以某种DBMS为工具创建出完整的数据库.在数据库中要表现出的知识点包括:
①设置数据完整性(参照完整性、实体完整性、自定义完整性(包括触发器)。
②设置用户,并相应设计用户的权限和角色(用户设计至少3个,有不同的权限)。
③建立存储过程完成相关操作至少2个,以文件方式保存。
④
(6)编写应用程序:
利用开发工具C++、JAVA、.NET平台或其它动态网页开发工具编写应用程序;
(7)以上内容,请详细描述,并有必要抓图;
(8)提交系统的源码程序、设计性实验报告。
表名
中文名
MerchInfo
商品信息表
Factory
供货表
Provide
供货商表
Supermaket
超市表
Sale
销售表
Users
顾客表
Member
会员表
商品信息表(MerchInfo)
字段名
字段类型
长度
字段值约束
主/外键
对应中文名
MerchID
Int
4
Notnull
F
商品编号
MerchName
varchar
50
Notnull
商品名称
MerchPrice
varchar
50
Notnull
商品价格
BarCode
money
4
Notnull
条形码
顾客表(User)
字段名
字段类型
长度
字段值约束
主/外键
对应中文名
UserID
varchar
10
Notnull
F
顾客编号
UserName
varchar
25
Notnull
顾客名称
UserPW
varchar
50
Notnull
顾客密码
UserStyle
int
2
Notnull
顾客类型
会员表(Member)
字段名
字段类型
长度
字段值约束
主/外键
对应中文名
MemberName
varchar
10
Notnull
F
会员姓名
MemberCard
varchar
20
Notnull
会员卡号
TotalCost
Money
4
Notnull
累计金额
RegDate
Datetime
8
Notnull
注册日期
销售表(Sale)
字段名
字段类型
长度
字段值约束
主/外键
对应中文名
SaleID
varchar
10
Notnull
F
流水账号
MerCHID
varchar
10
Notnull
P
商品编号
SaleDate
Datetime
8
Notnull
销售日期
SaleNum
Int
4
Notnull
销售数量
SalePrice
Money
4
Notnull
销售金额
UserID
varchar
10
Notnull
P
顾客编号
供货表(Factory)
字段名
字段类型
长度
字段值约束
主/外键
对应中文名
FactoryID
varchar
10
Notnull
F
供货编号
FactoryDate
varchar
Notnull
供货日期
FactorySL
varchar
4
Notnull
供货数量
MerCHID
varchar
10
Notnull
P
商品编号
ProvideID
varchar
10
Notnull
P
供货商号
供货商表(Provide)
字段名
字段类型
长度
字段值约束
主/外键
对应中文名
ProvideID
varchar
10
Notnull
F
供货商号
ProvideName
varchar
50
Notnull
供货商名称
ProvideAddress
varchar
250
Notnull
供货商地址
ProvidePhone
varchar
25
Notnull
供货商电话
仓库表(Supermaket)
字段名
字段类型
长度
字段值约束
主/外键
对应中文名
SupermaketID
int
10
Notnull
F
仓库编号
SupermaketName
varchar
50
Notnull
仓库名称
SupermaketAddress
varchar
250
Notnull
仓库地址
库存表
字段名
字段类型
长度
字段值约束
对应中文名
KCL
varchar
10
Notnull
库存量
SPBH
varchar
10
Notnull
商品编号
CKBH
varchar
10
Notnull
仓库编号
创建数据库
createdatabaseSuperMarketdb
onprimary(
name=SuperMarketdb,
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\SuperMarketdb.mdf',
size=100MB,
maxsize=200MB,
filegrowth=20MB)
logon(
name=SuperMarketlog,
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\SuperMarketdb.ldf',
size=60MB,
maxsize=200MB,
filegrowth=20MB)
go
/*创建商品信息表*/
CREATETABLEMerchInfo(
MerchIDintPrimarykey,
MerchNamevarchar(50)NOTNULL,
MerchPricemoneyNOTNULL,
BarCodevarchar(20)NOTNULL,
)
GO
/*创建供货表*/
CREATETABLEFactory(
FactoryIDvarchar(10)Primarykey,
FactoryDateDatetimeNOTNULL,
FactorySLChar(4)NOTNULL,
MerCHIDvarchar(10)NOTNULL,
ProvideIDvarchar(10)NOTNULL)
GO
/*创建供货商表*/
CREATETABLEProvide(
ProvideIDvarchar(10)Primarykey,
ProvideNamevarchar(50)NOTNULL,
ProvideAddressvarchar(250)NOTNULL,
ProvidePhonevarchar(25)NOTNULL)
GO
/*创建仓库表*/
CREATETABLESupermaket(
SupermaketIDintPrimarykey,
SupermaketNamevarchar(10)NULL,
SupermaketAddressvarchar(10)NULL)
GO
/*创建会员表*/
CREATETABLEMember(
MemberNamevarchar(10)Primarykey,
MemberCardvarchar(20)NOTNULL,
TotalCostmoneyNOTNULL,
RegDatedatetimeNOTNULL)
GO
/*创建购买表*/
CREATETABLESale(
SaleIDintPrimarykey,
MerCHIDvarchar(10)NOTNULL,
SaleDatedatetimeNOTNULL,
SaleNumintNOTNULL,
SalePricemoneyNOTNULL,
UserIDvarchar(10)NOTNULL)
GO
/*创建顾客表*/
CREATETABLEUsers(
UserIDvarchar(10)Primarykey,
UserNamevarchar(25)NOTNULL,
UserPWvarchar(50)NOTNULL,
UserStyleintNOTNULL,)
GO
/*----------添加表信息----------*/
MerchInfo:
INSERTINTOMerchInfo(MerchID,MerchName,MerchPrice,BarCode)
VALUES('001','德芙巧克力','20','11112222');
INSERTINTOMerchInfo(MerchID,MerchName,MerchPrice,BarCode)
VALUES('002','上好佳','2','11113333');
INSERTINTOMerchInfo(MerchID,MerchName,MerchPrice,BarCode)
VALUES('003','火腿肠','5','11114444');
INSERTINTOMerchInfo(MerchID,MerchName,MerchPrice,BarCode)
VALUES('004','面包','4','11115555');
Users:
INSERTINTOUsers(UserID,UserName,UserPW,UserStyle)
VALUES('001','张一','985211','1');
INSERTINTOUsers(UserID,UserName,UserPW,UserStyle)
VALUES('002','王二','211985','2');
INSERTINTOUsers(UserID,UserName,UserPW,UserStyle)
VALUES('003','朱三','369852','2');
INSERTINTOUsers(UserID,UserName,UserPW,UserStyle)
VALUES('004','郭四','456321','1');
Member:
INSERTINTOMember(MemberName,MemberCard,TotalCost,RegDate)
VALUES('张一','001','200','2014-12-1');
INSERTINTOMember(MemberName,MemberCard,TotalCost,RegDate)
VALUES('王二','002','100','2014-11-1');
INSERTINTOMember(MemberName,MemberCard,TotalCost,RegDate)
VALUES('朱三','003','350','2014-9-3');
INSERTINTOMember(MemberName,MemberCard,TotalCost,RegDate)
VALUES('郭四','004','700','2014-8-1');
Sale:
INSERTINTOsale(SaleID,MerCHID,SaleDate,SaleNum,SalePrice,UserID)
VALUES('0000','001','2014-12-28','30','750','002');
INSERTINTOsale(SaleID,MerCHID,SaleDate,SaleNum,SalePrice,UserID)
VALUES('0001','002','2014-12-16','10','500','001');
INSERTINTOsale(SaleID,MerCHID,SaleDate,SaleNum,SalePrice,UserID)
VALUES('00002','003','2014-12-15','15','400','003');
Factory:
INSERTINTOfactory(FactoryID,FactoryDate,FactorySL,MerCHID,ProvideID)
VALUES('005','2014-12-1','500','002','010');
INSERTINTOfactory(FactoryID,FactoryDate,FactorySL,MerCHID,ProvideID)
VALUES('006','2014-12-11','200','001','012');
INSERTINTOfactory(FactoryID,FactoryDate,FactorySL,MerCHID,ProvideID)
VALUES('007','2014-12-24','500','003','011');
Provide:
INSERTINTOprovide(ProvideID,ProvideName,ProvideAddress,ProvidePhone)
VALUES('003','蒙牛','内蒙古','36363636');
INSERTINTOprovide(ProvideID,ProvideName,ProvideAddress,ProvidePhone)
VALUES('004','伊利','太原','56565656');
INSERTINTOprovide(ProvideID,ProvideName,ProvideAddress,ProvidePhone)
VALUES('005','飞鹤','唐山','78787878');
Supermaket:
INSERTINTOSupermaket(SupermaketID,SupermaketName,SupermaketAddress)
VALUES('01','一号超市','中华大街');
INSERTINTOSupermaket(SupermaketID,SupermaketName,SupermaketAddress)
VALUES('02','二号超市','光明大街');
INSERTINTOSupermaket(SupermaketID,SupermaketName,SupermaketAddress)
VALUES('03','三号超市','人民路');
/*----------创建表间约束----------*/
/*供货表中商品编号、供应商号分别与商品信息表、供应商表之间的外键约束*/
ALTERTABLEFactoryADD
CONSTRAINTFK_Factory_MerCHIDFOREIGNKEY(MerCHID)REFERENCESMerchInfo(MerCHID),
CONSTRAINTFK_Factory_ProvideFOREIGNKEY(ProvideID)REFERENCESProvide(ProvideID)
/*销售表中商品编号与商品信息表之间的外键约束*/
ALTERTABLESaleADD
CONSTRAINTFK_Sale_MerchInfoFOREIGNKEY(MerChID)REFERENCESMerchInfo(MerchID)ONDELETECASCADE
/*入库表中商品编号与商品信息表之间的外键约束*/
ALTERTABLEStockADD
CONSTRAINTFK_Stock_MerchInfoFOREIGNKEY(MerchID)REFERENCESMerchInfo(MerchID)ONDELETECASCADE
GO
/*----------创建索引 ----------*/
--在顾客表上建立一个以顾客编号、顾客密码为索引项的非聚集索引
CREATEnonclusteredINDEXIX_UsersONUsers(UserID,UserPW)
GO
--在商品信息表上建立一个以商品编号为索引项的非聚集索引
CREATEnonclusteredINDEXIX_MerchInfoONMerchInfo(MerchID)
GO
--在购买表上建立一个以购买编号、购买日期为索引项的非聚集索引
CREATEnonclusteredINDEXIX_SaleONSale(SaleID,SaleDate)
GO
--在供货商表上建立一个以供货商号、供货商名称为索引项的非聚集索引
CREATEnonclusteredINDEXIX_ProvideONProvide(ProvideID,ProvideName)
GO
/*----------创建视图----------*/
--创建用于查看商品信息情况的视图
CREATEVIEWv_MerchInfo
AS
SELECTMerchIDas商品编号,
MerchNameas商品名称,
MerchPriceas商品价格,
BarCodeas条形码
FROMMerchInfo
GO
创建用于查询销售明细记录的视图
CREATEVIEWv_Sale
AS
SELECTMerchInfo.MerchNameas商品名称,
MerchInfo.BarCodeas条形码,
MerchInfo.MerchPriceas商品价格,
Sale.SalePriceas销售金额,
Sale.SaleNumas销售数量,
Sale.SaleDateas销售日期
FROMSaleINNERJOIN
MerchInfoONSale.MerChID=MerchInfo.MerchID
GO
创建用于供货情况的视图
CREATEVIEWv_Factory
AS
SELECTFactory.FactorySLas供货数量,
Factory.FactoryDateas供货日期,
Provide.ProvideNameas供货商,
Provide.ProvideAddressas供货地址,
Provide.ProvidePhoneas供货电话
FROMFactoryINNERJOIN
ProvideONFactory.ProvideID=Provide.ProvideID
GO
--1.查询顾客表姓名为张一的信息
select*
fromusers
whereusername='张一';
--2.查询供货商编号为的货物信息
select*
fromProvide
whereProvideID='003'
--3.为供应商表添入一条数据
insert
intoprovide
values('007','豆奶','邯郸','89898989')
--4.创建角色Super并对顾客修改,查询和插入的功能赋给角色Super
createroleSuper
grantupdate,select,insert
onUsers
toSuper
--5.收回角色Super顾客表插入的功能
revokeinsert
onUsers
fromSuper
--6.删除角色Super
droproleSuper
--7.使用exists语句查询供货商地址为唐山的货物编号,货物名称和供货商电话
selectProvideID,ProvideName,ProvidePhone
fromProvide
whereexists
(select*fromProvide
whereProvide.Providename='唐山')
--8.建立触发器,当向供应商表插入新信息后,打印出:
添加一条供应商信息字样
createtriggerprovide_insert
onprovideafterinsert
asbeginprint'添加一条供应商信息'
end
go
insertintoprovide
values('008','芝麻糊','石家庄','67676767')
--9.创建查看一个超市信息的存储过程
createprocedurepro_Supermaket
as
selectSupermaketID,SupermaketName,SupermaketAddressfromSupermaket;
execpro_Supermaket
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 连锁 超市 数据库 代码