连锁超市数据库及代码

连锁超市数据库及代码
连锁超市数据库及代码

连锁超市数据库及代码 The Standardization Office was revised on the afternoon of December 13, 2020

实验7 数据库设计

一、实验目的

使学生能够对给定的实际需求,选择一种编程语言或开发工具,完成数据库设计,并实现数据的查询等操作,从而掌握数据库应用系统的设计方法和步骤。

熟悉大型数据库管理系统的结构与组成;

熟悉数据库应用系统的设计方法和开发过程;

掌握一种大型数据库管理系统(SQL SERVER或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)

顾客表(User)

会员表 (Member)

销售表(Sale)

供货表(Factory)

供货商表(Provide)

仓库表(Supermaket)

库存表

创建数据库

create database SuperMarketdb

on primary(

name=SuperMarketdb ,

filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\', size=100MB,

maxsize=200MB,

filegrowth=20MB )

log on(

name=SuperMarketlog,

filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\', size=60MB,

maxsize=200MB,

filegrowth=20MB )

go

/*创建商品信息表*/

CREATE TABLE MerchInfo (

MerchID int Primary key,

MerchName varchar(50)NOT NULL,

MerchPrice money NOT NULL,

BarCode varchar(20)NOT NULL,

)

GO

/*创建供货表*/

CREATE TABLE Factory (

FactoryID varchar(10)Primary key, FactoryDate Datetime NOT NULL,

FactorySL Char(4)NOT NULL,

MerCHID varchar(10)NOT NULL, ProvideID varchar(10)NOT NULL)

GO

/*创建供货商表*/

CREATE TABLE Provide (

ProvideID varchar(10)Primary key,

ProvideName varchar(50)NOT NULL,

ProvideAddress varchar(250)NOT NULL,

ProvidePhone varchar(25)NOT NULL) GO

/*创建仓库表*/

CREATE TABLE Supermaket ( SupermaketID int Primary key, SupermaketName varchar(10)NULL, SupermaketAddress varchar(10)NULL) GO

/*创建会员表*/

CREATE TABLE Member (

MemberName varchar(10)Primary key, MemberCard varchar(20)NOT NULL, TotalCost money NOT NULL, RegDate datetime NOT NULL)

GO

/*创建购买表*/

CREATE TABLE Sale (

SaleID int Primary key,

MerCHID varchar(10)NOT NULL,

SaleDate datetime NOT NULL,

SaleNum int NOT NULL,

SalePrice money NOT NULL,

UserID varchar(10)NOT NULL)

GO

/*创建顾客表*/

CREATE TABLE Users(

UserID varchar(10)Primary key,

UserName varchar(25)NOT NULL,

UserPW varchar(50)NOT NULL,

UserStyle int NOT NULL,)

GO

/*----------添加表信息----------*/

MerchInfo:

INSERT INTO MerchInfo(MerchID,MerchName,MerchPrice,BarCode) VALUES('001','德芙巧克力','20','');

INSERT INTO MerchInfo(MerchID,MerchName,MerchPrice,BarCode) VALUES('002','上好佳','2','');

INSERT INTO MerchInfo(MerchID,MerchName,MerchPrice,BarCode) VALUES('003','火腿肠','5','');

INSERT INTO MerchInfo(MerchID,MerchName,MerchPrice,BarCode) VALUES('004','面包','4','');

Users:

INSERT INTO Users(UserID, UserName, UserPW, UserStyle) VALUES('001','张一','985211','1');

INSERT INTO Users(UserID, UserName, UserPW, UserStyle)

VALUES('002','王二','211985','2');

INSERT INTO Users(UserID, UserName, UserPW, UserStyle)

VALUES('003','朱三','369852','2');

INSERT INTO Users(UserID, UserName, UserPW, UserStyle)

VALUES('004','郭四','456321','1');

Member:

INSERT INTO Member(MemberName, MemberCard , TotalCost,RegDate) VALUES('张一','001','200','2014-12-1');

INSERT INTO Member(MemberName, MemberCard , TotalCost,RegDate) VALUES('王二','002','100','2014-11-1');

INSERT INTO Member(MemberName, MemberCard , TotalCost,RegDate) VALUES('朱三','003','350','2014-9-3');

INSERT INTO Member(MemberName, MemberCard , TotalCost,RegDate) VALUES('郭四','004','700','2014-8-1');

Sale:

INSERT INTO sale(SaleID,MerCHID, SaleDate, SaleNum, SalePrice ,UserID) VALUES('0000','001','2014-12-28','30','750','002');

INSERT INTO sale(SaleID,MerCHID, SaleDate, SaleNum, SalePrice ,UserID) VALUES('0001','002','2014-12-16','10','500','001');

INSERT INTO sale(SaleID,MerCHID, SaleDate, SaleNum, SalePrice ,UserID) VALUES('00002','003','2014-12-15','15','400','003');

Factory:

INSERT INTO factory(FactoryID,FactoryDate,FactorySL, MerCHID,ProvideID) VALUES('005','2014-12-1','500','002','010');

INSERT INTO factory(FactoryID,FactoryDate,FactorySL, MerCHID,ProvideID) VALUES('006','2014-12-11','200','001','012');

INSERT INTO factory(FactoryID,FactoryDate,FactorySL, MerCHID,ProvideID) VALUES('007','2014-12-24','500','003','011');

Provide:

INSERT INTO provide(ProvideID,ProvideName,ProvideAddress,ProvidePhone) VALUES('003','蒙牛','内蒙古','');

INSERT INTO provide(ProvideID,ProvideName,ProvideAddress,ProvidePhone) VALUES('004','伊利','太原','');

INSERT INTO provide(ProvideID,ProvideName,ProvideAddress,ProvidePhone) VALUES('005','飞鹤','唐山','');

Supermaket:

INSERT INTO Supermaket (SupermaketID, SupermaketName, SupermaketAddress) VALUES('01','一号超市','中华大街');

INSERT INTO Supermaket(SupermaketID, SupermaketName, SupermaketAddress) VALUES('02','二号超市','光明大街');

INSERT INTO Supermaket(SupermaketID, SupermaketName, SupermaketAddress) VALUES('03','三号超市','人民路');

/*----------创建表间约束----------*/

/*供货表中商品编号、供应商号分别与商品信息表、供应商表之间的外键约束*/

ALTER TABLE Factory ADD

CONSTRAINT FK_Factory_MerCHID FOREIGN KEY(MerCHID)REFERENCES MerchInfo (MerCHID),

CONSTRAINT FK_Factory_Provide FOREIGN KEY(ProvideID)REFERENCES Provide (ProvideID)

/*销售表中商品编号与商品信息表之间的外键约束*/

ALTER TABLE Sale ADD

CONSTRAINT FK_Sale_MerchInfo FOREIGN KEY( MerChID )REFERENCES MerchInfo (MerchID)ON DELETE CASCADE

/*入库表中商品编号与商品信息表之间的外键约束*/

ALTER TABLE Stock ADD

CONSTRAINT FK_Stock_MerchInfo FOREIGN KEY( MerchID)REFERENCES MerchInfo (MerchID)ON DELETE CASCADE

GO

/*----------创建索引 ----------*/

--在顾客表上建立一个以顾客编号、顾客密码为索引项的非聚集索引

CREATE nonclustered INDEX IX_Users ON Users(UserID, UserPW)

GO

--在商品信息表上建立一个以商品编号为索引项的非聚集索引

CREATE nonclustered INDEX IX_MerchInfo ON MerchInfo(MerchID)

GO

--在购买表上建立一个以购买编号、购买日期为索引项的非聚集索引

CREATE nonclustered INDEX IX_Sale ON Sale(SaleID, SaleDate)

GO

--在供货商表上建立一个以供货商号、供货商名称为索引项的非聚集索引

CREATE nonclustered INDEX IX_Provide ON Provide(ProvideID, ProvideName)

GO

/*----------创建视图----------*/

--创建用于查看商品信息情况的视图

CREATE VIEW v_MerchInfo

AS

SELECT MerchID as商品编号,

MerchName as商品名称,

MerchPrice as商品价格,

BarCode as条形码

FROM MerchInfo

GO

创建用于查询销售明细记录的视图

CREATE VIEW v_Sale

AS

SELECT as商品名称,

as条形码,

as商品价格,

as销售金额,

as销售数量,

as销售日期

FROM Sale INNER JOIN

MerchInfo ON=

GO

创建用于供货情况的视图

CREATE VIEW v_Factory

AS

SELECT as供货数量,

as供货日期,

as供货商,

as供货地址,

as供货电话

FROM Factory INNER JOIN

Provide ON=

GO

--1.查询顾客表姓名为张一的信息

select*

from users

where username='张一';

--2.查询供货商编号为的货物信息

select*

from Provide

where ProvideID='003'

--3.为供应商表添入一条数据

insert

into provide

values('007','豆奶','邯郸','')

--4.创建角色Super并对顾客修改,查询和插入的功能赋给角色Super

create role Super

grant update,select,insert

on Users

to Super

--5.收回角色Super顾客表插入的功能

revoke insert

on Users

from Super

--6.删除角色Super

drop role Super

--7.使用exists语句查询供货商地址为唐山的货物编号,货物名称和供货商电话

select ProvideID,ProvideName,ProvidePhone

from Provide

where exists

(select*from Provide

where='唐山')

--8.建立触发器,当向供应商表插入新信息后,打印出:添加一条供应商信息字样

create trigger provide_insert

on provide after insert

as begin print'添加一条供应商信息'

end

go

insert into provide

values('008','芝麻糊','石家庄','')

--9.创建查看一个超市信息的存储过程

create procedure pro_Supermaket

as

select SupermaketID, SupermaketName, SupermaketAddress from Supermaket; exec pro_Supermaket

相关主题
相关文档
最新文档