1、数据库技术与应用 大作业数据库技术与应用大作业一、系统背景介绍本文选用的是:法院执行案例信息管理系统。随着市民的法律意识逐渐提高,法院受理的案件也越来越多。针对此情况,我设计了法院执行案例信息管理系统。本系统以法院执行案件这个活动为基点,对法院执行案件过程中产生的信息进行计算机管理。本系统主要为了支持法院的行政关系与案件处理,使用该系统可以快速查找已经审理的案件的相关信息和与案件相关的法官和律师的相关信息,并对这些信息进行相应的处理。因此通过使用该系统可以大大提高法院的工作效率。法院执行案例信息管理系统的主要功能包括:查询和编辑法官的各项基本信息,查询和编辑律师的各项基本信息,查询和编辑案件的
2、各项基本信息。在权限范围内,可以对这些基本信息进行录入、修改、删除和查询。针对上述功能,该系统需求的信息包括:法官的编号、姓名、性别和所属法院信息,律师的编号、性别和所在事务所信息,和案例的案号、案由、当事人、审理法院、审判时间和案例事实等。二、概念模型设计法院执行案例信息管理系统中共包括两个实体:法官实体、律师和案例实体。案例是法官实体、律师和案例实体之间的联系。它们之间的联系如图1所示。图1 法官实体、律师和案例实体之间的联系的E-R图法官和律师都有自己的基本信息,把二者联系起来的是发生的案例。案例有自己的信息,在这些信息中记录执行法官的编号和律师编号,通过编号把律师和执行法官联系起来。根
3、据功能需求,我把法院执行案例信息管理系统分成以下三个功能模块:法官信息管理模块、律师信息管理模块、案例信息管理模块。它们的功能如下:法官信息管理模块:在此模块下可以按编号、姓名和法官所属法院查询法官的信息,也可查询全部法官的所有信息,还可添加、修改和删除法官信息。律师信息管理模块:在此模块下可以按编号、姓名和律师所属事务所查询律师的信息,也可查询全部律师的所有信息,还可添加、修改和删除律师信息。案例信息管理模块:在此模块下可以按编号、案由和日期等属性对案例的信息进行查询,还可进行添加、修改和删除案例信息。三、基本表描述与相应T-SQL定义根据对系统需求和功能需求的分析,法院执行案例信息管理系统
4、共设计了三个基本表:法官信息表judgeinformation、律师信息表lawyerinformation和案例信息表caseinformation。三个基本表的设计信息如表1至表3所示。表1 judgeinformation 法官信息表数据项名数据类型宽度及小数位列级完整性描述J_IDChar10Not nullJ_nameVarchar50Not nullJ_sexChar10所属法院Varchar50此表的主码为J_ID,无外码,应建的索引的数据项为J_ID,表级完整性约束为主码J_ID不能为空。表2 lawyerinformation 律师信息表数据项名数据类型宽度及小数位列级完整性
5、描述L_IDChar10Not nullL_nameVarchar50Not nullL_sexChar10所在事务所Varchar50此表的主码为L_ID,无外码,应建的索引的数据项为L_ID,表级完整性约束为主码L_ID不能为空。表3 caseinformation 案例信息表数据项名数据类型宽度及小数位列级完整性描述C_IDChar100Not null案由Varchar50当事人Varchar100案例事实Varchar500审理法院Varchar50判决时间Varchar10J_IDChar50L_IDChar10此表的主码为C_ID,外码为J_ID和 L_ID,应建的索引的数据项为
6、C_ID、案由和判决时间,表级完整性约束为主码L_ID不能为空且J_ID和 L_ID只能为空值或者等于被参照关系judgeinformation 和lawyerinformation基本表中的J_ID 和L_ID主码值。对judgeinformation 基本表的定义如下:CREAT TABLE judgeinformation(J_ID CHAR(10) NOT NULL UNIQUE,J_name VARCHAR (50) NOT NULL,J_sex CHAR(10) CHECK (L_sex IN (男,女),所属法院 VARCHAR (50),PRIMARY KEY (J_ID);因
7、为已经指定J_ID 为PRIMARY KEY约束,所以系统自动创建主码索引。对lawyerinformation 基本表的定义如下:CREAT TABLE lawyerinformation (L_ID CHAR (10) NOT NULL UNIQUE,L_name VARCHAR (50) NOT NULL,L_sex CHAR(10) CHECK(L_sex IN (男,女),所在事务所 VARCHAR (50),PRIMARY KEY (L_ID);因为已经指定L_ID 为PRIMARY KEY约束,所以系统自动创建主码索引。对caseinformation 基本表的定义如下:CREA
8、T TABLE caseinformation (C_ID CHAR (100) NOT NULL UNIQUE,案由VARCHAR (50),当事人 VARCHAR (100),案例事实VARCHAR (500),审理法院VARCHAR (50),判决时间 VARCHAR (10),J_ID CHAR (10),L_ID CHAR (10),PRIMARY KEY (C_ID),FOREIGN KEY (J_ID) REFERENCES judgeinformation (J_ID) ,FOREIGN KEY (L_ID) REFERENCES lawyerinformation (L_ID
9、)ON DELETE NO ACTION ON UPDATE CASCADE );因为已经指定C_ID 为PRIMARY KEY约束,所以系统自动创建主码索引。案由索引的定义为:REEATE INDEX C_案由 ON caseinformation(案由)判决时间索引的定义为:REEATE INDEX C_判决时间 ON caseinformation(判决时间)基本表可以包含所有的信息,但每次都调用基本表较繁琐,因此我们设计了视图。它包含同一类型的信息,再查询此类信息时,直接从视图中查询,就可简化用户的操作。视图的定义:建立在三律师事务所的律师的所有信息的视图。CREATE VIEW 三l
10、awyer AS SELECT* FROM lawyerinformationWHERE 所在事务所=三;建立案例中案由为刑事的案例的信息的视图。CREATE VIEW 刑事案件 AS SELECT * FROM caseinformationWHERE 案由=刑事;四、数据库的相关操作 1、简单查询 在刑事案件视图中查询在第一法院审理的刑事案件的案例信息。T-SQL语句如下:截图如图2所示。SELECT * FROM 刑事案件 WHERE 审理法院=第一法院; 图2 第一法院审理的刑事案件信息2、嵌套查询查询案例中刑事案件的律师的编号和姓名。在首先得到案由为刑事的案例信息后才能从中选取编号和
11、姓名信息,因此采用了嵌套查询。截图如图3所示。SELECT L_ID,L_name FROM lawyerinformation WHERE L_ID IN (SELECT L_ID FROM caseinformation WHERE 案由=刑事);图3 刑事案件的律师信息查询案例中知识产权案件的法官的信息。先找到审理知识产权案件的法官的编号再从judgeinformation中查询这些法官的信息。截图如图4所示。SELECT * FROM judgeinformation WHERE J_ID IN(SELECT J_ID FROM caseinformation WHERE 案由=知识产
12、权);图4 审理知识产权的法官信息3、连接查询在一个表中显示每个案例及其律师情况,案例和律师的信息分别在caseinformation基本信息表和lawyerinformation基本信息表中,所以要采用连接查询。具体信息如图5所示。SELECT caseinformation.*,lawyerinformation.*FROM caseinformation,lawyerinformationWHERE caseinformation.L_ID=lawyerinformation.L_ID;图5 每个案件及律师的信息在同一表中显示案例的编号、案由、审理法院、审理的法官编号及法官的基本信息。具
13、体信息如图6所示。SELECT caseinformation.C_ID,caseinformation.案由,caseinformation.审理法院,caseinformation.J_ID,judgeinformation.J_ID FROM caseinformation,judgeinformationWHERE caseinformation.J_ID=judgeinformation.J_ID;图6 连接查询截图4、聚合查询 查询律师编号为L005的律师参与的且案由为行政的案例。编号和案由为并列关系,两个条件都要满足。具体信息如图7所示:SELECT * FROM caseinf
14、ormation WHERE 案由=行政 INTERSECTSELECT * FROM caseinformation WHERE L_ID=L005;图9 L005律师参与的行政案例信息查询编号为L001律师参与的案件或案由为行政的案件。两个条件只要有一个满足就行,所以采用了UNION连接词。具体信息如图10所示。SELECT * FROM caseinformation WHERE 案由=行政 UNIONSELECT * FROM caseinformation WHERE L_ID=L001;图10 L001律师参与的案件或案由为行政的案件信息5、数据记录增加、删除、修改在管理案例信息时
15、,增删改是最常见的更新操作,具体在数据库上的操作如下所示。在lawyerinformation基本表上增加编号为L011,姓名为秦杨,男性,在四律师事务所的律师信息。具体信息如图11所示。INSERT INTO lawyerinformation(L_ID,L_name,L_sex,所在事务所)VALUES(L011,秦杨,男,四); 图11 增添信息在caseinformation基本表上增加编号为C011,案由为刑事,编号L002的律师参与,J001法官审理的案件。由于并未提供当事人、案例事实、审理法院和判决时间的信息,且这几项信息可以为空,所以体现在表中都为NULL。如图12所示。INS
16、ERT INTO caseinformation(C_ID,案由,L_ID,J_ID)VALUES(C011,刑事,L002,J001);图12 增添案例信息从caseinformation基本表中删除编号为C006的案例信息。如图13所示。删除后再查看案例信息表,C006号案例信息已经从表中移除。DELETE FROM caseinformation WHERE C_ID=C006;图13 删除后案例信息表删除编号为L007的律师信息。语句执行后,律师信息表再无L007号律师信息。DELETE FROM lawyerinformation WHERE L_ID=L007;图14 删除后律师信
17、息表当发现以前录入的信息错误时,我们需修改错误的信息,比如把编号J005的法官的所属法院修改为第二法院。修改效果如图15所示。UPDATE judgeinformation SET 所属法院=第二法院 WHERE J_ID=J005;图15 修改后信息表我们也可以同时修改同一类型的事件。比如:把案由为行政的案例的审理法院都修改为第二法院。修改后信息如图16所示。UPDATE caseinformation SET 审理法院=第二法院 WHERE 案由=行政;图16 修改后信息五、数据库管理及控制。在管理数据时经常因为数据的整体性约束条件无法对数据进行更新,或产生错误信息,比如在本文使用的数据库
18、中,caseinformation基本信息表中的L_ID与J_ID 为表的外码,它们的参考对象分别是lawyerinformation和judgeinformation信息基本表。如果我们删除律师信息时,我们就要考虑在案例信息中对应信息的状态。此时我们就要使用触发器,使得当我们在lawyerinformation基本表中删除律师信息的同时在caseinformation基本表中此律师参与的案例的信息。CREATE TRIGGER deletelawyer ON lawyerinformationFOR DELETE AS DELETE caseinformationFROM caseinfor
19、mation t JOIN deleted dON t.L_ID = d.L_IDRETURN 我们在此先定义了触发器deletelawyer,接着我们先查询了律师与案例信息。图17 未触发前状态接着执行删除L002的律师操作时,会激活触发器,所以也在caseinformation表中删除了C011号案例。最终结果如图18所示。图18 激活触发器后的信息表我们在管理信息时,会处理很多的事务。由于一些条件的约束,我们并不能得到最终的结果,因此我们并不能把中间产生的数据存入数据库中。此时我们就需要对事务进行定义,加上自己的约束条件,当不满足条件时,事务就会回滚,此时并没改变数据库中的数据。比如:数
20、据库管理员想把所有刑事案件的判决时间都延后5年,但最后得到的时间不能在2015年1月1日后,对此事务的定义如下:BEGIN TRANSACTION USE judge UPDATE caseinformation SET 判决时间=判决时间+50000 WHERE 案由=刑事 IF (SELECT MAX(判决时间) FROM caseinformation WHERE 案由=刑事) 20150101 BEGIN PRINT Transaction rollback back ROLLBACK TRANSACTION END ELSE BEGIN PRINT Transaction commi
21、ted COMMIT TRANSACTION END 结果显示,由于记录中的刑事案件的判决时间有在2010年,所以延后5年后就超过了时间显示,因此在运行程序时,事务回滚。具体信息如图19所示。图19 事务回滚六、数据库调用与管理 由于很多用户都能访问数据库,为了数据库的安全,我们必须为每种角色设定相应的权限比如:给全体角色赋予查询caseinformation信息基本表的权限。方便所有的用户都能查询案例信息。定义SQL语句如下:GRANT SELECT ON TABLE caseinformation TO PUBLIC;数据库最终的使用要用界面或网页的样式呈现给大家,用户并不需要使用代码来对数据库进行操作,所以我们需要使用其他的开发工具实现数据库的连接访问。七、小结 数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广的技术之一。自己在选了这门课并做了小数据库后,发现它会给我们对数据的管理带来很大的便利。并运用自己所学知识建立了法院执行案例信息管理系统数据库,实现了一些基础功能,但由于自己知识的不足,自己并不能完全实现数据库的功能。自己也尝试使用VB编写窗口,实现数据库的连接访问,但最后并没有成功。通过对数据库技术与应用的学习,拓展了自己的专业知识,也看到了自己的不足之处,自己以后一定继续提高自己的专业知识,提高自己的数据库技术。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2