数据库管理系统实践报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计分析
我选择的是公司管理的数据库设计。

公司管理系统主要从各公司的信息、职工情况、原料供应商、公司产品信息及其供应情况和销售情况,这六个方面进行设计和联系。

公司管理系统的设计有助于公司协调与其他公司之间的关系,便于管理内部职工,容易查看公司的供求情况和销售情况,从而有效的管理公司。

二、方案设计
下面我将对自己所做的数据库做一个过程总结,并根据数据库分析,确定实体及实体间联系,及各个实体和联系的属性并设计出E-R图。

1.实体与实体之间的联系
实体:供应商、公司、产品、职工
联系:供应情况、销售情况
3.关系模式
原料供应商(供应商编号,供应商名字、供应数量)
公司(公司编号、公司名字、公司地址)
职工(职工编号、职工名字、、性别、职位、薪水)
产品(产品编号、产品名字、颜色、价格)
供应情况(供应商编号、公司编号、供应数量)
销售情况(产品编号、公司编号、数量)
三、SQL操作
(一)建立公司管理数据库
打开SQL 软件,首先建一个公司管理系统的数据库,直接右击数据库即可完成新建。

或也可通过新建查询完成,如下:
create database 公司管理
on
(name=公司管理_data,
filename='C:\Program Files\Microsoft SQL Server\公司管理_Data.mdf', size=10,maxsize=50,filegrowth=5)
log on
(name='公司管理_log',
filename='C:\Program Files\Microsoft SQL Server\公司管理_log.ldf', size=5,maxsize=25,filegrowth=5)
(二)建表
在建库之后,在此库中新建查询后即可输入代码进行建表。

需要注意的是,每个表的建立,最好都要确立主键,并且在char和int等词的使用需要确认。

通过not null、default、constraint等词可以对表的数据进行条件限制。

六个表的建立概括如下:
1.建立原料供应商表S
create table S
(Sno char(6) primary key,
Sname char(20) not null,
Scity char(20),
Squantity char(20))
2.建立公司表Company
create table Company
(Cno char(6) primary key,
Cname char(20) not null,
Ccity char(20))
3.建立职工表Workers
create table Workers
(Wsno char(6) primary key,
Wname char(20) not null,
Wsex char(2) default ('男'),
Wpost char(20),
Salary int check ( Salary>0))
4.建立产品表Products
create table Products
(Pno char(6) primary key,
Pname char(20) not null,
Pcolor char(10),
Price int,
constraint Price_check check (Price>0)) 5.建立供应情况表Supply
create table Supply
(Sno char(6),
Cno char(6),
供应量int,
constraint 供应量_check check (供应量>0), constraint P_K primary key(Sno,Cno))
6.建立销售情况表Sold
create table Sold
(Csno char(6),
Pno char(6),
月销售数量int,
constraint 月销售数量_check check (月销售数量>0),
constraint Primary_Key primary key(Csno,Pno) )
(三)插入数据
通过insert into + 表名 values( )即可在此表中插入数据。

也可直接打开表,在表中输入数据。

对六个表的数据处理情况如下:
1.原料数据表S中插入数据
insert into S values('S01','张三','杭州','23000')
insert into S values('S02','李四','杭州','26000')
insert into S values('S03','金五','南宁','32000')
insert into S values('S04','和六','南宁','33000')
insert into S values('S05','陈八','厦门','43000')
insert into S values('S06','章九','哈尔滨','83000')
insert into S values('S07','钱十','哈尔滨','82000')
insert into S values('S08','孙一','青岛','26000')
insert into S values('S09','李二','上海','56000')
insert into S values('S10','林三','上海','50000')
insert into S values('S11','王四','广州','67000')
2.公司表Company中插入数据
insert into Company values('C01','A有限公司','杭州')
insert into Company values('C02','B有限公司','北京')
insert into Company values('C03','C有限公司','南宁')
insert into Company values('C04','D有限公司','广州')
insert into Company values('C05','E有限公司','上海')
3.职工表Workers中插入数据
insert into Workers values('W01','李安','男','总经理',10000)
insert into Workers values('W02','张伟','男','总监',9000)
insert into Workers values('W03','王强','男','销售部经理',6000)
insert into Workers values('W04','孙俪','女','人事部经理',6000)
insert into Workers values('W05','陈静','女','企划部经理',6000)
insert into Workers values('W06','泉丽','女','财务部经理',6000)
insert into Workers values('W07','汪峰','男','经理助理',3000)
insert into Workers values('W08','戚琦','女','秘书',3000)
insert into Workers values('W09','刘男','男','助理',2000)
insert into Workers values('W10','李笑','女','助理',2000)
insert into Workers values('W11','和梦','女','助理',2000)
insert into Workers values('W12','周景','男','总裁秘书',5000)
insert into Workers values('W13','张美','女','助理秘书',2400)
insert into Workers values('W14','樊花','女','助理秘书',2400)
4.产品表Products中插入数据
insert into Products values('P01','iphone5','black',5800)
insert into Products values('P02','iphone5','white',6000)
insert into Products values('P03','ipad2','black',2300)
insert into Products values('P04','ipad2','white',2400)
insert into Products values('P05','数码相机','black',2400)
insert into Products values('P06','数码相机','blue',2300)
insert into Products values('P07','MP5','black',500)
insert into Products values('P08','MP5','white',550)
insert into Products values('P09','MP5','blue',400)
5.供应情况表Supply中插入数据
insert into Supply values('S01','C01',4600) insert into Supply values('S01','C02',1800) insert into Supply values('S02','C01',3700) insert into Supply values('S02','C02',3600) insert into Supply values('S03','C03',2900) insert into Supply values('S03','C04',9000) insert into Supply values('S04','C03',6900) insert into Supply values('S05','C03',5900) insert into Supply values('S06','C05',9800) insert into Supply values('S07','C01',4700) insert into Supply values('S08','C04',6000) insert into Supply values('S09','C02',6300) insert into Supply values('S10','C05',5300) insert into Supply values('S11','C05',7500)
6.销售情况表Sold中插入数据
insert into Sold values('C01','P01',900) insert into Sold values('C01','P02',900)
insert into Sold values('C01','P03',800) insert into Sold values('C01','P04',850)
insert into Sold values('C01','P05',800) insert into Sold values('C01','P06',950)
insert into Sold values('C01','P07',1600) insert into Sold values('C01','P08',1650)
insert into Sold values('C01','P09',1400) insert into Sold values('C02','P01',2500)
insert into Sold values('C02','P02',2300) insert into Sold values('C02','P03',2400)
insert into Sold values('C02','P04',2600) insert into Sold values('C03','P01',2550)
insert into Sold values('C03','P02',2550) insert into Sold values('C03','P03',2200)
insert into Sold values('C03','P04',2300) insert into Sold values('C04','P01',1050)
insert into Sold values('C04','P02',1100) insert into Sold values('C04','P03',800)
insert into Sold values('C04','P04',950) insert into Sold values('C04','P05',800)
insert into Sold values('C04','P06',900) insert into Sold values('C04','P07',1300)
insert into Sold values('C04','P08',1500) insert into Sold values('C04','P09',1200)
insert into Sold values('C05','P05',1800) insert into Sold values('C05','P06',1900)
insert into Sold values('C05','P07',2000) insert into Sold values('C05','P08',2100)
insert into Sold values('C05','P09',2000)
(四)查询、删除、更新
这里举几个典型的查询、删除以及更新数据的例子,涵盖了where、exists、having、order by、group by、in、not in等条件连词的运用,也有连接查询、update、delete、set等例子具体说明。

操作情况如下:
1.查询
(1)select * from S
(2)select Sno,Sname from S
where Scity='南宁' or Scity='杭州'
(3)select Cname from Company
where Cno='C01' or Cno='C02'
(4)select Wpost,Salary,count (Wsno) 人数from Workers group by Wpost,Salary
order by 人数
(5)select Wpost,COUNT (*) 人数from Workers
group by Wpost
having COUNT (*)>=2
order by 人数
(6)select Sno,Sname from S
where Sno in
(select Sno from Greports
where Cno in
(select Cno from Company
where Ccity='厦门' ))
(7)select Wsno,Wname,Salary
from Workers
where Salary>
(select AVG(Salary)
from Workers)
order by Salary
2.删除
(1)delete from Workers
where Salary>6000 and Salary<7000
(2)delete from Supply
where 供应量<1000
3.更新
(1)update Workers
Set Salary=Salary+100
where Salary<=3000
(2)update Supply
set 供应量=8250
where Sno='S11'
(五)索引操作
建立索引是加快查询速度的有效手段,但索引一旦建立,就由系统使用和维护,不需用户敢于。

索引建立是为了减少查询操作的时间,但如果数据增加删改频繁,系统会话费许多时间来维护索引,这时,就需要删除一些不必要的索引。

1.建立索引
create index Workers_Salary on Workers(Salary desc)
create index Products_Price on Products(Price)
2.删除索引
drop index Workers.Workers_Salary
drop index Products.Products_Price
(六)数据库权限
数据库管理系统的功能是保证这些决策的正确执行。

因而一个用户对某类数据具有什么样的操作权限是个政策问题。

需要管理员创建用户,并设置用户的操作权限。

1.创建登录用户
use master
create login company_user
with password='hp_123456',
default_database=公司管理
go
2.权限的设置
(1)登录用户company_user拥有对表S的insert等操作的权限
use 公司管理
go
grant insert,update,delete on S to company_user
(2)登录用户company_user对表Company没有insert等操作的权限
use 公司管理
go
deny insert,update,delete on Company to company_user
(3)取消登录用户company_user对表S的insert等操作的权限
use 公司管理
go
revoke insert,update,delete on S from company_user
四、设计感想
在这次数据库的课程设计----公司管理系统的设计过程中遇到了很多困难。

最大的困难就是确定库中表的内容以及表与表之间的关系,并能够相互连接起来。

通过本次的课程设计,我不仅巩固了所学的专业知识,同时对SQL在数据库设计有了更深的认识。

然而,由于知识水平和时间所限,本次课程设计难免有不尽如人意之处,希望老师能够指正。

在以后的学习中,我会努力掌握数据库管理系统及其应用开发技术的相关知识,相信以后的设计会越来越好。

相关文档
最新文档