博客系统需求分析报告
博客管理系统
1. 系统需求分析
博客系统分前台功能和后台功能两大部分。前台主要供用户注册,浏览,后台主要供管理员使用,管理员可以对用户进行管理。
1.1前台功能分析
博客系统前台的用户共分两类:一类是注册用户(正式用户) ,这类用户有基本的信息,可以对自己的信息进行查看与修改,;另一类用户是游客(未注册用户),他们只能查看、浏览注册用户的信息。
游客:可以查看注册用户的信息。经过注册可以成为注册用户。
注册用户:
1、 登录后对可以对个人信息进行查看和修改。
2) 博客用户通过前台登录后,对自己的空间进行管理,包括发布自己的网络日志,分享视频,分享音乐,邀请好友玩游戏,上传照片,与相关人员进行交流和沟通以及删除访客发表的评论
3)博客用户登录后对自己的信息进行修改
非注册用户
1) 游客通过注册,登录进入博客空间发表评论
2) 游客不注册,通过匿名方式对博客空间浏览文章,发表评论,查看文章发表人的所有文章
1.2后台功能分析
博客系统后台主要是供管理员使用的,管理员可对用户进行添加、删除、查询及修改;对网站的新闻、公告进行管理。
管理员也可以具有不同的权限分为超级管理员和普通管理员,普通管理员具有以上权限,超级管理员除了可以具有以上所有功能外,还可以添加、删除普通管理员。
2. 数据库设计
2.1数据库概念结构设计
对博客系统进行分析后,抽象出有关的数据,按照现实世界的事物能作为属性对待的,尽量作为属性对待的原则。作为“属性”,不能再具有需要描述的性质,“属性”必须是不可分的数据项,不能包含其它的属性;“属性”不能与其它实体具有联系,E-R 图中所表示的联系是实体与实体的联系。依照以上准则,可以确定哪些为实体,哪些为属性,每个实体具有哪些属性,实体之间存在何种联系。经分析之后,该系统中包含的实体以及实体之间的联系如下所示:
实体:管理员实体,用户实体,文章类型实体、链接实体、留言实体、文章实体和评论实体,回复实体,视频,照片,音乐、游客。
实体间存在的联系
管理员和用户实体之间存在多对多的联系
博客用户与链接之间存在多对多的消息联系
博客用户与留言之间多对多的回复联系
文章类型与文章之间存在一对多的消息联系
文章与评论之间存在一对多的消息联系
用户和游客之间存在一对多的联系
用户和视频之间存在一对多的联系
用户和音乐之间存在一对多的联系
用户和照片之间存在一对多的联系
实体的属性:
留言(留言编号,网友昵称,日期,标题,内容,个人主页,回复) 管理员(管理员,密码,权限) 博客用户(用户号,用户名,密码,真实姓名,性别,出生年月,邮箱,电话,单位,城市,地址,注册时间,积分,用户等级,安全问题,安全答案)
文章(文章编号,作者,标题,摘要 ,内容,发表日期,人气,回复,类型编号,类型名称,回复数)
文章类型(类型编号,类型名称)
评论(编号,用户昵称,标题,内容,发表时间,文章编号) 链接(链接编号,名称,地址)
新闻(新闻号,标题,内容,时间) 公告(公告号,标题,内容,时间)
视频(视频编号,标题,内容,时间)
音乐(音乐编号,标题,内容,时间,歌手名)
照片(照片编号,标题,内容,时间,大小)
游客(游客号,游客名) 回复(用户号,留言号,主题,内容,回复时间)
联系的属性:
实体之间关系的E-R 图如图7-7所示。
2.2数据库逻辑结构设计
根据系统E-R 图,把实体与实体之间的联系转换成关系模型,E-R 图中的每个实体转换成一个关系模型,实体之间一对多的联系合并到多方实体对应的关系模型中,把一方的码与联系的属性纳入到多方实体对应的关系模型中,为实体之间多对多的联系创建一个新的关系模型,它包含双方的码以及联系的属性。具有相同码的关系模型有些情况下可以考虑把它们合并。在转换过程中应该按照关系规范化的理论,对关系模型进行优化,减少冗余和数据操作异常,提高查询速度,在性能与范式之间作出权衡,一般所设计出的关系数据库达到3NF 就基本符合要求。按照
评论(编号,用户昵称,标题,内容,发表时间,文章编号)
文章(文章编号,作者,标题,摘要 ,内容,发表日期,人气,回复,类型编号,类型名称,回复数)
文章类型(类型编号,类型名称)
博客用户(用户号,用户名,密码,真实姓名,性别,出生年月,邮箱,电话,单位,城市,地址,注册时间,积分,用户等级,安全问题,安全答案)
发表(用户号,文章编号,发表日期) 管理(管理员,用户号,注册号) 留言(留言编号,用户号,网友昵称,日期,标题,内容,个人主页,回复) 回复(用户号,留言编号,主题,内容,回复时间)
链接(链接编号,名称,地址)
访问( 用户号,游客号,访问量, 访问时间)
公告(公告号,标题,内容,时间)
视频(视频编号,用户号,标题,内容,时间)
音乐(音乐编号,用户号,标题,内容,时间,歌手名)
照片(照片编号,用户号,标题,内容,时间,大小)
游客(游客号,游客名)
3功能分析
在其博客管理系统上建立适当的视图,索引,存储过程和触发器,因此我们主要从这四个方面来分析它的功能
A 视图:视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名 称的列和行数据。但是,视图并不在数据库中以存储的数据集合形式存在。
1 .创建某某表的视图
2、利用cust_view视图添加一条记录数据
3、创建视图sale_item_view,该视图中包含订单编号、订货日期、产品编号及数量。然后利用该视图向表中插入数据
4删除视图中所有姓“王”的客户数据
5有两个基本表employee 和sales ,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额。
6将上述视图中订单号为10001的记录的销售金额改为60000。
B 索引:索引用来快速地寻找那些具有特定值的记录。
普通索引, 这是最基本的索引类型,而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建:
创建索引,例如CREATE INDEX ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );
唯一性索引, 这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。唯一性索引可以用以下几种方式创建:
创建索引,例如CREATE UNIQUE INDEX ON tablename (列的列表); 修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );
主键:主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。如果你曾经用过AUTO_INCREMENT类型的列,你可能已经熟悉主键之类的概念了。
主键一般在创建表的时候指定,例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。
3存储过程: 一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
1、利用存储过程,给employee 表添加一条业务部门员工的信息。
2、利用存储过程从employee 、sales 、customer 表的连接中返回所有业务员的姓名、客户姓名、销售金额。
3、创建带一个输入参数的存储过程,实现按员工姓名进行模糊查找,查找员工编号、订单编号、销售金额。
4、创建带两个输入参数的存储过程,查找姓“李”并且职称为“职员”的员工的员工编号、订单编号、销售金额。
3、 利用存储过程计算出订单编号为10003的订单的销售金额。(带一输入参数和一输出参
数)(提示:sales 表中的tot_amt应该等于sale_item表中的同一张订单的不同销售产品的qty*unit_price之和)
4、 创建一存储过程,根据给出的职称,返回该职称的所有员工的平均工资。(带一输入参
数和返回值)
4触发器触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check 约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update 、insert 、delete 这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML 触发器和DDL 触发器,其中DDL 触发器它们会影响多种数据定义语言语句而激发,这些语句有create 、alter 、drop 语句。
1、针对employee 表写一个DELETE 触发器,显示删除的员工人数。
2、针对employee 表写一个UPDATE 触发器,限制每次工资额的变动不能超过原工资的20%。
3、定义一个触发器,保证新添加的员工的工资不能超过5000元
4、对sale_item表创建一个触发器,当插入一条销售明细记录时,如果该记录的产品数量超过5,则显示“欢迎成为本公司的VIP 会员!”
5、针对customer 表,定义一触发器用来保证参照完整性
6、针对sales 表,定义一触发器保证参照完整性(参照customer 表)
7. 针对employee 表,定义一触发器用来保证实体完整性
8,在customer 表上创建一触发器,用来实现级联删除
9、定义一触发器,保证新添加的员工的工资不能超过5000元
10、创建一个触发器,只能接受女员工
11,、写一个允许用户一次只删除一条员工记录的触发器。