考勤管理系统数据库设计知识分享
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
考勤管理系统数据库设计
数据库设计是指对于一个给定的应用环境,构造设计优化的数据库逻辑模式和物理结构,并据此建立数据库以及应用环境,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
数据库的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。数据库设计的一个特点是“三分技术,七分管理,十二分基础数据”。
数据库设计的基本步骤如下:
(1)需求分析
(2)概念结构设计
(3)数据库逻辑设计
(4)数据库物理设计
(5)数据库实施
(6)数据库运行和维护
一.数据库需求分析
设计这个系统的主要目的就是实现学生社团的管理规范化,以及对社团举办活动进行登记。
数据库的需求分析阶段是整个数据库设计过程中的基础,也是耗时就多,最困难的一步。需求分析的任务就是
通过详细调查现实世界要处理的对象,充分了解原系统工
作概况,明确用户的各种需求,然后在此基础上确定新
系统的功能。这个阶段的工作成果主要以下三个方面的内容:
(1)数据项:每种具体数据的名称、意义、类型、取值范围以及与其他数据项之间的逻辑关系。
(2)数据集:若干数据项的有逻辑关联的集合,包括名称、意义和组成数据集的数据项。
(3)数据流:应用系统运行时,数据是怎么输入、处理和输出。
二.数据库概念结构设计
局部e-r图设计
(1)学生信息表的e-r图
(2)刷卡表的e-r图
刷卡
(3)刷卡记录表的e-r图
全局e-r图如下:
三.数据库逻辑结构设计
数据库逻辑设计主要是将概念结构设计转换为某个dbms所支持的数据模型设计出
刷卡表结构如下:
学生信息表结构如下:
刷卡记录表结构如下:
四.数据库物理结构设计
物理结构设计是为逻辑数据模型选取一个最适合应用环境的物理结构,将逻辑结构设计中的表用sql语句创建出来。
(1)创建表空间
(2)创建新用户
(3)给新用户授权
(4)以新用户的身份登入,创建表首先创建学生表,实现语句如下:
Create table stuent
(
Sno varchar2(8) not null primary key, Sname varchar2(20) not null,
Sex varchar2(2) not null,
Sage number(2) ,
Speciality varchar2(16),
Banji varchar2(12)
)
Tablespace zhuzhu;
执行结果如下:
然后,创建刷卡表
实现语句如下:
Create table sk
(
Skid number(4) not null,
Kid number(4) not null primary key, Zctime date
)
Tablespace zhuzhu;
执行结果如下:
接着,再创建刷卡记录表
实现语句如下:
Create table skrecord
(
Skid number(4) not null,
Kid number(4) not null,
Sno varchar2(8) not null primary key, Sktime timestamp
)
Tablespace zhuzhu;
最后,建立各个表之间的约束
实现语句:
Alter table skrecord
Add
(constraint sk_kid_fk foreign key(kid) references sk(kid) Constraint skrecord_sno foreign key(sno) references
stuent(sno)
);
(5)创建一个序列实现刷卡编号的自动增长
Create sequence seq_in
Increment by 1
Start with 1
Nomaxvalue;
Create sequence seq_in2
Increment by 1
Start with 1
Nomaxvalue;
(6)创建触发器
只要学生一刷卡,就会在sk表中插入一条记录,此时查找刷卡记录表看是否存在与之同卡编号的记录,如果存在,则输出’有出勤,没有旷课’,否则,输出‘该学生没有来上课’的信息。
Create or replace trigger test
Before insert
On sk
Declare isexist number;
Begin
Select count(*) into isexist from skrecord where
:new.kid=skrecord.kid;
If (isexist>0) then
Dbms_output.put_line(‘有出勤,没有旷课’);
Else
Dbms_output.put_line(‘这同学没有来上课’);
End if;
End;
(7)创建视图
首先,创建学生表的视图
实现语句如下:Create view student_view As
Select * from stuent;
实现结果如下:
然后创建sk表的视图
实现语句如下:Create view sk_view