博客系统数据库设计Word格式.docx
《博客系统数据库设计Word格式.docx》由会员分享,可在线阅读,更多相关《博客系统数据库设计Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
2.2功能划分
系统功能:
1、个人资料的录入:
提供博客主人的个人信息的录入、修改,日志的编写、修改、删除,网友对日志的评价的录入。
2、数据查询功能:
提供博主、网友对日志以及日志评价的查询。
3、数据统计功能:
对博客的日志与评价进行相关的统计。
2.3功能模块
3、ER模型
3.1ER模型的逻辑模型与物理模型
图表1博客系统数据库逻辑模型
图表2表格1博客系统数据库物理模型
3.2转换为关系模式
用户信息
(账户编号、账户名、密码、用户昵称、用户邮箱、用户链接、用户注册时间、用户激活、用户状态、博客展示名字)
用户拓展信息
(账号编号、属性编号、属性关键词、属性值)
日志分类
(分类编号、分类名称)
日志
(文章编号、账户编号、分类编号、文章作者、文章标题、文章内容、文章编写时间、文章最后编写时间、评论总数)
日志拓展信息
(文章拓展属性编号、账户编号、文章编号、分类编号、文章拓展属性名称、文章拓展属性值)
评论
(评论编号、账户编号、文章编号、分类编号、评论作者、评论时间、评论修改时间、评论回复源)
链接
(链接编号、账户编号、链接地址、链接名称、链接图片、链接目标、链接描述、链接可访性)
菜单
(菜单编号、菜单名称、菜单值)
4、表结构
字段名
数据类型
是否主键
是否为空
备注
字段含义
user_ID
bigint(20)
PRI
NOTNULL
auto_increment
账户编号
user_login
varchar(60)
IND
NULL
账户名
user_pass
varchar(64)
密码
user_nicename
varchar(50)
用户昵称
user_email
varchar(100)
用户邮箱
user_url
用户链接
user_registered
datetime
用户注册时间
user_activation_key
用户激活
user_status
int(11)
用户状态
display_name
varchar(250)
博客展示名字
表格1用户信息表tb_users
umeta_id
bigint(20)unsigned
属性编号
user_id
FK->
(tb_users)ID
meta_key
varchar(255)
属性关键词
meta_value
longtext
属性值
表格2用户拓展信息tb_usermeta
term_id
auto_increment
分类编号
name
varchar(200)
分类名称
表格3日志分类tb_term
post_id
PRI&
INDPt4
文章编号
wp_users.ID
post_date
INDPt3
文章编写时间
post_date_gmt
文章最后编辑时间
post_content
文章内容
post_title
text
文章标题
comment_count
bigint(20)
评论总数
表格4日志tb_post
meta_id
文章拓展属性编号
wp_posts.ID
文章拓展属性名称
文章拓展属性值
表格5文章拓展属性tb_post_meta
comment_id
评论编号
varchar(20)
tb_posts.ID
文章编号、
wp_term_id
分类编号、
comment_author
tinytext
wp_users.ID
评论作者
comment_date
comment_date_gmt
IND&
INDPt2
评论修改时间
comment_parent
wp_comments.ID
评论回复源
表格6评论表tb_comments
option_id
PRIPt1
菜单编号
option_name
PRIPt3&
IND
菜单名称
option_value
菜单值
表格7菜单tb_options
5、完整性设计
5.1、主键约束
主键约束就是通过建立唯一的索引保证指定列的实体的完整性,即每一个表中一列或多列的数值都是唯一的。
而在本博客数据库里面,所有的表格都是设有主键,即他们都用主键约束功能。
同时每个表格的主键列也把标识属性设为是,所以在插入新数据库是,SQLServer会主动对主键列惊醒唯一的赋值,不需要人为控制。
5.2、外键约束
外键约束主要是为了表中的一列或多列数据提供参展完整性,外键约束闲着插入到表中的被约束列的值必须就有被参展表中已存在。
在本数据库中,具有外键约束的表有:
tb_blogownersmeta
ID(FKtb_blogowners.user_ID)
tb_posts
term_id(FKtb_term.term_id)
tb_posts_meta
ID(FKtb_post.user_ID)
post_id(FKtb_post.post_id)
term_id(FKtb_post.term_id)
tb_links
tb_comments
post_id(FKtb_post.post_id)
5.3、检查约束:
在本博客系统中,在tb_blogowners表中,用户名,与密码分别都设置了检查约束:
用户名不能以“[^_@#.]%'
”字符为开头,密码不能少于三位。
验证如下图:
5.4、惟一约束:
在本博客系统中,在tb_blogowners表中,用户名设置为唯一性,每个用户只有唯一的一个用户名。
验证如下图:
6数据库对象设计(20分)
6.1触发器:
触发条件:
INSERT
触发器名:
tb_comment_postcount
触发器用途:
每当日志收到一条评论时,日志表中tb_post中的该日志的评论总数列:
comment_count中的数据都会更新到最新的评论数量总数。
CREATETRIGGERtb_comment_postcountONtb_comments
FORINSERTAS
BENGIN
SELECTCOUNT(comment_count)AStb_ment_count
FROMtb_comments
END
6.2视图
视图名:
BlogView
用途:
查看博主的所有日志标题和编写时间以及评论总数
CREATEVIEWBlogViewAS
SELECTpost_title,post_date,comment_count
FROMtb_posts
7数据库实现
7.1建立数据库
通过用erwin把本系统建立在SQLServer2000数据库上。
如下图
7.2初始化所有表:
输入以下语句:
INSERTINTOtb_blogowners
(user_login,user_pass,user_nicename,user_email,user_url,user_registered,
user_ativtion_key,user_status,display_name)
values('
tom'
'
123'
xiaoming'
xiaoming@'
'
2010/3/4,'
yes'
good'
tomhome'
)
INSERTINTOtb_blogownersmeta
(ID,meta_key,meta_valu)
values(1000,'
性别'
,'
男'
INSERTINTOtb_posts
(ID,post_author,post_title,post_content,post_date,post_date_gmt,term_id,
comment_count)
VALUES(1000,'
story'
amansstory'
2010/3/15,2010/3/16,1000,10)
INSERTINTOtb_term
(term_name)
VALUES('
日记'
INSERTINTOtb_posts_meta
(ID,post_id,meta_key,meta_value,term_id)
VALUES(1000,1001,'
写日志时的心情'
开心'
1000)
INSERTINTOtb_comments
(ID,post_id,comment_author,comment_date,comment_date_gmt,term_id)
2010/3/15,2010/3/16,1000)
INSERTINTOtb_links
(ID,link_url,link_name)
腾讯网'
7.3实现查询功能
1、查询指定日期的所有日志
如:
查询2010年3月15日的日志:
SELECT*FROMtb_postswherepost_date=2010/3/15
2、查询指定日志的所有评论
查询tom的所有日志
SELECT*FROMtb_postswherepost_author=tom