含“@” 商品表 列名 商品编号 商品名称 单价 库存量 已售数量 数据类型 宽度 为空性 说明 int varchar Decimal(8,2) int int 50 √ √ √ 主关键字 单价大于0 库存量为非负数 已售数量为非负数 说明 采购订单表 列名 采购订单号 商品编号 员工编号 供应商编号 订购数量 订购日期 列名 销售订单号 商品编号 员工编号 客户编号 订购数量 订购日期 数据类型 宽度 为空性 int int int int int smalldatetime 数据类型 销售订单表 宽度 √ √ √ √ 为空性 主关键字 来自商品表的外键 来自员工表的外键 来自供应商表的外键 说明 int int int int int smalldatetime √ √ √ √ 主关键字 来自商品表的外键 来自员工表的外键 来自客户表的外键 六、数据库的实施(共65分)
创建数据库各种对象和执行查询的SQL语句 1.创建数据库(5分)
create database 销售管理 on primary
(name=Sales_data,
filename='d:\\data\\Sale_data.mdf', size=10mb,
maxsize=unlimited,
filegrowth=10%) log on
(name=Sales_log,
filename='d:\\data\\Sale_log.ldf', size=3mb, maxsize=5mb, filegrowth=1mb)
2.创建数据表并给表添加数据(20分) use 销售管理 go
create table 部门
(部门编号 int primary key,
部门名称 varchar(30) not null constraint UQ_DName unique, 部门主管 char(8), 备注 varchar(50)) go
create table 员工
(员工编号 int primary key,
姓名 varchar(20) not null,
性别 char(2) default '男' check(性别='男'or 性别='女'), 出生年月 smalldatetime, 聘任日期 smalldatetime,
工资 money check(工资between 800 and 100000),
部门编号 int foreign key(部门编号) references 部门(部门编号)) go
create table 供应商
(供应商编号 int primary key,
供应商名称 varchar(50) not null, 联系人姓名 char(8),
电话 char(13) check(len(电话)>=7 and len(电话)<=13), 地址 varchar(100),
\varchar(30) check(\like '%@%')) go
create table 客户
(客户编号 int primary key,
公司名称 varchar(50) not null, 联系人姓名 char(8),
电话 char(13) check(len(电话)>=7 and len(电话)<=13), 地址 varchar(100),
\varchar(30) check(\like '%@%')) go
create table 商品
(商品编号 int primary key,
商品名称 varchar(50) not null,
单价 decimal(8,2) check(单价>0), 库存量 int check(库存量>=0), 已销售量 int check(已销售量>=0)) go
create table 采购订单
(采购订单号 int primary key,
商品编号 int references 商品(商品编号), 员工编号 int references 员工(员工编号),
供应商编号 int references 供应商(供应商编号), 订购数量 int,
订购日期 smalldatetime default getdate()) go
create table 销售订单
(销售订单号 int primary key,
商品编号 int references 商品(商品编号), 员工编号 int references 员工(员工编号), 客户编号 int references 客户(客户编号), 订购数量 int,
订购日期 smalldatetime default getdate())
表添加的数据如下图所示:
3.创建数据库各种对象(共25分) a.创建试图(5分):创建一个客户订购情况的视图,包括客户编号,公司名称,商品编号,商品名称,单价和订购数量,并对视图进行加密。 create view 客户订购情况 with encryption as
select a.客户编号,公司名称,c.商品编号,商品名称,单价,订购数量 from 客户 a join 销售订单 as b on a.客户编号=b.客户编号 join 商品 as c on c.商品编号=b.商品编号 b.创建索引(5分):在销售管理系统中,经常要按照客户名称查询信息,通过给客户表的公司名称创建一个唯一非聚集索引来提高查询速度。 Create unique index ix_cname On 客户(公司名称)
c.创建用户定义函数(5分):创建标量函数,根据商品名称统计某种商品销售的次数
create function 销售次数
(@商品名称 varchar(50)='路由器') returns int begin
declare @销售次数 int select @销售次数=count(*) from 商品 join 销售订单
on 商品.商品编号=销售订单.商品编号 where 商品名称=@商品名称
相关推荐: