1、项目名称 一、功能模块分解 参见教材第334-335页 二、数据库设计 1、设计表 (1)宿舍楼基本信息表(drom_table) 列名 数据类型 长度 约束 说明 drom_id Varchar2 6 PRIMARY KEY 宿舍楼编号 drom_sex Varchar2 2 CHECK 男女宿舍 drom_mobile Varchar2 15 NOT NULL 宿管处电话 drom_administ Varchar2 10 NOT NULL 宿舍管理人员 wor_id Varchar2 15 FOREIGN KEY(wor
2、id) 工作人员编号 (2)工人基本信息表(worker) 列名 数据类型 长度 约束 说明 wor_id Varchar2 15 PRIMARY KEY 工作人员编号 wor_name Varchar2 10 NOT NULL 工作人员姓名 wor_type Varchar2 10 NOY NULL 工作类型 salary NUMBER 10.2 NOTNULL 工资 wor_sex Varchar2 2 CHECK 性别 wor_mobile Varchar2 15 NOT NULL 联系方式 wor_date
3、 date NOT NULL 雇佣日期 (3)学生基本信息表(student) 列名 数据类型 长度 约束 说明 stu_id Varchar2 20 PRIMARY KEY 学号 stu_name Varchar2 10 NOT NULL 学生姓名 stu_sex Varchar2 2 CHECK 学生性别 stu_from Varchar2 20 NOT NULL 学生生源地 stu_date date NOT NULL 学生出生日期 stu_hiredate date NOT NULL 学生入学时间 s
4、tu_college Varchar2 20 NOT NULL 学生所在学院 stu_major Varchar2 20 NOT NULL 学生所学专业 stu_class Varchar2 20 NOT NULL 学生班级 stu_instructor Varchar2 20 NOT NULL 学生辅导员 stu_contact Varchar2 15 NOT NULL 辅导员联系方式 drom_id Varchar2 6 FOREIGN KEY(drom_id) 学生所在宿舍楼 room_id Varchar2 6 FORE
5、IGN KEY(room_id) 学生所在宿舍 (4)宿舍信息表(room) 列名 数据类型 长度 约束 说明 room_id Varchar2 6 PRIMARY KEY 宿舍编号 drom_id Varchar2 6 FOREIGN KEY(drom_id) 宿舍楼编号 room_sum Varchar2 6 NOT NULL 入住人数 room_full Varchar2 2 CHECK 是否住满 romm_clear Varchar2 2 CHECK 离校清理 (5)宿舍物品信息表(items) 列名 数据类型 长
6、度 约束 说明 items_id Varchar2 6 PRIMARY KEY 物品编号 items_name Varchar2 20 NOT NULL 物品名称 items_repairs Varchar2 2 CHECK 报修情况(是,否) (6)宿舍物品损坏信息报修表(repairs) 列名 数据类型 长度 约束 说明 repairs_id Varchar2 6 PRIMARY KEY 报修编号 repairs_plan Varchar2 10 NOT NULL 报修进度 repairs_solve Varchar2
7、 2 CHECK 是否解决 2、创建表 表名 对象定义SQL语句 说明 drom_table create tabledrom_table( drom_id Varchar2(6) not null, drom_sex Varchar2(2) not null, drom_mobile Varchar2(15) not null, drom_administ Varchar2(10) not null, wor_id Varchar2(15)not null, primary key(drom_id), constraint p_fk foreign key (w
8、or_id) references worker(wor_id) ); 用于存储宿舍楼基本信息,便于查删改; worker create table worker( wor_id Varchar2(15) not null, wor_name Varchar2(10) not null, wor_type Varchar2(10) not null, salary number(10,2) not null, wor_sex Varchar2(2) not null, wor_mobile Varchar2(15) not null, wor_date date not
9、null, primary key(wor_id) ); 用于存储宿舍工作人员基本信息,便于宿舍管理,与信息的查删改; student create table student( stu_id Varchar2(20)not null, stu_name Varchar2(10)not null, stu_sex Varchar2(2)not null, stu_from Varchar2(20)not null, stu_date date stu_hiredate date stu_college Varchar2(20)not null, stu_major V
10、archar2(20)not null, stu_class Varchar2(20)not null, stu_instructor Varchar2(20)not null, stu_contact Varchar2(15)not null, drom_id Varchar2(6)not null, room_id Varchar2(6)not null, primary key(stu_id) constraint p_fk foreign key (drom_id) references drom_table(drom_id) constraint p_fk forei
11、gn key (room_id) references room(room_id) ); 用于存储学生的基本信息,便于宿舍管理,与信息的查删改; room create table room( room_id Varchar2(6)not null, drom_id Varchar2(6)not null, room_sum Varchar2(6)not null, room_full Varchar2(2)not null, romm_clear Varchar2(2)not null, primary key(room_id) constraint p_fk fore
12、ign key (drom_id) references drom_table(drom_id) ); 用于存储宿舍基本信息,便于宿舍管理,与信息的查删改; items create table items( items_id Varchar2(6), items_name Varchar2(20), items_repairs Varchar2(2), primary key(items_id) ); 用于存储宿舍物品基本信息,便于宿舍管理,与信息的查删改; repairs create table repairs( repairs_id Varchar2(6),
13、 repairs_plan Varchar2(10), repairs_solve Varchar2(2), primary key(repairs_id) ); 用于存储宿舍物品损坏报修的基本信息,便于宿舍管理,与信息的查删改; 3、操作表中的数据 操作类型 数据操作SQL语句 说明 插入数据 insert into drom_table values(1,’男',03760000001,’小李’,101001); insert into drom_table values(2,’女’,03760000002,'小红’,101002); insert into wor
14、ker values(101002,’小红',’宿管',1000,’女’,13103764444,to_date(20110101000000,’YYYYMMDDHH24MISS’)); insert into worker values(101001,’小李’,'宿管’,1000,'男',13103765555,to_date(20110101000000,'YYYYMMDDHH24MISS')); insert into worker values(101003,’王郭斌','保洁’,1200,’男’,1310376666,to_date(20120101000000,'YYYYMMD
15、DHH24MISS')); insert into student values(141401101,’杨贝',’女’,'河南’,to_date(19970101000000,’YYYYMMDDHH24MISS'),to_date(20140901000000,’YYYYMMDDHH24MISS’),’信息工程学院','计算机应用技术’,’一班’,'张莉',’15936421111',’2','101’); insert into student values(141401102,’程明恒’,’男',’河南',to_date(19950101000000,’YYYYMMDDHH24MISS
16、'),to_date(20140901000000,’YYYYMMDDHH24MISS'),’信息工程学院’,’计算机应用技术’,’一班’,’张莉’,’15936421111’,'1’,'101’); insert into room values(101,1,4,’否’,’否'); insert into room values(101,2,4,’否’,'否’); insert into items values(1,’风扇’,’否’); insert into items values(2,'电灯’,’否’); insert into repairs values (1,'已上报
17、’,'是’); 修改数据 update worker set salary=1500 where wor_id=101001; 删除数据 delete from worker; truncate table worker; 查询数据 select *from worker; 4、设计视图 视图名 对象定义SQL语句 说明 sex_stu create view sex_stu as select stu_id,stu_name,stu_sex from student where stu_sex=’女’ with check option; 创建一个
18、带检查约束的视图.显示性别为女的学生信息 drom_select create view drom_select as select * from drom_table where drom_id=1 with read only; 创建一个只读视图.显示宿舍楼编号为1的全部信息。 删除视图 drop view + 视图名 5、设计索引 索引名 对象定义SQL语句 说明 wor_id create index wor_id on worker(wor_id); 工人信息表列为员工编号的位图索引 wor_name create unique index wor_nam
19、e on worker(wor_name); 工人信息表列为员工名称的唯一索引 wor_salary query rewrite create index wor_salary on worker(round(salary)); 工人信息表列为工资的函数索引 data_wor create index data_wor on worker(wor_date); 工人信息表列为雇佣日期的B树索引 6、设计同义词 同义词名 对象定义SQL语句 说明 worker_syn create public synonym worker_syn for worker; 工人信息表
20、公有同义词 student_syn create public synonym student_syn for student; 学生信息表公有同义词 drom_syn create private synonym drom_syn for drom_table; 宿舍楼信息表私有同义词 room_syn create private synonym room_syn for room; 宿舍信息表私有同义词 7、设计序列 序列名 对象定义SQL语句 说明 worker_seq create sequence worker_seq increment by1 s
21、tart with 1 maxvalue 100 nominvalue nocycle nocache 工人信息表中wor_id的唯一序列字段 student_seq create sequence student_seq increment by1 start with 1 maxvalue 100 nominvalue nocycle nocache 学生信息表中stu_id的唯一序列字段 room_seq create sequence room_seq increment by1 start with 1 maxvalue 100 nominvalu
22、e nocycle nocache 宿舍信息表中room025_id的唯一序列字段 8、设计存储过程 存储过程名 对象定义SQL语句 说明 pro_count_type create or replace procedure pro_count_type( type varchar2) as n_count number; begin select count(*) into n_count from worker where wor_type=type; dbms_output.put_line(‘工作类型为’||type||’的员工人数为:'||n_coun
23、t); exception when no_data_fount then dbms_output。put_line(‘工作类型不存在’); end; 根据输入的工作类型统计该类型的员工人数 9、设计函数 函数名 对象定义SQL语句 说明 getsal create or replace function getsal(sno number) return number is vsal number; begin select salary into vsal from worker where wor_id=sno; return vsal; ex
24、ception when too_many_rows then dbms_output。put_line(‘too many rows’); when others then dbms_output.put_line(‘error’); end; 创建一个函数,以员工编号查询对应员工工资 10、设计程序包 程序包名 对象定义SQL语句 说明 11、设计触发器 触发器名 对象定义SQL语句 说明 12、设计数据库用户 用户名 定义用户SQL语句 权限分配SQL语句 说明 13、备份与恢复 操作类型 对应操作的SQL语句 说明 备份 恢复 三、体会: 设计者: 上交时间:






