实验三 数据库系统设计综合实验
1、实验目的通过实验,使学生掌握数据库系统设计和开发的一般方法,能够设计并实现简单的数据库系统。
2、实验要求熟悉实验室实验环境,掌握实验预备知识,了解实验中故障排除的基本方法。实验中根据实验要求完成
相应的任务,并独立完成实验报告。
3、实验内容设计的数据库系统可从以下题目中选择,但不限定于以下题目,可自由选择。要求独立完成下列系统所需的
数据库的需求分析、概念结构设计、逻辑结构设计、物理结构设计;任选自己熟悉的数据库管理系统完成
数据库的搭建。
4、系统题目参考:
(1)学生成绩管理系统
(2)网上书城系统
(3)进销存系统
(4)酒店客房管理系统
(5)图书馆管理系统我的选题:同校学生互助问答平台的设计与实现
说明:实验三的实验报告分成两个文档,但放在同一个Word文档中:
1、需求分析规格说明书
2、详细设计文档
                                     需求分析规格说明书

项目名称 <同校学生互助问答平台的设计与实现>
文档类别 <说明>
文档编号 <128>
版 本 <V1.0>
密 级 <秘密>
二〇二〇年六月二十一日

目录
0、修订历史记录……………………………………………………………………………4
1、导言………………………………………………………………………………………4
1.1、编写目的………………………………………………………………………………4
1.2、背景……………………………………………………………………………………5
1.3、项目范围………………………………………………………………………………5
1.4、参考资料………………………………………………………………………………5
2、产品……………………………………….………………………………………………5
2.1、产品前景………………………………………………………………………………5
2.2、产品功能………………………………………………………………………………6
2.3、运行环境………………………………………………………………………….……6
3、功能性需求…………………………………………………………………………….…6
3.1、系统功能需求…………………………………………………………………………6
3.2、用例图…………………………………………………………………………………7
3.3、用例列表………………………………………………………………………………8
4、性能……………………………………………………………………………….……10
4.1、性能需求………………………………………………………………………………10

1、导言

1.1、 编写目的
一、该文档首先给出项目的整体结构和功能结构概貌,试图从总体架构上给出整个系统的轮廓。同时对功能
需求、性能需求进行详细的描述。便于用户、开发人员进行理解和交流, 反映出用户问题的结构,可以作为
软件开发工作的基础和依据以及确认测试和验收的依据。
二、
本文档面向的预期读者对象:
1、项目经理:项目经理可以根据该文档了解预期产品的功能,并据此进行系统设计、项目管理。
2、设计员:对需求进行分析,并设计出系统,包括数据库的设计。
3、程序员:了解系统功能,编写《用户手册》。
4、测试员:根据本文档编写测试用例,并对软件产品进行功能性测试和非功能性测试。
5、用户:了解预期产品的功能和性能,并与分析人员一起对整个需求进行讨论和协商。
在阅读本文档时,首先要了解产品的功能概貌,然后可以根据自身的需要对每一功能进行适当的了解。
1.2、 背景
1、网上论坛是一种供人们进行交流的网络空间。它不受时间和空间的约束,论坛用户可以发表自己的观点,
大家一起探讨某个问题。实现用户与用户间的交流,利用网络经济而又快捷地与外界进行各种信息沟通,取得
更有用的信息资源。目前,网上论坛已不是新事物,许许多多的别具特色的论坛在网络上随处可见。
2、对当代学生而言,刷论坛更是家常便饭。虎扑,知乎,小红书等论坛都可见他们的身影。男生热衷于篮球、
球鞋等论坛。女生沉迷于美妆美食服饰等论坛。对于他们而言,在论坛上交流比面对面的交流显得更自在。这
是当代学生的现状。因此本项目将开发一个互助问答平台,以便学生们线上交流分享经验。
1.3、 项目范围
该项目要求实现客户前端和管理后端。
1)客户端主要功能模块:1、个人登录及个人信息资料修改2、搜索、浏览信息3、提问与回答4、纠错与删除、举报
5、退出登录
客户端用户为游客的话只有搜索、浏览问答信息和申请下载某文件的功能。2)管理端主要功能模块:1、登录及团队信息资料修改2、搜索、浏览信息3、管理用户及其问答(警告违规用户与删除违规信息等)4、退出登录
1.4、参考资料
[1] 韩万江、姜立新.《软件工程案例教程》软件项目开发实践第3版,
Software Engineering A Case Study Approach ,书号978-7-111-50163-3  机械工业出版社
[2] 张宇波、王善勤.《基于Java EE的校园问答系统的设计与实现别》,
文章编号:1671-5993(2014)03-0046-06,[
Online]Available: https://www.doc88.com/p-5179507306223.html (Sep,2014)
[3]骑着飞机打乌鸦小组.《师生问答平台网站需求规格说明书》,[Online]Available:https://www.cnblogs.com/pirigg/p/10838686.html(May 8,2019)

2、产品

2.1、产品前景伴随着移动互联网的逐步成熟,问答平台的竞争也日益激烈,它们为众多网名搭建了一个强大的信息获取
交流平台,因此问答平台也越来越受人们关注,比较有影响力的有百度知道、知乎、果壳及若帮等。编者也
经常去这些平台上帮助网友回答一些关于互联网和心理健康等方面的问题,同事也经常在这些平台上去寻找
自己需要的知识。因此,开发一个同校学生互助问答平台挺现实的,在这个平台上学生们可以有针对性的提问或者分享自己
的经验,即使没有百度知道的回答那么多元化,没有知乎的答案相对专业化,但在校生在互助问答平台上可以
更加有专一性地寻找自己需要的问题的答案或者发出关于校园内自己不懂的问题,相信可以很快得到其他用户
的帮助。网络信息流通突破了时间和空间的限制,满足了学生快节奏生活、提高工作效率、更加深入了解校园
文化、通过互联网自主学习的需要,同时,实现校园信息资源共享也起着重要作用,也对专业内涵建设具有
良好的促进作用。
2.2、产品功能
为了满足学生日常问答的需要,本项目计划阶段完成如下三个核心功能:
1、在校生的搜索、浏览、提问、回答、删除问答功能
2、纠错功能,发现有错误的问题或者回答,可直接向用户本身发送纠错信息,同时也可接收别人发来的
纠错信息。
3、举报功能,如果提问的话题敏感、不合理,用户可以向管理员举报,管理员收到举报信息后对内容进行
审核。
【说明】本项目实现的主要功能也已在导言部分的项目范围中详细写出了。
2.3、 运行环境
服务器配置如下
操作系统:Windows XP及以上
CPU:Intel i5酷睿双核及以上
内存:8G及以上
硬盘空间:100G以上
软件配置如下:
开发工具:MyEclipse
数据库:SQL Server
Web服务器:Tomcat
3、功能性需求
3.1、系统功能需求:
1、在校生:可凭借学号和初始密码进行登录平台,可以查看个人资料,搜搜问答信息,提可以发表自己的问题
,可以回答其他人的问题,删除自己曾发布的问答信息,举报违规用户,纠错,退出平台等。
2、管理员:可凭借管理员账号登录平台,查看管理账号信息、搜索问题,删除别人发布的不当内容的信息,
警告违规用户,处理游客申请,退出平台等。
3、游客:不允许注册,但可搜索、浏览问答信息,并可申请下载需要的文件。

3.2、用例图
1)在校生用例图

2)管理员用例图

3)游客用例图

3.3、用例列表



4、性能

4.1、性能需求

①按照规定的格式输入,否则系统提示错误并要求重新输入。
②搜索的时候所有包含关键字的记录保证全部搜索到。
③程序响应时间在人的感觉和视觉范围内,长时间无响应应提示用户刷新。
④每个问题可以有多个用户回答,并且得到相应的处理。
⑤能够适应迭代开发。
⑥平台的界面要求如下:
1)页面内容:各类问答信息内容准确,行文格式统一、规范、明确,菜单设置和布局合理,传递的信息准确并
具有时效性。
2)导航结构:页面具有明确的导航提示,且便于理解,方便用户使用。
3)技术环境:页面大小适当,能用各种常用浏览器以不同分辨率浏览,无错误链接和空链接。
4)艺术风格:界面、版面形象清新悦目、布局合理、字号大小适宜、字体选择合理,前后一致,美观大方,色彩和谐自然,与内容相协调。
⑦响应时间需求:当用户登录时,平台应该及时地进行反应,反应的时间在3秒以内,平台应能检测出各种非正常情况,如与
设备的通信中断,无法连接数据库服务器等,避免出现长时间等待甚至无响应。
⑧可靠性需求平台应保证在7*24小时内不宕机,保证1000人以上可以同时在客户端登录,平台正常运行,正确提示相关
内容。
⑨可扩展性要求平台设计要求能够体现扩展性要求,以适应将来功能扩展的需求。
⑩系统安全性需求:平台有严格的权限管理功能,各功能模块需相应的权限方能使用(如在校生、管理员、游客具有不同的权限),平台能够防止各类误操作可能造成的数据丢失、破坏。防止用户非法获取网页以及内容。



                                      详细设计文档

目录
1、概念结构设计………………………………………………………13
1.1、实体属性图………………………………………………………13
1.2、绘制E-R图…………………………………….…………………18
2、逻辑结构设计………………………………………………………19
2.1、数据库表…………………………………………………………19
2.2、数据库表间关系…………………………………………………23
3、物理结构设计………………………………………………………25
3.1、定义及步骤………………………………………………………25
3.2、设计………………………………………………………………26

1、概念结构设计

1.1、实体属性图
根据需求分析,可以得出以下数据项:
①用户管理:用户实体:id、用户名、密码、入学时间、真实姓名、性别、邮箱。

②管理员管理:管理员实体:管理员id、名称、密码、头像地址、真实姓名、性别、邮箱。

③回答管理:回答实体:用户id、回答时间、回答字数。

④提问管理:提问实体:用户id、提问时间、提问字数、备注、手机号、用户邮箱。

⑤举报管理:举报实体:举报用户id、被举报用户id、举报时间、举报内容、举报原因。

⑥下载管理:下载实体:下载时间、下载内容、申请下载原因。

⑦警告管理:警告实体:管理员id、管理员名称、被警告用户id、警告时间、警告原因、备注。

⑧删除信息管理:删除信息实体:管理员id或用户id、管理员名称或用户名、删除时间、删除内容、删除原因。

⑨纠错管理:纠错实体:纠错用户id、被纠错用户id、纠错内容、纠错原因、纠错时间。

⑩搜索管理:搜索记录实体:管理员id或用户id、管理员名称或用户名、搜索时间、搜索内容。

11、角色管理:角色实体:角色id、角色名称、备注。

1.2、绘制E-R图
E-R图是我们常用的对数据库进行结构设计方法,根据数据库的需求分析进行对实体表结构进行设计,从而确定
各实体之间的关系。
(1)数据库表间关系如下:
1)一个用户可以对应多条回答,但是一个回答只能对应一个用户,所以用户实体和回答实体的关系是1:n;
2)一个用户可以对应多条提问,但是一个提问只能对应一个用户,所以用户实体和提问实体的关系是1:n;
3)一个用户可以发起多条举报,但一条举报只能对应一个用户,所以用户实体和举报实体的关系是1:n;
4)一个用户可以对应多次下载,但一次下载只能对应一个用户,所以用户实体和下载实体的关系是1:n;
5)一个用户可以对应删除多条信息,但删除一条信息只能由一个用户进行,所以用户实体和删除信息实体的关系是1:n;
6)一个用户可以发送多条纠错信息,一条纠错信息也可由多个用户发起,所以用户实体和纠错实体的关系是n:n;
7)一个用户可以发起多个搜索信息,一个搜索也可由多个用户发起,所以用户实体和搜索实体的关系是n:n;
8)一个管理员可以接收处理多条举报,但一条举报只能对应一个管理员处理,所以管理员实体和举报实体的关系是1:n;
9)一个管理员可以发出多条警告,但一条警告只能由一个管理员发出,所以管理员实体和警告实体的关系是1:n;
10)一个管理员可以处理多条下载文件的申请,但一条申请只能由一个管理员处理,所以管理员实体和下载实体的关系是1:n;
11)一个管理员可以删除多条信息,但一条信息只能由一个管理员删除,所以管理员实体和删除信息实体的关系是1:n;
12)一个管理员可以发起多个搜索信息,一个搜索也可由多个管理员发起,所以管理员实体和搜索实体的关系是n:n;
13)一个角色可对应多种管理员,但是一个管理员只能对应一种角色,所以角色实体和管理员实体的关系是1:n;
14)一个提问可以对应多条回答,但一条回答只能对应一个提问,所以提问实体和回答实体的关系是1:n;【说明】因为篇幅原因,此处的同校学生互助问答平台的基本E-R图省略了其中的实体属性的绘制。
(实体属性图在前面也画过了)

2、逻辑结构设计

2.1、数据库表

用户表(consumer)记录用户信息,其中主键为用户id(userid),用户名可自定义创建,密码(upassport)是用户身份验证的必要条件。其他一些属性为昵称(unickname)、入学时间(utime)、真实姓名(uname)、性别(usex)、用户邮箱(uemail)。


管理员表(administrators)记录管理员信息,其中主键是管理员id(adid),其中表中的adid属性参照的是角色表(role)中的角色id(rid),密码(adpassport)是管理员身份验证的必要条件。其他属性为名称(adnickname)、头像地址(adadd)、真实姓名(adname)、性别(adsex)、邮箱(ademail)。


超级管理员只有一个,但是可以创建不同权限的普通管理员,所以此角色表(role)记录着不同角色的管理员,角色id(rid)为表的主键,表的角色id(rid)属性被管理员表(administrators)的管理员id(adid)属性所参照。其余属性为角色名称(rname)、备注(rnote)。






警告表(warn)记录了管理员警告违规用户的一些信息,其中主键是管理员id(wid)和被警告用户id(wedid),前者参照的是管理员表(administrators)中的管理员id(adid),后者参照的是用户表(consumer)中的用户id(userid),其余属性还有管理员名称(wnickname),此处管理员名称并非外码,不做多加要求,警告时间(wtime)、警告原因(ereason)。






2.2、数据库表间关系图


3、物理结构设计

3.1定义及步骤
物理结构设计是利用已确定的逻辑数据结构以及DBMS提供的方法、技术、以较优的存储结构、数据存取路径、
合理的数据存储位置以及存储分配,设计出一个高效的、可实现的物理数据库结构。由于数据库的物理结构
依赖于给定的计算机软件及硬件环境,依赖于所选用的DBMS。因此,设计数据库的物理结构应充分考虑数据库
的物理环境,例如数据库存取设备、存储组织和存取方法,数据库管理系统及其他辅助性软件工具等通常关系
数据库的物理结构设计主要包括以下内容:
(1)确定数据的存取方法
存取方法是快速存取数据库中的数据的技术,数据库管理系统一般都提供多种存取方法,具体采取哪种存取
方法由系统根据数据的存储方式来决定,用户一般不能干预。
用户通常可以利用建立索引的方法来加快数据的查询效率。如果建立了索引,系统就可以使用索引查找方法,
索引方法实际上就是根据应用要求确定在关系的哪个属性或哪些属性上建立索引,确定在哪此属性上建立
复合索引,哪些索引要设计为唯一索引以及哪些索引要设计为聚簇索引,聚簇索引是将索引在物理上有序排列
后得到的索引。需要注意的是,索引一般可以提高查询性能,但会降低数据修改性能。因为在修改数据时,
系统要同时对索引进行维护,使索引与数据保持 一致。维护索引要占用相当多的时间,而且存放索引信息也会
占用空间资源 因此在决定是否建立索引时,要权衡数据库的操作,如果查询多,而且对查询的性能要求
比较高,则要考虑多建一些索引。如果数据更改多,并且对更改的效率要求比较高,则应考虑少建些索引,
建立索引的原则下,满足以下条件之一的,可以在有关属性上建立索引:
①主键和外键上通常建立索引。
②如果一个属性经常在查询条件中出现,则考虑在这个属性 上建立索引。
③如果一个属性经常作为更大值和更小值等聚集函数的参数,则考虑在这个属性上建立索引。
④如果一个属性经常在连接操作的连接条件中出现,则考虑在这个属性上建立索引。
⑤对于以查询为主或者只查询的关系表,只要需要且存储空间允许,可以多建索引满足以下条件之一的,
不宜建立索引。
①不出现或者很少出现在查询条件中的属性。
②属性值是可能取值的个数很少的属性。
③属性值分布严重不均的属性。
④经常更新的属性和表。因为在更新属性值时,必须对相应的索引做出修改,这就使系统为维护索引付出较大的代价。
⑤属性值过长,在过长的属性 上建立索引,索引所占的存储空间比较大,而且索引的级数随之增加,将会带来许多不便。
⑥太小的表不值得使用索引。(2)确定数据的存储结构
物理结构设计中一个重要的考虑因素就是确定数据记录的存储方式。
常用的存储方式有 :
①顺序存储。这种存储方式的平均查找次数。
②散列存储。这种存储方式的平均查找次数由散列算法决定。
③聚簇存储。这种存储方式是指将不同类型的记录外配到相同的物理区域中,充分利用物理顺序性的优点,提高数据访问速度。即将经常在一起使用的记录聚簇在一起,以减少物理输入/输出次数。总结:
数据库在物理设备上的存储结构和存取方式称为数据库的物理结构。它依赖于选定的数据库管理系统。为一个
给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。
数据库的物理设计通常分为两步:
(1)确定数据库的逻辑结构,在关系数据库中主要指存取方式和存储结构。
(2)对物理结构进行评价,评价的重点是时间和空间效率。如果评价结果满足原设计要求,则可进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时
甚至要返回逻辑设计阶段修改数据模型。
3.2、设计
(1)确定存取方式
数据库系统是多用户共享的系统,对同一个关系要建立多条存取路径,才能满足多用户的多种应用要求。物理
结构设计的任务之一是根据关系数据库管理系统支持的存取方法确定选择哪些存取方法。存取方式是快速存取
数据库中数据的技术。数据库管理系统一般提供多种存取方式。常用的存取方法为索引方法和聚簇方法。
此处我的数据库管理系统的很多表会有大量的数据信息且查询操作频繁,因此采用索引方法可以提高数据操作
效率。但索引的建立和重建及其维护本身代价也挺大,所以应根据不同的表选择合适的存取策略。考虑搜索表
及删除表等要进行频繁的插入操作,因此可选择建立非聚簇索引来提高操作效率。对于使用频率较低,如下载
表,则不应该建立索引,因为这会耗费大量维护代价,不值得。
一般来说关系数据库管理系统都会在建表时自动地建立主码索引,所以有的表可以直接使用主码索引便可尽快
地找到对应的元组。当然有需要的话也可以再在相应的属性上建立联合索引等,这会更进一步加快存取数据库
中数据的速度,但同时要考虑到其维护代价。

索引截图:

(2)确定存储结构为了提高系统性能,应根据应用情况将数据的易变部分与稳定部分,经常存取部分和存取频率较低部分
分开存放。
例如,数据库数据备份、日志文件备份等,由于只在故障恢复时才使用,而且数据量很大,可以考虑存放在
磁带上。可以将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效。可以将
日志文件与数据库对象(表、索引等)放在不同的磁盘以改进系统的性能。
关系数据库管理系统产品一般都提供了一些系统配置变量和存储分配参数,供设计人员和数据库管理员对
数据库进行物理优化。(3)评价物理结构
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种
方案。评价物理数据库的方法完全依赖于所选用的关系数据库管理系统,主要是从定量估算各种方案的存储
空间、存取法时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的、合理的物理结构。
一般来说,消除一切冗余数据虽能够节约存储空间和减少维护代价,但往往会导致检索代价的增加,必须进行
权衡,选择一个折中方案。

数据库原理实验三—实验报告到此结束!希望能多大家有所帮助,如发现错漏可以留言修正或补充,一起进步呀,谢谢!

数据库原理实验三 数据库综合设计实验 实验报告相关推荐

  1. 实验三 可综合时序逻辑电路实验

    实验三 可综合时序逻辑电路实验 由于typora无法直接向CSDN导入图片,所以删掉了时序仿真以及使用步骤中的图片. 一 .实验目的 掌握可综合Verilog语言进行时序逻辑设计的使用: 学习测试模块 ...

  2. Matlab图像处理创新实践-实验4【综合设计大实验——GUI综合设计】

    Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...

  3. ## 计算机学院实验报告 课程名称 .NET程序设计 实验名称 实验三 HTML网页设计

    .NET程序设计 实验三 HTML网页设计 一.实验目的: 1.熟练掌握HTML的基本语法. 2.掌握使用记事本进行简单网页编辑的方法. 3.熟练掌握使用Dreamweaver 8插入主要HTML元素 ...

  4. 数据库原理及应用(MySQL版)——实验三 MySQL查询

    实验三 MySQL查询 1.实验目的 2.实验内容及要求 1.实验目的 熟悉SELECT语句的语法结构: 熟练掌握组合使用where.group by.having和order by等子句: 熟悉聚合 ...

  5. 实验三 ORI指令设计实验【计算机组成原理】

    实验三 ORI指令设计实验[计算机组成原理] 前言 推荐 实验三 ORI指令设计实验 一.实验目的 二.实验环境 三.实验原理 四.实验任务 五.实验思考 实验三 代码 define IF ID EX ...

  6. virtuso版图_实验三Virtuoso版图设计.doc

    实验三Virtuoso版图设计 实验三 Virtuoso设计 一.实验目的 1.熟练掌握Virtuoso工具: 2.利用Virtuoso工具进行倒相器的版图设计 二.实验步骤 1.在终端提示符下,键入 ...

  7. 二叉树的基本运算实验报告C语言,实验三 二叉树基本操作与应用实验

    实验三 二叉树基本操作与应用实验 第三次实验主要包括两部分内容:1.二叉树基本操作实验:2.二叉树应用-赫夫曼树与赫夫曼编码实验.基本操作包括存储结构建立和遍历算法,本文只给出部分参考程序,请大家尽量 ...

  8. 数据库原理—数据、数据库(一)

    数据库原理-数据.数据库(一) 数据库(Databases)

  9. Matlab重建信号实验总结,实验三信号采样与重建(实验报告).doc

    实验三信号采样与重建(实验报告) <信号与系统>实验报告 学院 专业 班级 姓名 学号 时间 实验三 信号采样与重建 一.实验目的 1.进一步学习MATLAB的函数及其表示. 2.掌握及验 ...

最新文章

  1. iframe几种常用代码片段
  2. 2022年:机器人技术的重大革命
  3. python3 导入上级目录中的模块
  4. java jdwp如何关闭_蚀-本机方法中的致命错误:JDWP没有初始化传输,jvmtiError = AGENT_ERROR_TRANSPORT_INIT(197)...
  5. mysql查询数据教程_MySQL 查询数据
  6. SpringMVC框架结构以及架构流程
  7. Java动态代理代码案例:使用jdk自带的Proxy只能对有接口的类进行动态代理
  8. Microsoft SQL Server 存储过程
  9. java分布式系统开发_从微服务到分布式系统-Java开发人员生存指南
  10. 一分钟了解阿里云产品:RDS概述
  11. FYFG的完整形式是什么?
  12. python三维图能画地图_Python数据可视化:3D动态图,让你的足迹实现在地图上
  13. chrome开发者工具--使用 Network 面板测量您的网站网络性能。
  14. wps python 自动化_请教下 Python 高手,如何用 Python 自动化操作 Excel?
  15. 如何访问仅限IPv6的网站
  16. 《跃迁:成为高手的技术》读后感
  17. OTA升级的实现原理
  18. day20遍历数组指定输出的数组
  19. Excel文件导出,前端导出或者后端导出
  20. LocaSpaceViewer:自定义图源与无偏影像下载

热门文章

  1. 详述循环冗余校验CRC(附代码)
  2. Tribon二次开发-第三方程序操作Tribon数据
  3. 推免复习之数据结构与算法 佛洛依德算法
  4. PLSQL - 日期操纵函数模板IW/WW/W之区别
  5. Java应用学习(一)-Mybatis-plus框架
  6. 锻造工程总承包五大能力
  7. 单元测试junit+mock
  8. 下一代无线网络LTE介绍(转)
  9. 奇舞学院JavaScript视频-如何写好原生js
  10. Framebuffer框架入门之显示图片