数据库实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库原理实验指导
实验前准备:
请设计一个企业销售管理据库,其中需要保存的信息如下:
员工信息,包括:员工编号、员工姓名、性别、所属部门、职称、到职日、生日、薪水、填表日期;
客户信息,包括:客户号,客户名称,客户住址,客户电话、邮政编码;
产品信息,包括:产品编号,产品名称;
员工和客户可以签订订单,每签订一个订单,就要保存订单信息,包括:订单编号、客户号、业务员编号、订单金额、订货日期、出货日期、发票号码。
此外,每个订单可能涉及到多种产品,每种产品可能被多个订单订购。因此需要每个订单中每类产品的销售明细,包括每种产品的销售数量、单价、订单日期;要求:
(1)给出系统的ER图(可以用word或其它画图工具,如Visio画),要求画出所有的实体,联系,属性以及联系的类型;
(2)将ER图转换为关系模型;
实验一
实验名称:数据定义(2课时)
一、实验目的
1、理解数据库模式的概念,通过使用SQL SERVER企业管理器或者My Sql建立数据库和基本表。模式为人事表、客户表、销售表、销售明细表、产品表。熟悉SQL SERVER 企业管理器的使用,并将得到的表生成脚本,然后保存。
2、理解上述基本表之间的关系,建立关系表。
3、掌握修改表结构的基本方法
4、掌握索引和视图的创建方法
二、实验环境
MS SQL SERVER或者My Sql。
三、实验内容与步骤
1、建立一个数据库和五张表的表结构。
(1)/*员工人事表employee */
Create datebase sale;
create table employee(
emp_no char(5) Not null primary key,
emp_name char(10) Not null,
sex char(1) Not null,
dept char(4) null,
title char(6) null,
date_hired datetime null,
birthday datetime null,
salary int null,
addr char(50) null,
Mod_date datetime Default 0,
constraint c1 check(性别 in('男','女')) );
(2)/*客户表customer */
create TABLE customer(
cust_id char(5) Not null primary key,
cust_name char(20) Not null,
addr CHAR(40) Not null,
tel_no char(10) Not null,
zip char(6) null
);
(3)/*销售主表sales */
create TABLE sales(
order_no char(5) Not null primary key,
cust_id char(5) Not null,
sale_id CHAR(5) Not null,
tot_amt numeric(9,2) null,
order_date datetime null,
ship_date datetime null,
invoice_no char(10) null
);
(4)/*销货明细表 sales_item*/
create TABLE sales_item(
order_no char(5) Not null ,
prod_id char(5) Not null,
primary key(order_no,prod_id),
qty INT Not null,
unit_price numeric(9,2) Not null,
order_date datetime null,
CONSTRAINT FK_1 FOREIGN key(order_no) REFERENCES sales(order_no),
CONSTRAINT FK_2 FOREIGN key(prod_id) REFERENCES product(prod_id)
);
(5)/*产品名称表product */
create TABLE product(
prod_id char(5) Not null primary key,
prod_name char(20) Not null
);
2、建立5张表的关系图
3、修改表结构,通过SQL语句修改表约束。
①在表employee加入CHECK约束:输入的员工编号必须以E开头的5位数编号,性别只能为M/F。//check对于MySQL不起作用,只能在插入数据的基础上修改
use sale;
ALTER TABLE employee add CHECK(sex LIKE 'E%');
UPDATE employee
SET sex='F'
WHERE sex='女'
;
UPDATE employee
SET sex='M'
WHERE sex='男'
;
②为销售主表sales中的发票编号字段建立UNIQUE约束。
ALTER TABLE sales MODIFY invoice_no CHAR(10) UNIQUE NULL;
③所有性别属性,限制取值为f或m
4、员工表建立唯一索引:emp_no属性、升序;员工表建立聚集索引:emp_name属性、升序;CREATE UNIQUE INDEX emp_index ON employee(emp_no ASC);
//MYSQL不支持此类语法
5、创建视图:
①视图只含上海客户信息,即客户号、客户姓名、住址。
CREATE VIEW 上海客户信息AS
SELECT cust_id,cust_name,addr
FROM customer
WHERE addr LIKE '上海%';
②有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额。
CREATE VIEW emp_sales AS
SELECT sale_id,emp_name,order_no,tot_amt
FROM employee,sales
WHERE employee.emp_no=sales.sale_id;