数据库课程设计

时间:2024.5.4

课程设计说明书

 名称        数据库课程设计                   

20##年11月13日至 20##年11月20日共1周

院  系   计算机工程系         

班   级   09嵌入式应用技术   

学   号   09630612629                    

姓   名   管海兵                    

系 主 任    李金祥             

教研室主任     叶良             

指导教师   滕刚        


本案例为一个校友录系统。校友录网站功能共分为两大部分:用户个人信息功能和班级功能。用户个人信息功能中包含:创建新账号(包含用户个人信息)、编辑用户个人信息以及上传更新用户个人头像。班级功能中包含:搜索班级、创建学校、创建班级、加入班级、班级留言、班级相册、上传相册以及相册留言等功能。该校友录系统的前台网站是使用ASP.NET开发,后台系统采用SQL Server 2005作为数据库,通过实施该数据库解决方案,学习到网站应用程序架设的全过程,掌握数据库系统的开发、实现和维护,同时还将了解到如何结合SQL Server 2005和ASP.NET来开发一套数据库应用程序。

本次课程设计将按照图中数据库生命周期的各个阶段,逐步完成整个系统的设计。

第1章    需求分析和数据库设计

通常,校友录网站的操作流程如下所示:

1.       新用户通过注册系统,获得用户登录账号。同时发送用户账号信息以及个人信息到后台数据库相关表进行存储。

2.       注册用户可修改登录密码、个人信息及个人头像,并将数据发送到后台数据库相关表进行更新。

3.       注册用户可通过搜索功能进行同学、班级以及学校搜索,并可加入搜索到的相关班级,同时将相关数据发送到后台数据库相关表进行更新。如果没有搜索到学校或班级,则可创建新的学校或班级。

4.       用户登录进入校友录后,可以通过数据库的查询列举所加入的所有班级。

5.       班级成员可在班级首页的留言板或班级留言板中进行留言,同时发送相关留言信息到后台数据库相关表进行存储。

6.       班级成员可在上传照片页面中上传相片到所属的所有班级,同时发送相关留言信息到后台数据库相关表进行存储。

7.       班级成员可在班级相册页面内对照片进行评论,同时发送相关评论信息到后台数据库相关表进行存储。

1)        根据上述需求分析结果,作出E-R图(可使用Microsoft Office Visio 2003工具)。

2)        把完成E-R图转换为关系模式(每一实体和多对多联系转换为关系模式)。

用户(登录名,密码)      

个人资料(登录名,用户名,性别,出生日期,注册时间,电话,住址,头像)

班级(班级编号,班级名称,创建者,创建日期,所属学校

学校(学校编号,学校名称)

留言(留言编号,留言内容,留言人,留言日期,所属班级

相片(相片编号,相片名称,上传人,上传日期,相片大小)

评论(评论编号评论人,评论日期,评论内容,评论相片,所属班级

用户班级(登录名,班级编号

相册表(班级编号,相片编号

第2章    数据库部署 

1)        创建数据库SchoolMates,其数据文件名为SchoolMates.mdf,置于D:\ 目录下;日志文件名为SchoolMates_log.ldf,置于根目录下;设置恢复模式为“完整”。

第3章    表和索引的创建及数据完整性

1)        建表。根据关系模式设计表,为表的各属性选择合适的数据类型以及属性可否为空。

2)        设置主键,为数据库SchoolMates的每个表设置主键。每个表都应该具有主键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于与其他表的外键关联,本记录的修改与删除,如果没有主键,这些操作会变的非常麻烦。(提示:可以使用自动编号作为主键,就是新建一个ID字段,自动增长)

3)        设置外键。例如,班级表中的属性所属学校,引用学校表的学校编号,所以应该将班级表的所属学校设置为外键。

根据以上三条要求建表如下:

1 .用户UserAccount

 CREATE TABLE UserAccount

(  UserID varchar(20) NOT NULL PRIMARY KEY,

   Password varchar(20) NOT NULL

)

2.个人资料UserInfo

 CREATE TABLE UserInfo

(  UserID varchar(20) NOT NULL PRIMARY KEY,

   Name varchar(20) NOT NULL,

   Sex char(2) NOT NULL,

   Birth datetime NOT NULL,

   RegDate datetime DEFAULT(getdate()),

   Mobile varchar(20),

   Address varchar(200),

   Image image,  

   FOREIGN KEY  REFERENCES UserInfo(UserID)

)

3. 班级ClassInfo

 CREATE TABLE ClassInfo

(  ClassID int NOT NULL PRIMARY KEY,

     ClassName varchar(50) NOT NULL,

     ClassBy varchar(20) NOT NULL,

     CreateDate datetime DEFAULT(getdate()),

     SchoolID int NOT NULL,

  FOREIGN KEY REFERENCES ClassInfo(ClassID),

  FOREIGN KEY REFERENCES ClassInfo(ClassBy)

)

4. 学校SchoolInfo

 CREATE TABLE SchoolInfo

(  SchoolID int NOT NULL PRIMARY KEY,

    SchoolName varchar(50) UNIQUE

)

5.留言MessageBoard

 CREATE TABLE MessageBoard

(  MessageID int NOT NULL PRIMARY KEY,

   MessageContent varchar(500) NOT NULL,

   MessageBy varchar(20) NOT NULL,

   MessageDate datetime DEFAULT(getdate()),

   ClassID int NOT NULL,

   FOREIGN KEY REFERENCES MessageBoard(MessageBy),

   FOREIGN KEY REFERENCES MessageBoard(ClassID)

)

6.评论 Comment

CREATE TABLE Comment

(  CommentID int NOT NULL PRIMARY KEY,

   CommentBy varchar(20),

   CommentDate datetime DEFAULT(getdate()),

   CommentContent varchar(200),

   PhotoID int,

   ClassID int,

   FOREIGN KEY REFERENCES Comment(CommentBy),

   FOREIGN KEY REFERENCES Comment(PhotoID),

   FOREIGN KEY REFERENCES Comment(ClassID)

)

7. 相片 Photo

CREATE TABLE Photo

(  PhotoID int NOT NULL PRIMARY KEY,

   PhotoName varchar(200) NOT NULL,

   UploadBy varchar(20) NOT NULL,

   PhotoSize int NOT NULL,

   FOREIGN KEY REFERENCES Photo(UploadBy)

)

8.用户班级UserClass

CREATE TABLE UserClass

(  UserID varchar(20), ClassID int NOT NULL PRIMARY KEY

 )

9.相册 Album

 CREATE TABLE Album

(  ClassID int, PhotoID int NOT NULL PRIMARY KEY,

)

4)        设置其他约束。根据系统的实际要求,设置约束。例如,用户资料中的性别只能为男或女,则可对性别设置CHECK约束;用户注册日期如果为空,就默认为当前时间,则可设置DEFAULT约束;图片表中的图片如果不允许重复,则可设置UNIQUE约束,等等。

设置约束如下:

ALTER TABLE UserInfo

ADD  CONSTRAINT  S_CK CHECK(Sex='男' OR Sex='女')

5)        建立索引。考虑系统对表的查询频率,为查询次数较多的表的字段建立索引。例如,进入班级相册时,系统会自动检索出相片的评论信息显示出来,系统通常是按照发表评论的时间检索,则可为评论表的评论时间建立聚集索引。(提示:为表设置主键时,数据库会自动为主键建立聚集索引,如果要在其他属性上建立聚集索引,可先将主键去除,再使用ALTER TABLE [TABLENAME] ADD  CONSTRAINT [PK_TABLEFIELD] PRIMARY KEY NONCLUSTERED)修改主键索引为非聚集索引,再在相关属性上建立聚集索引)

对表Comment建立索引,T-SQL语句如下:

CREATE UNIQUE NONCLUSTERED INDEX C_ind ON Comment(CommentID)

对表SchoolInfo建立索引,T-SQL语句如下:

CREATE NONCLUSTERED INDEX S_ind ON SchoolInfo(SchoolName)

第4章    数据库试运行

1)        为班级相册建立视图vClassPhoto,便于查询班级照片信息及照片评论数。

  CREATE VIEW vClassPhoto

AS

SELECT Photo.PhotoID,PhotoName,UploadBy,CommentID

FROM Photo,Comment

WHERE Comment.PhotoID=Comment.PhotoID

2)        为新注册用户建立存储过程CreateUser,用于向表UserAccount和表UserInfo插入一条新用户信息。

    CREATE PROCEDURE CreateUser

 (  @UserID varchar(20),

    @Name varchar(20),

    @Sex char(2),

    @Birth datetime,

    @Mobile varchar(20),

    @Address varchar(200),

    @Password varchar(20)

  )

AS

SELECT *

FROM UserInfo

WHERE @UserID=UserID

IF @@ROWCOUNT=0

 RETURN -1

SELECT *

FROM UserInfo

WHERE @Name=Name

IF @@ROWCOUNT=0

 RETURN -2

SELECT *

FROM UserInfo

WHERE @Sex=Sex

IF @@ROWCOUNT=0

RETURN -3

 SELECT *

FROM UserInfo

WHERE @Birth=Birth

IF @@ROWCOUNT=0

  RETURN -4

SELECT *

FROM UserInfo

WHERE @Mobile=Mobile

IF @@ROWCOUNT=0

 RETURN -5

SELECT *

FROM UserInfo

WHERE @Address=Address

IF @@ROWCOUNT=0

 RETURN -6

SELECT *

FROM UserAccount

WHERE @Password=Password

IF @@ROWCOUNT=0

  RETURN -7

INSERT INTO UserInfo(UserID,Name,Sex,Birth,Mobile,Address )

VALUES(@UserID,@Name,@Sex,@Birth,@Mobile,@Address)

RETURN 0

INSERT INTO UserAccount(UserID,Password)

VALUES(@UserID,@Password)

RETURN 0

3)        为已注册用户建立存储过程UpdateUser,用于更新表UserAccount和表UserInfo中的一条用户信息。

CREATE PROCEDURE UpdateUser

(   @UserID varchar(20),

    @Password varchar(20),

    @Sex char(2),                            

    @Name varchar(20),                           

    @Birth datetime,                             

    @Regdate datetime,                          

    @Mobile varchar(20),                          

    @Address varchar(200),                            

    @Image varchar(100)                            

 )

AS

IF @UserID IS NULL OR @Sex IS NULL

     OR @Password IS NULL OR @Name IS NULL

     OR  @Birth IS NULL

RETURN -1

IF  @Regdate IS NULL

SET  @Regdate=getdate()

IF @Sex NOT IN('男','女')

RETURN -3

IF NOT EXISTS( SELECT *

              FROM UserInfo

              WHERE UserID= @userid

              )

RETURN -2

UPDATE  UserInfo

SET  Sex=@Sex,

     Name= @Name,

     Birth=@Birth,

     RegDate=@Regdate,

     Mobile= @Mobile,

     Address= @Address,

     Image=@Image

WHERE UserID=@UserID

RETURN 0

4)        为上传照片者建立存储过程UploadPhoto,用于向Photo表和Album表插入一条记录。

CREATE PROCEDURE UploadPhoto

(   @Classid int,

    @Photoid int,                        

    @Photoname varchar(200),                        

    @Uploadby varchar(20),                        

    @Photosize int                        

  )                                        

AS

IF @Classid IS NULL OR  @Photoid IS NULL OR @Photoname IS NULL

   OR @Uploadby IS NULL  OR @Photosize IS NULL

RETURN -1

IF EXISTS(SELECT *

          FROM Photo

          WHERE Photo.PhotoID=@PhotoID

          )

RETURN -2

INSERT INTO Album

VALUES(@Classid,@Photoid)

INSERT INTO Photo

VALUES (@Photoid,@Photoname,@Uploadby ,@Photosize)

第5章    数据库的安全性

1)        在服务器端为应用程序建立登录名,并设置为SQL Server身份验证,以使前台程序能够访问SQL Server;

2)        在数据库SchoolMates中创建用户,使程序可以访问并只能访问SchoolMates;

3)        为用户webapp赋予适当的权限(主要是对象的查询、插入、删除和更新),防止用户错误或恶意的的访问和修改其他数据库中的数据。

第6章    数据库维护

1)        规划备份策略。根据系统数据库的大小,每天获取的数据量进行估算,规划备份策略。

每天2400进行差异备份,每个整点进行日志备份,每个周日2400进行完全备份

2)        建立维护计划,备份用户数据库。根据规划的备份策略,建立维护计划,实现自动备份数据库。

第7章    心得体会


第二篇:数据库设计心得体会


数据库设计心得体会

跟老板做了两个算是比较大的项目,数据库主体都是我设计的。第一个感觉很失败;第二个现在正在用,虽然总结了第一个的教训,但感觉还是有些遗憾。把这过程中的一些心得记在这里,以便日后用到时来查阅。若以后还有机会再设计数据库——现在倒还有些期待,呵呵,再有新的体会,也全部补充到这里。

1.尽量使用数据冗余。

随着磁盘容量的大幅飙升,这一点已经不会产生什么问题。当然冗余归冗余,不能把数据的关联弄的乱七八糟的。

本科数据库课程中学的知识直接拿来,在实际中会出大问题。满足三级范式的数据库结构会让你面对大量的连表查询,应用程序中会用到大量的数据库访问,既繁琐(烦死你)又使程序运行速度减慢。

2.尽量不要使用varchar(max)类型

这一点主要是用动软代码生成器自动生成代码时,如果varchar的最大长度指定为max,在自动生成代码时,它无法生成这一最大长度,需要手动补进去。

现在感觉用个varchar(1000)就够了。

3.使用预留字段。

数据库表(尤其是动态表格),在你把所有字段都设计好了之后,再添加几个备注字段和预留字段。

之前我觉得这样做没多大意义,因为预留字段的列名是没有实际意义的。这样程序中使用的时候就会让人费解。但现在觉得还是有必要的,很有必要的,即便在用到时需要自己十分清楚之前预留的无意义字段现在表示什么意义。不过我的第二个数据库中还是没采用,这也是遗憾之处啊。

个人感觉用note1、note2、r1(r表示reserve)、r2、r3,2个备注字段和3个预留字段就足够了,再多的话就不容易记住哪个字段具体表示什么意义了,容易晕。类型就都用varchar(200)吧。

数据库设计心得体会(2):

在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次的课程设计,可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基本方法,进一步提高我们综合运用所学知识的能力。

当我们这组决定做大学生就业咨询系统时,我们并没有着手写程序。而是大家一起商量这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典。当这些都准备好了之后,我们进行模块的分工。每个人都有自己的模块设计,而且写出来的代码要求可以实现相应模块的功能,得到理想的效果。当每个人都把自己的分工做好了,最后会由一个人把这些全部组合搭建在一起。我们使用的是html和php相互嵌套使用,当一个系统做好了之后,我会好好地把程序都看一遍,理会其中的奥秘。

我所负责的是数据库的备份和还原还有一些界面的实现。还记得自己刚接触html的时候,觉得很感兴趣,所以有一段时间几乎到了痴迷的程度。然而php是我刚接触不久的一种编程语言。不过觉得它的功能真的很强大,可以开发出很多大型的系统。但是在做备份和还原的时候,要考虑的东西还是很多的。当我遇到错误的时候,感到很受打击。值得欣慰的是,在同学的帮助和大量参考书的查阅下,我把自己的模块做好了。这就是我收获最大的地方。而且,我明白了遇到困难永不放弃的重要性,我知道了团队合作的重要性,我领悟了只有坚持不懈才会取得胜利。

知识的获得是无止境的,只要你想学,只要你行动,没有什么会难倒我们的。回首这一个多星期的课程设计,我很欣慰。因为我有了动力,有了勇气。

谢谢老师对我们的不懈帮助,谢谢学校给了我们这一次实践的机会,也谢谢组员们的关怀。这些美好的回忆美好的东西将永远伴随着我。

更多相关推荐:
数据库课程设计总结与体会

课程设计总结与体会529940对实验过程中用到的软件、实现技术的评价以及对于实验过程遇到的一些问题做的总结:本次实验我们是在windows操作系统平台下完成的,应用了数据库建表,触发,删除插入。。。。;powe…

数据库课程设计心得体会

《数据库原理与应用》课程设计个人总结题目机票预订系统专业班级计0903学号20xx07010319姓名王龙飞指导老师强新建完成时间20xx.1.12课程设计心得体会及总结两个星期的时间非常快就过去了,这两个星期…

数据库课程设计个人总结

一个月的时间非常快就过去了,这一个月我不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。虽说上过数据库相关的课程,但是没有亲身经历过相关的设计工作细节。这次课程设计给我提供了一个很好的机…

数据库课程设计心得

数据库课程设计心得体会数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是…

数据库课程设计实践报告

中南大学本科生课程设计(实践)任务书、设计报告(SQL数据库程序设计)题目学生姓名指导教师学院专业班级学生学号网吧会员管理系统戴云波杨红雨艺术学院美术09041904090421计算机基础教学实验中心20xx年…

数据库课程设计个人总结

在开学的第一周,我参加了院里组织的数据库课程设计,这项任务是分组分工完成的,我们组有五名成员,分别是我们班学号的后五位同学,很荣幸地我被推荐为我们组的组长,在组长的“英明”指导下,全体组员团结奋斗,使得任务完成…

数据库课程设计感想

课程设计感想学号:051409266姓名:詹林林作为工程管理专业的学生,我们专业在大一时的时候学过简单的微机原理和C语言编程。大二开始接触,和了解Access开发平台的时间并不长,这学期在老师和同学的帮助下完成…

数据库课程设计报告

数据库课程设计设计题目数据库创建和修改表专业物联网工程班级20xx级设计人林升学号20xx01052143山东科技大学20xx年7月3日课程设计任务书一课程设计题目创建和修改表的定义二课程设计主要参考资料1数据...

数据库课程设计报告

20xx级数据库课程设计任务书设计目的数据库课程设计是在学生系统地学习了数据库系统原理课程后按照关系型数据库的基本远离综合运用所学的知识设计开发一个小型的数据库管理信息系统通过对一个实际问题的分析设计与实现将原...

SQLServer数据库课程设计报告

武汉工业学院数据库系统课程设计说明书设计题目选课管理系统姓名学院专业学号指导教师20xx年6月8日一读书笔记1SQL数据库的实际应用SQL包括了所有对数据库的操作主要是由4个部分组成1数据定义这一部分又称为SQ...

学生成绩管理系统 数据库课程设计报告

学生成绩管理系统数据库课程设计报告目录1、开发背景...22、系统描述...23、数据分析...23.1、数据流图...23.2、数据字典...24、概念模型设计...24.1E-R图...25.逻辑模型设计及…

数据库课程设计报告090247

北京广播电视大学数据库应用课程设计报告书题目:出版社图书管理系统姓名:学号:班级:09春计算机分校:通州电大指导教师:设计日期:20##年7月北京广播电视大学课程设计任务书题目出版社图书管理系统专业、班级09春…

数据库课程设计总结(20篇)