数据库技术与应用 大作业.docx
《数据库技术与应用 大作业.docx》由会员分享,可在线阅读,更多相关《数据库技术与应用 大作业.docx(15页珍藏版)》请在冰点文库上搜索。
数据库技术与应用大作业
数据库技术与应用大作业
一、系统背景介绍
本文选用的是:
法院执行案例信息管理系统。
随着市民的法律意识逐渐提高,法院受理的案件也越来越多。
针对此情况,我设计了法院执行案例信息管理系统。
本系统以法院执行案件这个活动为基点,对法院执行案件过程中产生的信息进行计算机管理。
本系统主要为了支持法院的行政关系与案件处理,使用该系统可以快速查找已经审理的案件的相关信息和与案件相关的法官和律师的相关信息,并对这些信息进行相应的处理。
因此通过使用该系统可以大大提高法院的工作效率。
法院执行案例信息管理系统的主要功能包括:
查询和编辑法官的各项基本信息,查询和编辑律师的各项基本信息,查询和编辑案件的各项基本信息。
在权限范围内,可以对这些基本信息进行录入、修改、删除和查询。
针对上述功能,该系统需求的信息包括:
法官的编号、姓名、性别和所属法院信息,律师的编号、性别和所在事务所信息,和案例的案号、案由、当事人、审理法院、审判时间和案例事实等。
二、概念模型设计
法院执行案例信息管理系统中共包括两个实体:
法官实体、律师和案例实体。
案例是法官实体、律师和案例实体之间的联系。
它们之间的联系如图1所示。
图1法官实体、律师和案例实体之间的联系的E-R图
法官和律师都有自己的基本信息,把二者联系起来的是发生的案例。
案例有自己的信息,在这些信息中记录执行法官的编号和律师编号,通过编号把律师和执行法官联系起来。
根据功能需求,我把法院执行案例信息管理系统分成以下三个功能模块:
法官信息管理模块、律师信息管理模块、案例信息管理模块。
它们的功能如下:
法官信息管理模块:
在此模块下可以按编号、姓名和法官所属法院查询法官的信息,也可查询全部法官的所有信息,还可添加、修改和删除法官信息。
律师信息管理模块:
在此模块下可以按编号、姓名和律师所属事务所查询律师的信息,也可查询全部律师的所有信息,还可添加、修改和删除律师信息。
案例信息管理模块:
在此模块下可以按编号、案由和日期等属性对案例的信息进行查询,还可进行添加、修改和删除案例信息。
三、基本表描述与相应T-SQL定义
根据对系统需求和功能需求的分析,法院执行案例信息管理系统共设计了三个基本表:
法官信息表judgeinformation、律师信息表lawyerinformation和案例信息表caseinformation。
三个基本表的设计信息如表1至表3所示。
表1judgeinformation法官信息表
数据项名
数据类型
宽度及小数位
列级完整性描述
J_ID
Char
10
Notnull
J_name
Varchar
50
Notnull
J_sex
Char
10
所属法院
Varchar
50
此表的主码为J_ID,无外码,应建的索引的数据项为J_ID,表级完整性约束为主码J_ID不能为空。
表2lawyerinformation律师信息表
数据项名
数据类型
宽度及小数位
列级完整性描述
L_ID
Char
10
Notnull
L_name
Varchar
50
Notnull
L_sex
Char
10
所在事务所
Varchar
50
此表的主码为L_ID,无外码,应建的索引的数据项为L_ID,表级完整性约束为主码L_ID不能为空。
表3caseinformation案例信息表
数据项名
数据类型
宽度及小数位
列级完整性描述
C_ID
Char
100
Notnull
案由
Varchar
50
当事人
Varchar
100
案例事实
Varchar
500
审理法院
Varchar
50
判决时间
Varchar
10
J_ID
Char
50
L_ID
Char
10
此表的主码为C_ID,外码为J_ID和L_ID,应建的索引的数据项为C_ID、案由和判决时间,表级完整性约束为主码L_ID不能为空且J_ID和L_ID只能为空值或者等于被参照关系judgeinformation和lawyerinformation基本表中的J_ID和L_ID主码值。
对judgeinformation基本表的定义如下:
CREATTABLEjudgeinformation(
J_IDCHAR(10)NOTNULLUNIQUE,
J_nameVARCHAR(50)NOTNULL,
J_sexCHAR(10)CHECK(L_sexIN(‘男’,’女’)),
所属法院VARCHAR(50),
PRIMARYKEY(J_ID));
因为已经指定J_ID为PRIMARYKEY约束,所以系统自动创建主码索引。
对lawyerinformation基本表的定义如下:
CREATTABLElawyerinformation(
L_IDCHAR(10)NOTNULLUNIQUE,
L_nameVARCHAR(50)NOTNULL,
L_sexCHAR(10)CHECK(L_sexIN(‘男’,’女’)),
所在事务所VARCHAR(50),
PRIMARYKEY(L_ID));
因为已经指定L_ID为PRIMARYKEY约束,所以系统自动创建主码索引。
对caseinformation基本表的定义如下:
CREATTABLEcaseinformation(
C_IDCHAR(100)NOTNULLUNIQUE,
案由VARCHAR(50),
当事人VARCHAR(100),
案例事实VARCHAR(500),
审理法院VARCHAR(50),
判决时间VARCHAR(10),
J_IDCHAR(10),
L_IDCHAR(10),
PRIMARYKEY(C_ID),
FOREIGNKEY(J_ID)REFERENCESjudgeinformation(J_ID),
FOREIGNKEY(L_ID)REFERENCESlawyerinformation(L_ID)
ONDELETENOACTIONONUPDATECASCADE);
因为已经指定C_ID为PRIMARYKEY约束,所以系统自动创建主码索引。
案由索引的定义为:
REEATEINDEXC_案由ONcaseinformation(案由)
判决时间索引的定义为:
REEATEINDEXC_判决时间ONcaseinformation(判决时间)
基本表可以包含所有的信息,但每次都调用基本表较繁琐,因此我们设计了视图。
它包含同一类型的信息,再查询此类信息时,直接从视图中查询,就可简化用户的操作。
视图的定义:
建立在三律师事务所的律师的所有信息的视图。
CREATEVIEW三lawyerAS
SELECT*FROMlawyerinformation
WHERE所在事务所='三';
建立案例中案由为刑事的案例的信息的视图。
CREATEVIEW刑事案件AS
SELECT*FROMcaseinformation
WHERE案由='刑事';
四、数据库的相关操作
1、简单查询
在刑事案件视图中查询在第一法院审理的刑事案件的案例信息。
T-SQL语句如下:
截图如图2所示。
SELECT*FROM刑事案件WHERE审理法院='第一法院';
图2第一法院审理的刑事案件信息
2、嵌套查询
查询案例中刑事案件的律师的编号和姓名。
在首先得到案由为刑事的案例信息后才能从中选取编号和姓名信息,因此采用了嵌套查询。
截图如图3所示。
SELECTL_ID,L_nameFROMlawyerinformationWHEREL_IDIN
(SELECTL_IDFROMcaseinformationWHERE案由='刑事');
图3刑事案件的律师信息
查询案例中知识产权案件的法官的信息。
先找到审理知识产权案件的法官的编号再从judgeinformation中查询这些法官的信息。
截图如图4所示。
SELECT*FROMjudgeinformationWHEREJ_IDIN
(SELECTJ_IDFROMcaseinformationWHERE案由='知识产权');
图4审理知识产权的法官信息
3、连接查询
在一个表中显示每个案例及其律师情况,案例和律师的信息分别在caseinformation基本信息表和lawyerinformation基本信息表中,所以要采用连接查询。
具体信息如图5所示。
SELECTcaseinformation.*,lawyerinformation.*
FROMcaseinformation,lawyerinformation
WHEREcaseinformation.L_ID=lawyerinformation.L_ID;
图5每个案件及律师的信息
在同一表中显示案例的编号、案由、审理法院、审理的法官编号及法官的基本信息。
具体信息如图6所示。
SELECTcaseinformation.C_ID,caseinformation.案由,caseinformation.审理法院,caseinformation.J_ID,judgeinformation.J_IDFROMcaseinformation,judgeinformation
WHEREcaseinformation.J_ID=judgeinformation.J_ID;
图6连接查询截图
4、聚合查询
查询律师编号为L005的律师参与的且案由为行政的案例。
编号和案由为并列关系,两个条件都要满足。
具体信息如图7所示:
SELECT*FROMcaseinformationWHERE案由='行政'INTERSECT
SELECT*FROMcaseinformationWHEREL_ID='L005';
图9L005律师参与的行政案例信息
查询编号为L001律师参与的案件或案由为行政的案件。
两个条件只要有一个满足就行,所以采用了UNION连接词。
具体信息如图10所示。
SELECT*FROMcaseinformationWHERE案由='行政'UNION
SELECT*FROMcaseinformationWHEREL_ID='L001';
图10L001律师参与的案件或案由为行政的案件信息
5、数据记录增加、删除、修改
在管理案例信息时,增删改是最常见的更新操作,具体在数据库上的操作如下所示。
在lawyerinformation基本表上增加编号为L011,姓名为秦杨,男性,在四律师事务所的律师信息。
具体信息如图11所示。
INSERTINTOlawyerinformation(L_ID,L_name,L_sex,所在事务所)
VALUES('L011','秦杨','男','四');
图11增添信息
在caseinformation基本表上增加编号为C011,案由为刑事,编号L002的律师参与,J001法官审理的案件。
由于并未提供当事人、案例事实、审理法院和判决时间的信息,且这几项信息可以为空,所以体现在表中都为NULL。
如图12所示。
INSERTINTOcaseinformation(C_ID,案由,L_ID,J_ID)
VALUES('C011','刑事','L002','J001');
图12增添案例信息
从caseinformation基本表中删除编号为C006的案例信息。
如图13所示。
删除后再查看案例信息表,C006号案例信息已经从表中移除。
DELETEFROMcaseinformationWHEREC_ID='C006';
图13删除后案例信息表
删除编号为L007的律师信息。
语句执行后,律师信息表再无L007号律师信息。
DELETEFROMlawyerinformationWHEREL_ID='L007';
图14删除后律师信息表
当发现以前录入的信息错误时,我们需修改错误的信息,比如把编号J005的法官的所属法院修改为第二法院。
修改效果如图15所示。
UPDATEjudgeinformationSET所属法院='第二法院'WHEREJ_ID='J005';
图15修改后信息表
我们也可以同时修改同一类型的事件。
比如:
把案由为行政的案例的审理法院都修改为第二法院。
修改后信息如图16所示。
UPDATEcaseinformationSET审理法院='第二法院'WHERE案由='行政';
图16修改后信息
五、数据库管理及控制。
在管理数据时经常因为数据的整体性约束条件无法对数据进行更新,或产生错误信息,比如在本文使用的数据库中,caseinformation基本信息表中的L_ID与J_ID为表的外码,它们的参考对象分别是lawyerinformation和judgeinformation信息基本表。
如果我们删除律师信息时,我们就要考虑在案例信息中对应信息的状态。
此时我们就要使用触发器,使得当我们在lawyerinformation基本表中删除律师信息的同时在caseinformation基本表中此律师参与的案例的信息。
CREATETRIGGERdeletelawyerONlawyerinformation
FORDELETEASDELETEcaseinformation
FROMcaseinformationtJOINdeletedd
ONt.L_ID=d.L_ID
RETURN
我们在此先定义了触发器deletelawyer,接着我们先查询了律师与案例信息。
图17未触发前状态
接着执行删除L002的律师操作时,会激活触发器,所以也在caseinformation表中删除了C011号案例。
最终结果如图18所示。
图18激活触发器后的信息表
我们在管理信息时,会处理很多的事务。
由于一些条件的约束,我们并不能得到最终的结果,因此我们并不能把中间产生的数据存入数据库中。
此时我们就需要对事务进行定义,加上自己的约束条件,当不满足条件时,事务就会回滚,此时并没改变数据库中的数据。
比如:
数据库管理员想把所有刑事案件的判决时间都延后5年,但最后得到的时间不能在2015年1月1日后,对此事务的定义如下:
BEGINTRANSACTION
USEjudge
UPDATEcaseinformation
SET判决时间=判决时间+50000
WHERE案由='刑事'
IF(SELECTMAX(判决时间)FROMcaseinformation
WHERE案由='刑事')>20150101
BEGIN
PRINT'Transactionrollbackback'
ROLLBACKTRANSACTION
END
ELSE
BEGIN
PRINT'Transactioncommited'
COMMITTRANSACTION
END
结果显示,由于记录中的刑事案件的判决时间有在2010年,所以延后5年后就超过了时间显示,因此在运行程序时,事务回滚。
具体信息如图19所示。
图19事务回滚
六、数据库调用与管理
由于很多用户都能访问数据库,为了数据库的安全,我们必须为每种角色设定相应的权限比如:
给全体角色赋予查询caseinformation信息基本表的权限。
方便所有的用户都能查询案例信息。
定义SQL语句如下:
GRANTSELECTONTABLEcaseinformationTOPUBLIC;
数据库最终的使用要用界面或网页的样式呈现给大家,用户并不需要使用代码来对数据库进行操作,所以我们需要使用其他的开发工具实现数据库的连接访问。
七、小结
数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广的技术之一。
自己在选了这门课并做了小数据库后,发现它会给我们对数据的管理带来很大的便利。
并运用自己所学知识建立了法院执行案例信息管理系统数据库,实现了一些基础功能,但由于自己知识的不足,自己并不能完全实现数据库的功能。
自己也尝试使用VB编写窗口,实现数据库的连接访问,但最后并没有成功。
通过对数据库技术与应用的学习,拓展了自己的专业知识,也看到了自己的不足之处,自己以后一定继续提高自己的专业知识,提高自己的数据库技术。