资源描述
数据库系统原理课程设计报告题目: 校友网应用系统数据库设计 专业: 网络工程 班级: 0902 学号: 0930040250 姓名: 指导教师: 完成日期:2011年12月08日1、 课程设计目的1、掌握数据库设计步骤,结合给出的应用系统,完成后台数据库的设计。2、掌握数据库设计辅助工具PowerDesigner或其他辅助工具(Visio、Rational Rose)的使用。3、了解数据库应用系统开发的一般过程。二、课程设计内容课程设计题目:校友网应用系统数据库设计。课程设计内容:1、数据库设计系统需求分析、数据库概念结构设计(画出实体E-R图)、数据库逻辑结构设计(将E-R图转换成关系模型,即根据实体E-图设计数据表结构(主键,外键,默认值,取值范围等数据库完整性约束)、数据库物理设计(索引)、数据库实施(使用SQL Server 2005创建数据库及表,并根据需要创建视图(触发器,存储过程)。2、应用系统与数据库的连接。3、应用系统功能需求:随着计算机网的发展,越来越深刻的改变了人们生活的方方面面,各种在线服务系统,更是深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯,校友录作为一种方便同学之间联系的实用系统便应运而生,为同学之间进行交流和联系提供了一个便捷的平台。为了加深校友与学校、校友之间的联系,开发一个校友网。系统功能目标:1)用户登陆,用户通过提交用户ID和用户密码进行登陆,系统便会根据这些登陆进入个人空间。2)用户资料的修改,成功登录的合法用户有权限修改自己的个人资料。3)查看校友资料,添加好友。4)相册,用于实现照片上传、浏览,同时实现对照片的动态管理(删除、分类)。5)用户消息发布,用户可以发表说说,好友可以进行回复,用户对好友的回复可以进行回复,只有好友才能浏览说说和回复。6)留言板,通过留言板,用户可以在班级空间上留言,以此作为校友间联系的一种手段。三、课程设计要求1、按照给出的题目内容1)完成数据库各阶段的设计,及应用系统与数据库的连接调试。2)详细写出各阶段的设计结果(图表或文字)。3)至少要做出应用系统的几个界面,实现测试与数据库的连接情况。(可以B/S模式,也可以C/S模式)2、写出课程设计报告,设计报告提交形式:电子文档提交3、个人独立完成。4、完成时间(2周)四、课程设计过程1、需求分析经过以上对本系统的调研及可行性分析后,下面将对系统在功能上以及性能上进行进一步的需求分析。(1)功能需求系统功能目标:1)用户登陆,用户通过提交用户ID和用户密码进行登陆,系统便会根据这些登陆进入个人空间。2)用户资料的修改,成功登录的合法用户有权限修改自己的个人资料。3)查看校友资料,添加好友。4)相册,用于实现照片上传、浏览,同时实现对照片的动态管理(删除、分类)。5)用户消息发布,用户可以发表说说,好友可以进行回复,用户对好友的回复可以进行回复,只有好友才能浏览说说和回复。6)留言板,通过留言板,用户可以在班级空间上留言,以此作为校友间联系的一种手段。(2)性能需求(1)系统处理能力:同学录系统不但涉及到留言功能,班级相册,说说管理等各个功能,还同时对多个不同用户的操作进行管理和控制,在这个过程中参与的用户较多,较为复杂,因此系统要具有较好的大用户量下的并发响应能力. (2)处理时间:理想状态下系统应为用户提供24小时服务. (3)响应速度:要求能够响应快速;响应速度尽量控制在用户可忍受等待的时间内,并给予提示. (4)主要依赖数据库的良好维护和管理以及对数据的保密等措施。所以在数据在遇到严重的丢失或损坏后能快速的进行恢复以继续维持系统的正常运行。所以本系统采用了定时对数据库的备份和数据的恢复措施。并采用了MD5的加密技术。2、概念结构设计概念模型用于信息世界的建模。概念模型不依赖于某一个数据库管理系统(DBMS),但可以方便的转换为计算机上某一DBMS所支持的特定的数据模型。通过对用户对数据的需求进行综合、归纳与抽象,将形成一个完善的概念模型,可以用E-R(实体联系)图来表示。E-R图是对现实世界的一种抽象,它的主要成份是实体、属性和联系。1. 实体:客观存在并可以互相区分的事物称为实体,是现实世界中各种事物的抽象。如本案例中一个班级为一个实体。一般来说,每个实体都相当于数据库中的一个表。实体用一个矩形框来表示。2. 属性:属性是实体所具有的某些特征,通过属性对实体进行刻画。实体是由属性组成的,如班级有班级名称、创建人等属性。一个实体本身具有许多属性,能够唯一标识实体的属性称为该实体的码。属性用一个椭圆来表示。3. 联系:现实世界的事物内部或事物之间都有联系,这些联系在信息世界里反映为实体内部或实体之间的联系,如班级属于某个学校,那么班级和学校之间是“属于”联系。联系有一对一联系,一对多联系和多对多联系,分别用1:1、1:n和m:n来表示。如一个登录用户名只能填写一份个人资料,那么登录用户和个人资料就是一对一联系;一个班级只能属于一个学校,而一个学校可以拥有多个班级,学校和班级之间就是一对多联系;一个班级可以有多张相片,而一张相片也可为多个班级所拥有,所以班级和相片之间是多对多联系。联系用菱形表示,并用线段联接相关的两个或多个实体,在菱形两端线段上标明联系的类型。根据上节的需求分析,我们作出一些E-R图,如图所示:管理员表admin的各个属性以及实体关系图用户表users的各个属性以及实体关系图班级表class的各个属性以及实体关系图班级成员表class_users的各个属性以及实体关系图班级留言表table messages的各个属性以及实体关系图相册表photo的各个属性以及实体关系图说说发表表coldcase的各个属性以及实体关系图说说回复表coldcase_reply的各个属性以及实体关系图校友网分布E-R图合并图如下图所示:3、 逻辑结构设计 概念设计的结果得到一个与计算机、软硬件的具体性能无关的全局概念模式。数据库逻辑设计的任务是将概念结构转换成特定DBMS所支持的数据模型(如关系模型)的过程。本案例中我们将其转换为关系模型。 将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则: 一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的关键字就是关系的关键字。 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端实体所对应的关系合并,在被合并关系中增加属性,其新增的属性为联系本身的属性和与联系相关的另一个实体的码。 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。如果与n端的关系模式合并则在n端实体集中增加新属性,新属性由联系对应的1端实体集的码和联系自身的属性构成,新增属性后原关系的码不变。 一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身具有的属性均转换为关系的属性,而关系的码为各实体码的组合。(带下划线的属性为主码,红色的为外码)n 实体:管理员对应关系模式:管理员表(管理员账号,密码)n 实体:用户对应关系模式:用户表(账号,用户名,密码,真名,性别,年龄,班级,生日,QQ,msn,电话,邮箱,地址,邮编,格言,提示问题,提示问题答案)n 实体:班级对应关系模式:班级表(班级编号,班级名字,创建人账号,创建时间,班级公开栏)n 实体:班级留言对应关系模式:班级留言表(留言编号,留言题目,留言内容,留言者姓名,班级编号,留言时间)n 实体:相册对应关系模式:相册表(相片编号,相片名,大小,类型,上传时间,上传者姓名,题目,相册描述,班级编号,相片宽带,相片高度)n 实体:说说发表对应关系模式:说说发表表(说说编号,说说内容,发表者姓名,发表时间)n 实体:说说回复对应关系模式:说说回复表(说说编号,回复编号,回复内容,回复者姓名,回复时间)n 联系:班级成员所联系的实体及关键字:用户(账号),班级(班级编号)。对应关系模式:班级成员表(账号,班级编号,身份)4、 物理设计在创建完数据库之后,首先要做的就是在数据库中创建表。通常来说,表的设计是由开发人员完成,必须满足实际数据的内容和关系数据库的要求(比如范式要求),而数据库管理员的任务是根据要求向数据库中添加这些表。在逻辑上,数据库由大量的表构成,表中包含了由行和列组织起来的数据;在物理上,表存储在文件中,表中的数据存储于页中。在数据库的开发和应用中,快速地从数据库中查询到所需的数据是十分重要的。但是,随着数据量的不断增大,查询所花费时间也在大量增加。使用索引可以对查询速度进行优化,Oracle使用索引指向数据页上某行的位置,这样查询数据就不需要查遍表的所有数据页了。数据质量对于使用效率和数据库程序运行效率起着决定性的作用。如果数据库中存在大量错误数据,那么效率会大大降低。在数据库的使用中,诸如数据录入错误和表间关联数据的修改等操作都会造成错误数据的产生。因此,不论从首次输入还是收集到存储的整个过程都需保证数据的唯一性和一致性。数据的唯一性、一致性称为数据完整性。数据完整性分为实体完整性、引用完整性(也称为参照完整性)和用户自定义完整性。实体完整性一般通过设置主键来实现,参照完整性一般通过设置外键实现,而用户自定义完整性则可通过CHECK约束、DEFAULT约束和UNIQUE约束实现。 把逻辑设计得到的关系模式转换为表,同时为实现数据完整性设置主、外键及各种约束。另外根据系统的查询要求在表上建立索引。 建立索引。考虑系统对表的查询频率,为查询次数较多的表的字段建立索引。例如,进入班级留言时,系统会自动检索出留言信息显示出来,系统通常是按照发表评的时间检索,则可为留言表的留言时间建立聚集索引。(提示:为表设置主键时,数据库会自动为主键建立聚集索引,如果要在其他属性上建立聚集索引,可先将主键去除,再使用ALTER TABLE TABLENAME ADD CONSTRAINT PK_TABLEFIELD PRIMARY KEY NONCLUSTERED)修改主键索引为非聚集索引,再在相关属性上建立聚集索引)5、 数据库实施6、 应用系统测试(系统运行结果截图)5、 课程设计体会本系统完成了前台提供用户使用校友网的各种功能,后台提供管理员对数据库进行维护的功能。通过这一阶段的学习和研究,该项目终于完成。当然,由于毕业设计时间相对较短,加上本人经验不足,技巧不够纯熟,在程序设计上还存在一些不足,还有不尽人意之处,所以系统的最终成果还不是很成熟,仍需要在实践中发现问题并解决问题,从而逐步改善提高系统功能。在系统的分析,设计,实现,调试过程中,曾遇到许多大大小小的问题,但正是在发现、解决这些问题的过程中,我深刻体会到耐心、恒心、信心、细心对于一个系统开发人员来说是何等重要;并且让我明白碰到问题要学会向同学请教或自己看书上网搜索,这样才能不断提高自学能力。通过对本系统的开发使我对大学课程书本上的理论知识有了更深一层的了解,使我学会了如何利用所学的知识,把理论结合于实践中,进一步掌握了系统开发的规律和方法,从而对本专业有了更深刻的认识。此后,我会加倍努力的去研究探索,在熟练的基础上掌握更多的新型技术,来提高自身的开发水平。同时,写的过程中也需要认真细心,正所谓细节决定成败,这些都将有助于培养我日后良好的做事风格。总之,这次课程设计我学会了不少知识,更加明白树立对自己工作能力的信心是多么的重要,相信对今后的学习生活有很大的影响。六、源代码创建一个校友网数据库create database AlumnusNetDBon primary(name=AlumnusNetData,filename=d:dbAlumnusNetData.mdf,size=3,filegrowth=2)log on(name=AlumnusNetLog,filename=d:dbAlumnusNetLog.ldf,size=1,maxsize=10,filegrowth=10%)创建管理员表use AlumnusNetDBcreate table admin(userid varchar(20) primary key,userpwd varchar(20);创建用户表create table users(user_id int primary key,user_name varchar(10),user_pwd varchar(20),user_truename varchar(10),user_sex char(1) check (user_sex in (男,女),user_age int,user_class varchar(20),user_birthday datetime,user_qq varchar(20),user_msn varchar(20),user_tel varchar(20),user_email varchar(20) check (user_email like %.%),user_add varchar(50),user_postcode varchar(6),user_motto text,user_question text,user_answer text);创建班级表create table class(class_id int primary key,class_name varchar(20),class_masterID int,class_createtime datetime,class_content text,foreign key (class_masterID) references users(user_id);创建班级成员表create table class_users(user_id int,class_id int,degree varchar(10) check (degree in (创建人,普通学生,老师),primary key (user_id,class_id),foreign key (user_id) references users(user_id),foreign key (class_id) references class(class_id);创建班级留言表create table messages(message_id int primary key,message_title varchar(20),message_content text,message_name varchar(10),class_id int,message_time datetime,foreign key (class_id) references class(class_id);创建相册表create table photo(photo_id int primary key,photo_name varchar(20),photo_size int,photo_type varchar(10),photo_uptime datetime,photo_upusername varchar(10),photo_title varchar(20),photo_remark text,class_id int,photo_width int,photo_height int,photo_format varchar(10),foreign key (class_id) references class(class_id);创建说说发表表create table coldcase(coldcase_id int primary key,coldcase_content text,coldcase_name varchar(10),coldcase_time datetime,);创建说说回复表create table coldcase_reply(coldcase_id int,reply_id int,reply_content text,reply_name varchar(10),reply_time datetime,primary key (coldcase_id,reply_id),foreign key (coldcase_id) references coldcase(coldcase_id);参考文献【1】王珊,萨师煊,数据库系统概论(第四版),高等教育出版社。【2】钱雪忠.数据库原理及应用(第二版).北京:北京邮电大学出版社,2007【3】王珊.数据库技术与联机分析处理.北京:北京科学出版社,1998
展开阅读全文