免费源代码下载整理 - 云代码空间
—— 每天更新整理各种PHP、JSP、ASP源代码,敬请关注我的微博 http://weibo.com/freecodedownload
目 录
TOC \o "1-3" \u 1 需求分析.................................................................. PAGEREF _Toc310190913 \h 1
1.1 背景说明........................................................................................................... PAGEREF _Toc310190914 \h 1
1.2 系统目标与系统边界......................................................................................... PAGEREF _Toc310190915 \h 1
1.3 功能需求分析.................................................................................................... PAGEREF _Toc310190916 \h 1
1.3.1 系统的功能描述...................................................................................... PAGEREF _Toc310190917 \h 1
1.3.2 系统总体功能图...................................................................................... PAGEREF _Toc310190918 \h 4
1.3.3 主要业务流程描述................................................................................... PAGEREF _Toc310190919 \h 6
1.4 数据需求及业务规则分析.................................................................................. PAGEREF _Toc310190920 \h 8
1.4.1 数据需求描述.......................................................................................... PAGEREF _Toc310190921 \h 8
1.4.2 数据字典................................................................................................. PAGEREF _Toc310190922 \h 8
1.4.3 业务规则描述........................................................................................ PAGEREF _Toc310190923 \h 11
1.4.4 数据约束描述........................................................................................ PAGEREF _Toc310190924 \h 12
2 概念设计................................................................. PAGEREF _Toc310190925 \h 13
2.1 确定实体集及属性........................................................................................... PAGEREF _Toc310190926 \h 13
2.1.1 实体集分析............................................................................................ PAGEREF _Toc310190927 \h 13
2.1.2 实体集属性数据字典.............................................................................. PAGEREF _Toc310190928 \h 13
2.2 确定联系集及属性........................................................................................... PAGEREF _Toc310190929 \h 13
2.2.1 联系集分析............................................................................................ PAGEREF _Toc310190930 \h 13
2.2.2 联系集属性数据字典.............................................................................. PAGEREF _Toc310190931 \h 13
2.3 概念模型(E-R图)........................................................................................ PAGEREF _Toc310190932 \h 13
2.4 检查是否满足需求........................................................................................... PAGEREF _Toc310190933 \h 13
2.5 改进的E-R图及数据字典................................................................................ PAGEREF _Toc310190934 \h 14
3 逻辑设计................................................................. PAGEREF _Toc310190935 \h 14
3.1 关系设计......................................................................................................... PAGEREF _Toc310190936 \h 14
3.2 关系优化......................................................................................................... PAGEREF _Toc310190937 \h 14
3.3 约束的说明..................................................................................................... PAGEREF _Toc310190938 \h 14
4 数据库物理设计........................................................... PAGEREF _Toc310190939 \h 14
4.1 确定数据库的存储结构.................................................................................... PAGEREF _Toc310190940 \h 14
4.2 确定数据库的存取方法.................................................................................... PAGEREF _Toc310190941 \h 15
5 数据库应用设计........................................................... PAGEREF _Toc310190942 \h 15
5.1 数据库脚本..................................................................................................... PAGEREF _Toc310190943 \h 15
5.2 数据库完整性设计........................................................................................... PAGEREF _Toc310190944 \h 15
5.3 数据库安全性设计........................................................................................... PAGEREF _Toc310190945 \h 15
5.4 存储过程设计.................................................................................................. PAGEREF _Toc310190946 \h 15
6 数据库应用开发........................................................... PAGEREF _Toc310190947 \h 15
微博,即微博客(MicroBlog)的简称,是一个基于用户关系的信息分享、传播以及获取平台,用户可以通过WEB、WAP以及各种客户端组件个人社区,以140字左右的文字更新信息,并实现即时分享。最早也是最著名的微博是美国的twitter,根据相关公开数据,截至2010年1月份,该产品在全球已经拥有7500万注册用户。2009年8月份中国最大的门户网站新浪网推出“新浪微博”内测版,成为门户网站中第一家提供微博服务的网站,微博正式进入中文上网主流人群视野,成为网民不可缺少的一部分。
微博广泛分布在桌面、浏览器、移动终端等多个平台上。它十分简单,在微博客上,不像博客,只有140字的限制将平民和莎士比亚拉到了同一水平线上。导致各种微博大量原创内容爆发性地被生产出来。它也十分便捷,微博即时通讯功能非常强大,在没有网络的地方,只要有手机也可即时更新自己的内容,哪怕你就在事发现场。实时性强,在一些大的突发事件或引起全球关注的大事,如果有微博客在场,利用各种手段在微博客上发表出来,其实时性、现场感以及快捷性,甚至超过所有媒体。也正因为如此,微博以迅雷不及掩耳之势席卷了整个互联网。然而,面对着成千上万的用户,上亿的消息等等相关数据,如此海量的数据。如何存储才能高效处理便成为微博系统架构师的一大难题。也只有设计了良好的微博数据库,才能使前台,中间件的开发事半功倍,使用户体验更好,获得用户的青睐,从而吸引更多用户,为此,我们对微博系统的数据库进行深入的需求分析与设计,并尽可能的提高微博数据库的性能。
在本微博系统中,用户可发表(可发送私信,功能类似于E-MAIL),转发,评论,收藏消息(其中消息可包括图片,音乐,视频链接地址),随时看到被关注者的最新动态。创建,加入,发表,评论微群消息。创建消息,微群话题, 参与话题讨论,以及把系统一些建议反馈问题给系统。系统首要任务是如何对用户,消息联系之中的数据进行高效处理,并尽可能提高数据库的性能。
1.用户消息管理
l 发表消息 用户可以随时发表140个字左右的消息,其中可包括音乐,图片,视频,此处除图片外均为链接地址,而图片只可为相册中图片,发表的消息只有用户本身与关注此用户的人可以立即收到,否则须查询到相应用户才能看到该用户发表的消息。
l 删除消息 用户对发表过的消息,觉得不满或不适当的,可删除,只有用户或系统管理员本身有此权限。
l 评论消息 用户可对其它用户发表的消息进行评论,每条消息均会显示评论条数与评论内容。
l 删除评论 用户对自己不满意或其它原因的评论可删除。
l 转发消息 用户可以转发关注者所发表的消息,转发后,每条消息转发次数均会显示。
l 查看消息 用户可以在当前页面查看到被自己关注者的所有消息,按时间排序。
l 收藏消息 用户可对其它用户发表的感兴趣的消息收藏,供以后查看,每条消息下均会显示收藏次数,显然,私信不可收藏。
2.用户私信管理
l 发送私信 用户可以对自己的关注的人,即被关注者,发送私信,只有对方可见。可加入图片,表情,图片元素,对方收到后,亦可回信.仅两人可见。
l 查看私信 私信仅可在同一微博系统中进行发送并在用户“我的私信”中可查看所有发送和收到的私信。
l 回复私信 用户收到对方----即关注者发私信时,可直接回复对方。
l 删除私信 用户可以在“我的私信”中直接删除私信。
3.微群消息管理
l 发表群消息 用户可以随时发表140个字左右的消息,其中可包括音乐,图片,视频,此处除图片外均为链接地址,而图片只可为相册中图片,发表的消息只有用户本身与关注此用户的人可以立即收到,否则须查询到相应用户才能看到该用户发表的消息。
l 评论群消息 用户可对其它用户发表的群消息进行评论,每条消息均会显示评论条数与评论内容。
l 删除群评论 用户对自己不满意或其它原因的评论可删除。
l 转发消息 用户可以转发关注者所发表的消息,转发后,每条消息转发次数均会显示。
l 查看消息 用户可以在当前页面查看到被自己关注者的所有消息,按时间排序。
4.话题管理
用户可以把消息发表至某一话题下。用户也可查看当前热门话题,并参与之。也可以创建话题。话题中的消息与用户消息管理是完全一样的,只是话题细化了整个微博的消息,使用户能对某一话题进行交流,针对性强。
5.微群话题管理
在微群中亦可创建话题,其功能与一般话题一样,话题消息限在群中,是对群中消息的细化,使群中消息对某话题有针对性。
二、 用户管理
1.被关注者管理
l 关注用户 用户查找到需要关注用户时,通过关注即可随时知道被关注者的最新动态。
l 取消关注 用户不需要关注某用户时,直接取消关注即可。
2.用户信息管理
l 用户注册 用户使用前必须进行注册才能使用微博,此处使用E-MAIL注册即可,注册时填写E——MAIL与密码即可完成注册,系统会检查E_MAIL是否合法。
l 详细信息 用户完成注册后,可填写详细信息,使系统更快的为用户找出想关注的人和快速对用户进行分类,如,性别,出生年月,真实姓名,呢称,电话,身份证号码,地址,兴趣,毕业学校,职业,公司等.
3.关注组管理
l 创建关注组 当用户关注的人特别多时,显得有些不易于查看被关注者发表的信息,关注组即是对众多用户关注的人进行再次分组,并添加显示名称,可最为快捷的知道想要特别关注的一些人的最新动态。
l 删除关注组 删除关注组,即取消关注组里面人的特别关注,此处只是删除关注组,并不会取消组里用户的关注。
l 添加用户 添加已关注的用户至关注组中。
l 删除用户 删除关注组中的用户。
4.用户微群管理
l 创建微群 用户可以在微博中创建微群,群为超过一个用户有相同属性的用户集,如老乡会,同学群,公司群等等.创建微群后,用户也可以微群中创建若干话题,微群相当于在微博中一个小社区.
l 加入微群 用户可以通过搜索和微群分类以及系统推荐的一些热门群加入微群,只在加入后才可以微群里发表群消息.
l 退出微群 用户可以直接退出已加入的群。
5.用户相册管理
l 创建相册 用户可以在微博中建立多个相册。
l 删除相册 用户可以删除创建的相册,只有空相册可以删除。
l 上传照片 用户在微博中建立相册后,便可上传图片到相册中,与好友一起分享。
l 删除照片 用户可以删除上传后的图片。
6.管理员管理
提供系统管理员管理功能,管理员可对消息进行审查,如有不适当传播的消息可屏蔽之,亦可回复用户的反馈,也可以关注微博中的异常并处理之。此处管理员与一般用户类似,只有具有管理员认证。
7.皮肤管理
用户可对自己本身的微博选各种各样的皮肤,用以美观界面,也可以上传图片自定义皮肤。
三、 查找
1. 用户分类查找
系统会根据用户所填写的信息对用户进行细致的分类,使用户能快速查找到相关者,但是此处,并不是每个人都会进行分类,微博用户人数极其庞大,系统只会对达人进行分类以供查找。
2. 用户名查找
用户可以通过用户名查找需要关注的用户。
3. 微群查找
用户可以通过群名来查找相关的群。
4. 微群分类查找
用户也可以通过群分类来快速定位感兴趣的群,同样系统也不会对所以群进行分类,只有人数超过一定数量且活跃的才进行分类。
四、 统计
1. 热门话题
系统会对当前微博中热议的话题进行排名处理,供用户知道当前微博中大部分用户在讨论什么。用户也可快速参与其中。
2. 推荐用户,群
系统根据用户填写的信息,如毕业学校,爱好等到信息对用户进行快速推荐与用户有关的人和当前热门的群。
五、 反馈
如用户对于微博有什么意见和要求,可以通过反馈信息留言给管理员,针对用户所提出的问题,微博管理员会认真处理,使微博做的更好,此处主要以话题方式反馈给系统。
Ø 普通用户流程如下图:
注:
1. 用户信息管理:
l 用户信息管理
2. 消息管理:
l 用户消息管理
l 微群消息管理
l 用户私信管理
l 话题管理
l 微群话题管理
3. 被关注者管理:
l 关注组管理
l 被关注者管理
4. 群管理:
l 创建微群
l 加入微群 .
l 退出微群
5. 相册管理:
l 创建相册
l 删除相册
l 上传照片
l 删除照片
6. 评论管理:
l 发表评论
7. 皮肤管理:
l 更改皮肤
Ø 管理员流程如下图:
注:
1. 审核消息,评论:
审核有户发表的消息,评论是否有些不恰当于网络中的,给予相应处理。
2. 关注系统异常:
关注系统的异常,BUG。及时做出处理。
3. 回复反馈:
回复用户微博提出的问题。
对系统中的各种事物(对象)以及联系的属性进行描述,可能是基本对象,也可能是业务表格/单据(很多会涉及到多个基本对象之间的联系)。
1. 消息:消息包含消息编号,用户编号,话题编号,发表时间,转发次数,收藏次数,评论次数组成。
2. 私信:私息是消息的派生,增加了被发送者编号。
3. 微群消息:微群消息是消息的派生,增加了群编号。
4. 话题:由消息标题组成。
5. 评论:由消息编号,评论编号,用户编号,评论时间,评论内容组成。
6. 微群:由微群编号,数据项名,微群编号,微群妮称,群管理员,微群用户编,微群标签,用户数,创建时间组成。
7. 群消息评论:评论派生,只增加了群编号。
8. 用户:用户由用户编号,妮称,用户头像,邮箱,性别,密码,真实姓名,皮肤编号,QQ,毕业院校,职位,手机号,自我介绍,用户标签,兴趣,个人博客地址,注册时间组成。
9. 关注组:由关注组编号,被关注组编号,关注名称,创建时间组成。
10. 相册:由用户编号,相册编号,相册名称,图片名称,图片内容,图片创建时间组成。
11. 皮肤:由皮肤编号,背景图片组成,主题颜色组成。
12. 收藏:由用户编号,消息编号组成。
数据项名 |
取值范围 |
数据项含义说明 |
用户编号 |
以U开头加10位数字组成 |
用户编号,唯一识用户的字段 |
用户妮称 |
任意字符 |
用户在微博中显示的妮称,即用户名。 |
用户头像 |
图片类型 |
用户微博图像 |
邮箱(登陆名) |
符合邮箱规范 |
用户登陆所用 |
密码 |
至少6个可打印字符 |
用户登陆所用密码 |
性别 |
男,女,保密 |
用户性别 |
真实姓名 |
任意可打印字符 |
用户真实姓名 |
皮肤编号 |
S加10位数字 |
用户所用皮肤编号 |
|
6到10位数字 |
用户QQ |
毕业院校 |
任意可打印字符 |
用户毕业院校 |
职位 |
任意可打印字符 |
用户职位 |
手机号 |
11位数字 |
用户手机号码 |
自我介绍 |
任意可打印字符 |
用户一些简要的自我介绍 |
用户标签 |
任意可打印字符 |
用户的兴趣爱好 |
注册时间 |
时间 |
用户注册时间 |
个人博客 |
HTTP地址 |
用户博客地址 |
2. 关注组表:
数据项名 |
取值范围 |
数据项含义说明 |
关注组编号 |
以NG加10位数字组成 |
用户对所关注人可组成组 |
被关注者编号 |
同用户编号 |
同用户编号 |
创建时间 |
时间 |
创建关注组时间 |
关注组名称 |
任意可打印字符 |
创建的关注组名称 |
3. 普通消息表:
数据项名 |
取值范围 |
数据项含义说明 |
消息编号 |
以M开头加15位数字组成 |
用户发表消息编号 |
用户编号 |
以U开头加10位数字组成 |
用户编号 |
消息内容 |
任意可打印字符 |
用户发表消息内容 |
话题 |
任意可打印字符 |
用户发表消息所属话题 |
链接 |
http链接 |
用来链接音乐,视频 |
收藏次数 |
数值 |
消息被收藏的次数 |
评论次数 |
数值 |
消息被评论的次数 |
转发次数 |
数值 |
消秘被转发的次数 |
发表时间 |
时间 |
用户发表消息明间 |
4. 消息收藏表:
数据项名 |
取值范围 |
数据项含义说明 |
用户编号 |
同用户编号 |
同用户编号 |
消息编号 |
同消息编号 |
同消息编号 |
5. 用户私信表:
数据项名 |
取值范围 |
数据项含义说明 |
私信编号 |
以PM开头加10位数字 |
用户发送私信编号 |
关注者编号 |
同用户编号 |
同用户编号 |
被关注者编号 |
同用户编号 |
同用户编号 |
私信内容 |
任意可打印字符 |
用户发送私信内容 |
发送时间 |
时间 |
用户发送私信时间 |
6. 群消息表:
数据项名 |
取值范围 |
数据项含义说明 |
群消息编号 |
GM开头加15位数字组成 |
群消息编号 |
用户编号 |
同用户编号 |
同用户编号 |
微群话题内容 |
任意可打印字符 |
微群中话题名称 |
群编号 |
G开头加10位数字组成 |
用户所建群编号 |
发表时间 |
时间 |
用户发表群消息时间 |
群消息评论编号 |
同群消息评论编号 |
同群消息主评论编号 |
群消息内容 |
任意可打印字符 |
群消息内容 |
7. 评论表:
数据项名 |
取值范围 |
数据项含义说明 |
评论编号 |
以R开头加15位数字组成 |
用户评论 |
消息编号 |
同消息编号 |
同消息编号 |
用户编号 |
同用户编号 |
同用户编号 |
评论时间 |
时间 |
用户发表评论时间 |
评论内容 |
任意可打印字符 |
用户发表评论内容 |
8. 微群表:
数据项名 |
取值范围 |
数据项含义说明 |
微群编号 |
同群编号 |
同群编号 |
微群妮称 |
任意可打印字符 |
群的显示名称 |
群管理员 |
同用户编号 |
同用户编号 |
微群用户编号 |
同用户编号 |
同用户编号 |
微群标签 |
同用户标签 |
同用户标签 |
用户数 |
数值 |
微群中成员数量 |
创建时间 |
时间 |
创建群时间 |
9. 微群评论表:
数据项名 |
取值范围 |
数据项含义说明 |
微群编号 |
同群编号 |
同群编号 |
评论编号 |
以R开头加15位数字组成 |
用户评论 |
消息编号 |
同消息编号 |
同消息编号 |
用户编号 |
同用户编号 |
同用户编号 |
评论时间 |
时间 |
用户发表评论时间 |
评论内容 |
任意可打印字符 |
用户发表评论内容 |
10. 相册表:
数据项名 |
取值范围 |
数据项含义说明 |
相册编号 |
P开头加10位数字组成 |
用户相册编号 |
用户编号 |
同用户编号 |
同用户编号 |
相片名称 |
任意可打印字符 |
相片名称 |
相片内容 |
图片类型 |
用户分享的图片 |
相册名称 |
任意可打印字符 |
用户相册名字 |
11. 皮肤表:
数据项名 |
取值范围 |
数据项含义说明 |
皮肤编号 |
S开头加5位数字组成 |
皮肤编号 |
背景图片 |
图片类型 |
同用户编号 |
主题颜色 |
9位数字 |
RGB表示主题颜色 |
(2) 用户注册时只能使用电子邮件进行注册,密码为不少于6位的字符,注册成功后,必须增加用户详细信息,如用户名,等信息必填的信息。才能使用微博。
(3) 用户可以关注多个被关注者,一个用户也可以被关注者关注多次。
(4) 只有关注用户,或加入群后,系统才会把被关注的用户的最新动态发送至用户微博界面。
(5) 关注者:即相当于用户的粉丝,用户一发表消息即发送到关注者的微博界面中。
(6) 被关注者:用户关注了的人,可以随时看到被关注者的最新动态。
(7) 关注组:对被关注都进行快速分组,可以对特别的人进行特别关注,在被关注者多时推荐使用。
(8) 达人:当用户的关注者超过200个,被关注者超过100个,且每天至少发表一条消息即可成为达人,达人需要向系统申请,内容参照标签。
(9) 认证:为用户在某领域具有一定权威的人物,如演员,专家,为达人一种派生,认证需系统官方进行操作,认证的范围由系统给定。
(10) 活跃群:当群中人数超过300人,且每日消息数量不少于100条时,便可成为活跃群。
(11) 标签:用户标签项不可超过20项,用户只能从系统中选择标签。
(12) 推荐用户:当用户填写了比较完整的信息时,系统便会根据用户的信息,如职业,用户标签,
(13) 用户分类,系统会自动为成为达人与认证的用户分类,使其它用户能快速了解到达人的最新动态。
(14) 反馈其实只是一种特殊话题。只不过此话题由系统默认创建。
(15) 管理员也为微博中一个用户,但身份已被系统认证为系统管理员。
(16) 消息由消息编号唯一确定。
(17) 转发消息,用户可转发其它用户已发表消息,转发消息只是在用户复制其它用户发表的消息再重新发表,并在消息内容片显示被转发者。
(18) 私信由私信编号唯一确定。
(19) 群消息由群消息编号唯一确定。
(20) 话题,微群话题只是在消息,微群消息中加入话题标题字段,发表时在两#之间内容即为话题,如发表消息无话题,系统默认置空。
(21) 热门话题:系统会对当前话题消息数量前15的进行统计,让用户能随时知道当前最热门的话题。
(22) 微群由群号唯一确定。
(23) 微群中的消息只有群管理员有权限删除。
(24) 微群标签:同用户标签一样,微群也可设置标群标签,只有群管理员有此权限,微群标签只能选择一个。
(25) 推荐群,同推荐用户一样,系统会根据群的标签等其它信息与用户标签把相似的群推荐给用户。
(26) 微群分类:同达人一样,系统也会为活路微群进行分类,使用户能快速找到自己喜欢的群,但只有活跃群才会进行分类。
(27) 评论由评论编号唯一确定。
(28) 微群评论由微群评论编号唯一确定。
(29) 用户由用户编号唯一确定。
(30) 用户组由组号唯一确定
(31) 相册由相册编号唯一确定。
(32) 相册中图片由图片编号唯一确定。
1) 一个用户的关注者不限,但被关注者不可超过10万。
2) 一个用户相册数不能超过100个,相册中图片不可超过500个。
3) 一个用户创建的微群不可超过10个,微群中的管理员不可超过5个。
4) 一个用户创建的用户组不可超过50个,组中的关成员不可超过50个。
5) 消息的字数不可超过140个,链接除外。
6) 普通消息编码规则:以M开头15位数字组成。
7) 话题编码规则:以T加15位数字组成。
8) 私信编码规则:以PM开头15数字组成。
9) 群信息编码规则:以GM开头15位数字组成。
10) 评论编码规则:以R开头15位数字组成。
11) 微群评论编码规则:以GR开头15位数字组成。
12) 微群编码规则:以G开头10位数字组成。
13) 用户编码规则:以U开头加10位数字组成。
14) 院校编码规则:以S加10位数字组成。
15) 标签编码规则:以L加10位数字组成。
16) 关注组编码规则:以NG加10位数字组成。
17) 相册编码规则:以PF开头加10位数字组成。
18) 相册图片编码规则:以P开头加10位数字组成。
19) 皮肤编码规则:以S开头加5位数字组成。
从系统的数据需求描述中,抽取出实体集(可能对应基本对象,也可能对应表格/单据),并对其属性进行描述,根据需求分析可得到如下实体集:
1. 用户实体集。其属性有:包括用户编号,妮称,用户头像,邮箱,性别,密码,真实姓名,QQ,职位,手机号,自我介绍,个人博客地址,注册时间, 达人,认证。
2. 院校实体集。其属性有:院校编号,院校名称,所在省,所在市,所在县。
3. 标签实体集。标签编号,标签内容。
4. 消息实体集。派生普通消息与群消息,其属性有:消息编号,消息内容,评论次数,收藏次数,转发次数。
5. 私信实体集。其属性有:私信编号,私信内容。
6. 评论实体集。其属性有:评论编号,评论内容。
7. 微群实体集。其属性有:微群编号,微群妮称,管理员,用户数。
8. 关注组实体集。其属性有:由关注组编号,关注组名称,被关注者人数。
9. 相册实体集。其属性有相册编号,相册名称,图片数量。
10. 图片实体集。其属性有:图片编号,图片名称,图片内容。
11. 皮肤实体集。其属性有:皮肤编号,背景图片,主题颜色。
12. 话题实体集。派生消息话题与群标题。其属性有:话题编号,消息数量,话题简介。
1. 用户表:
数名项名 |
取值范围 |
数据项含义说明 |
用户编号 |
以U开头加10位数字组成 |
用户编号,唯一识用户的字段 |
用户妮称 |
任意字符 |
用户在微博中显示的妮称,即用户名。 |
用户头像 |
图片类型 |
用户微博图像 |
邮箱(登陆名) |
符合邮箱规范 |
用户登陆所用 |
密码 |
至少6个可打印字符 |
用户登陆所用密码 |
性别 |
男,女,保密 |
用户性别 |
真实姓名 |
任意可打印字符 |
用户真实姓名 |
|
6到10位数字 |
用户QQ |
职位 |
任意可打印字符 |
用户职位 |
手机号 |
11位数字 |
用户手机号码 |
自我介绍 |
任意可打印字符 |
用户一些简要的自我介绍 |
注册时间 |
时间 |
用户注册时间 |
认证 |
系统提供,某一领域,如演员,学者 |
参照标签属性,为在某一领域有影响的专家 |
达人 |
参照标签内容 |
为在某一方面有爱好或专长 |
个人博客 |
HTTP地址 |
用户博客地址 |
2. 院校表:
数据项名 |
取值范围 |
数据项含义说明 |
院校编号 |
以S加10位数字组成 |
院校编号 |
所在省 |
中文字符 |
院校所在省份 |
所在市 |
中文字符 |
院校所在市 |
所在县 |
中文字符 |
院校所在县 |
院校名称 |
中文字符 |
院校名称 |
3. 标签表
数据项名 |
取值范围 |
数据项含义说明 |
标签编号 |
以L加10位数字组成 |
标签编号 |
标签内容 |
中文字符 |
用户标签 |
4. 关注组表:
数据项名 |
取值范围 |
数据项含义说明 |
关注组编号 |
以NG加10位数字组成 |
用户对所关注人可组成组 |
关注组名称 |
任意可打印字符 |
创建的关注组名称 |
5. 消息表:
数据项名 |
取值范围 |
数据项含义说明 |
消息编号 |
普通消息/群消息编号 |
用户发表消息编号 |
消息内容 |
任意可打印字符 |
用户发表消息内容 |
话题 |
任意可打印字符 |
用户发表消息所属话题 |
链接 |
http链接 |
用来链接音乐,视频 |
收藏次数 |
数值 |
消息收藏的次数 |
评论次数 |
数值 |
消息评论的次数 |
转发次数 |
数值 |
消息被转发的次数 |
6. 用户私信表:
数据项名 |
取值范围 |
数据项含义说明 |
私信编号 |
以PM开头加10位数字 |
用户发送私信编号 |
私信内容 |
任意可打印字符 |
用户发送私信内容 |
7. 评论表:
数据项名 |
取值范围 |
数据项含义说明 |
评论编号 |
消息评论/群消息评论 |
用户评论 |
评论内容 |
任意可打印字符 |
用户发表评论内容 |
8. 微群表:
数据项名 |
取值范围 |
数据项含义说明 |
微群编号 |
同群编号 |
同群编号 |
微群妮称 |
任意可打印字符 |
群的显示名称 |
群管理员 |
同用户编号 |
同用户编号 |
微群标签 |
同用户标签 |
同用户标签 |
用户数 |
数值 |
微群中成员数量 |
9. 相册表:
数据项名 |
取值范围 |
数据项含义说明 |
相册编号 |
P开头加10位数字组成 |
用户相册编号 |
图片数量 |
数值 |
相册中图片个数 |
相册名称 |
任意可打印字符 |
用户相册名字 |
10. 图片表:
数据项名 |
取值范围 |
数据项含义说明 |
图片编号 |
P开头加10位数字组成 |
用户上传图片编号 |
相片名称 |
任意可打印字符 |
相片名称 |
相片内容 |
图片类型 |
用户分享的图片 |
11. 皮肤表:
数据项名 |
取值范围 |
数据项含义说明 |
皮肤编号 |
S开头加5位数字组成 |
皮肤编号 |
背景图片 |
图片类型 |
同用户编号 |
主题颜色 |
9位数字 |
RGB表示主题颜色 |
12.话题表
数据项名 |
取值范围 |
数据项含义说明 |
话题编号 |
群话题编号/ 消息话题编号 |
用户发表消息编号 |
消息数量 |
数值 |
话题包含的消息个数 |
话题标题 |
最多不超过20字符 |
话题的标题 |
话题简介 |
任意可打印字符 |
话题内容简介 |
对各实体集(联系集)之间的联系进行描述,包括联系的映射基数、联系属性等。
1. 用户——用户的关注联系集:多对多联系,一个用户可以关注多个用户,而用户也可以被多个用户关注。
2. 用户——私信的发送联系集:一对多联系,一个用户可以给多个用户发送私信。其属性有:发送时间。
3. 用户——私信的接收联系集:一对多联系,一个用户可以接收多个用户发送的私信。
4. 用户——关注组的创建联系集:一对多联系,一个用户可以创建多个关注组。其属性有:关注组创建时间。
5. 用户——关注组的包含联系集:多对多联系,一个用户可以被关注组包多次,一个关注组也可以包含多个用户。
6. 用户——相册的创建联系集:一对多联系,一个用户可以创建多个相册。其属性有:创建时间。
7. 用户——图片的上传联系集:一对多联系,一个用户可以上传多张照片,其属性有:上传时间。
8. 用户——院校的属于联系集:多对一联系,一个毕业院校可以有多个学生,即用户。
9. 用户——标签的包含联系集:一个用户可以有多个标签描述自己,一个标签也可以被多个用户使用。
10. 相册——图片的包含联系集:一对多联系,一个相册可以包含多个图片。
11. 用户——皮肤的使用联系集:多对一联系,一种皮肤可以被多个用户使用。
12. 用户——群的创建联系集:一对多联系,一个用户可以创建多个群,其属性有:创建时间。
13. 用户——群的包含联系集:多对多联系,一个群可以包含多个用户,一个用户也可以加入多个群。
14. 用户——评论发表联系集:一对多联系,一个群用户可以发表多条群评论,其属性有:评论时间。
15. 用户——消息的发表联系集:一对多联系,一个用户可以发表多条消息,其属性有:发表时间。
16. 用户——消息的收藏联系集:多对多联系,一个用户可以收藏多条消息,一条消息可以被多个用户收藏。
17. 用户——消息的转发联系集:多对多联系,一个用户可以转发多条消息,一条消息可以被多个用户转发。。
18. 消息——评论的包含联系集:一对多联系,一条消息含有多个评论。
19. 消息——话题的包含联系集:多对一联系,一个话题有多个消息。
1. 用户——私信的发送联系集:
数据项名 |
取值范围 |
数据项含义说明 |
发送时间 |
时间类型 |
用户发送给关注者私信的时间 |
2. 用户——关注组创建联系集:
数据项名 |
取值范围 |
数据项含义说明 |
创建时间 |
时间类型 |
用户创建关注组的时间 |
3. 用户——相册的创建联系集:
数据项名 |
取值范围 |
数据项含义说明 |
创建时间 |
时间类型 |
用户创建相册的时间 |
4. 用户——图片的上传联系集:
数据项名 |
取值范转 |
数据项含义说明 |
上传时间 |
时间类型 |
用户上传图片的时间 |
5. 用户——群的创建联系集:
数据项名 |
取值范转 |
数据项含义说明 |
创建时间 |
时间类型 |
用户上传图片的时间 |
6. 用户——消息的发表联系集:
数据项名 |
取值范转 |
数据项含义说明 |
上传时间 |
时间类型 |
用户上传图片的时间 |
7. 用户——评论的发表联系集:
数据项名 |
取值范转 |
数据项含义说明 |
发表时间 |
时间类型 |
用户发表评论的时间 |
l 实体E—R图:
2. 消息实体集:
3. 标签实体集:
4. 院校实体集:
5. 评论实体集:
6. 微群实体集:
7. 关注组实体集:
8. 相册实体集:
9. 图片实体集:
10. 皮肤实体集:
11. 私信实体集:
12. 话题实体集:
l 总E—R图:
1. 第一部分:
2. 第2部分:
注:以下表中,加粗加下划线属性为主码,加粗斜体属性为外码。
l 由实体集转化而来的表:
属性名称 |
数据类型 |
属性说明 |
Uid |
char(11) |
用户编号 |
Ualais |
varchar(20) |
用户妮称 |
Uimage |
image |
用户头像 |
Ulogon |
varchar(30) |
邮箱(登陆名) |
Upassswd |
varchar(20) |
密码 |
Usex |
char(1) |
性别 |
Uname |
varchar(20) |
真实姓名 |
Uskin |
char(11) |
皮肤编号 |
Uqq |
varchar(11) |
|
Uschool |
Char(11) |
毕业院校 |
Uwork |
varchar(20) |
职位 |
Utel |
char(10) |
手机号 |
Uinfo |
varchar(100) |
自我介绍 |
Udatetime |
datetime |
注册时间 |
Ublog |
varchar(50) |
个人博客 |
2. 关注组attenGruop表:
属性名称 |
数据类型 |
属性说明 |
Uid |
Char(11 |
用户编号 |
NGid |
Char(12) |
关注组编号 |
Uider |
Char(11) |
被关注者编号 |
NGDatetime |
Datetime |
创建时间 |
NGnum |
Int |
关注组人数 |
Ngname |
Varchar(20) |
关注组名称 |
3. 院校school表
属性名称 |
数据类型 |
属性说明 |
Sid |
Char(11) |
院校编号 |
Sname |
Varchar(10) |
所在省 |
Spro |
Varchar(10) |
所在市 |
Scity |
Varchar(10) |
所在县 |
Scountry |
Varchar(20) |
院校名称 |
4. 标签label表
属性名称 |
数据类型 |
属性说明 |
Lid |
Char(11) |
标签编号 |
Lname |
Varchar(10) |
标签内容 |
5. 用户使用标签UserLabel
属性名称 |
数据类型 |
属性说明 |
Uid |
Char(11) |
用户编号 |
Lid |
char(11) |
标签编号 |
6. 私信priMessage表:
属性名称 |
数据类型 |
属性说明 |
PMid |
Char(12) |
私信编号 |
Uid |
Char(11) |
发送者编号 |
RUid |
Char(11) |
接收者编号 |
PMcontent |
Varchar(200) |
私信内容 |
PMdatetime |
datetime |
发送时间 |
7. 微群group表:
属性名称 |
数据类型 |
属性说明 |
Gid |
Char(16) |
微群编号 |
Gname |
Varchar(20) |
微群妮称 |
Gadmin |
Char(11) |
群管理员 |
Gid |
Char(11) |
微群用户编号 |
Glabel |
Char(11) |
微群标签 |
Gnum |
Int |
用户数 |
Gdatetime |
Datetime |
创建时间 |
8. 相册photoFolder表
属性名称 |
数据类型 |
属性说明 |
PFid |
Char(11) |
相册编号 |
Uid |
Char(11) |
用户编号 |
PFname |
Varchar(20) |
相册名称 |
PFnum |
int |
图片数量 |
Pid |
Char(11) |
图片编号 |
9. 图片photo表:
属性名称 |
数据类型 |
属性说明 |
Pid |
Char(11) |
图片编号 |
Pname |
Varchar(20) |
相片名称 |
Photo |
Varbinary(5000) |
图片 |
10. 皮肤skin表:
属性名称 |
数据类型 |
属性说明 |
Sid |
Char(6) |
皮肤编号 |
Simage |
Varbinary(2048) |
背景图片 |
Scolor |
Char(9) |
RGB主题颜色 |
l 由类层次转化而来的表:
1. 普通消息message表:
属性名称 |
数据类型 |
属性说明 |
Mid |
Char(16) |
消息编号 |
Uid |
Char(11) |
用户编号 |
Tid |
Char(16) |
话题编号 |
Cid |
Char(11) |
转发编号 |
Mcontent |
Varchar(150) |
消息内容 |
Mhttp |
Varchar(150) |
链接 |
Mfav |
Int |
收藏次数 |
Mreply |
Int |
评论次数 |
Mcopy |
Int |
转发次数 |
Mdatetime |
datetime |
发表时间 |
2. 普通消息话题messageTitle表
属性名称 |
数据类型 |
属性说明 |
Tid |
Char(16) |
话题编号 |
Tnum |
Int |
消息数量 |
Tname |
Varchar(20) |
话题标题 |
Tcontent |
Varchar(1000) |
话题简介 |
Ttime |
datetime |
发表时间 |
3. 普通消息评论messageReply表:
属性名称 |
数据类型 |
属性说明 |
Rid |
Char(16) |
评论编号 |
Mid |
Char(16) |
消息编号 |
Uid |
Char(11) |
用户编号 |
Rdatetime |
Datetime |
评论时间 |
Rcontent |
Varchar(200) |
评论内容 |
4. 群消息话题groupTitle表:
属性名称 |
数据类型 |
属性说明 |
GTid |
Char(17) |
群话题编号 |
Tnum |
Int |
消息数量 |
Tname |
Varchar(20) |
话题标题 |
Tcontent |
Varchar(1000) |
话题简介 |
Ttime |
datetime |
发表时间 |
5. 微群消息评论gruopReply表
属性名称 |
数据类型 |
属性名称 |
GRid |
Char(17) |
微群消息评论编号 |
GMid |
Char(17) |
群消息编号 |
Gid |
Char(17) |
群编号 |
Uid |
Char(11) |
用户编号 |
GRdatetime |
datetime |
评论时间 |
GRcontent |
Varchar(200) |
评论内容 |
6. 群消息groupMessage表:
属性名称 |
数据类型 |
属性说明 |
GMid |
Char(17) |
群消息编号 |
Gid |
Char(16) |
群编号 |
Uid |
Char(11) |
用户编号 |
GTid |
Char(17) |
群话题编号 |
Cid |
Char(11) |
转发编号 |
Mcontent |
Varchar(150) |
消息内容 |
Mhttp |
Varchar(150) |
链接 |
Mreply |
Int |
评论次数 |
Mcopy |
Int |
转发次数 |
GMdatetime |
datetime |
发表时间 |
l 由联系集转化的表:
1. 收藏fav表:
属性名称 |
数据类型 |
属性说明 |
Fid |
Char(11) |
收藏编号 |
Uid |
Char(11) |
用户编号 |
Mid |
Char(16) |
消息编号 |
2. 关注表attention表:
属性名称 |
数据类型 |
属性说明 |
Uid |
Char(11) |
用户编号 |
attUid |
Char(11) |
被关注者编号 |
3. 转发copy表:
属性名称 |
数据类型 |
属性说明 |
Cid |
Char(11) |
转发表编号 |
Uid |
Char(11) |
用户编号 |
Mid |
Char(16) |
被转发消息编号 |
CUid |
Char(11) |
被转发用户编号 |
l 微群group表:
属性名称 |
数据类型 |
属性说明 |
Gid |
Char(16) |
微群编号 |
Gname |
Varchar(20) |
微群妮称 |
Gadmin |
Char(11) |
群管理员 |
GUid |
Char(11) |
微群用户编号 |
Glabel |
Char(11) |
微群标签 |
Gnum |
Int |
用户数 |
Gdatetime |
Datetime |
创建时间 |
并不符合BCNF,把group 分解得
groupMember(Gid,GUid)
groupInfo(Gid,Gname ,Gnum,Gdatetime)
groupMemAdmin(Gid,Gadmin)
l 关注组attenGruop表:
属性名称 |
数据类型 |
属性说明 |
Uid |
Char(11 |
用户编号 |
NGid |
Char(12) |
关注组编号 |
Uider |
Char(11) |
被关注者编号 |
NGDatetime |
Datetime |
创建时间 |
NGnum |
Int |
关注组人数 |
Ngname |
Varchar(20) |
关注组名称 |
亦不符合BCNF
分解得:
attenMember(NGid,uider)
userAtten(Uid,NGid)
attenInfo(NGid, NGDatetime,NGnum,Nganme)
l 关系表中的外码与主码在4.1中定义。
l 需求分析阶段的数据约束在4.2中定义。
set nocount on
set dateformat ymd
use master
go
if not exists(select * from syslogins where name='weibouser')
exec sp_addlogin weibouser, weibouser
go
if exists(select *from sysdatabases where name=' weiboDB')
drop database weiboDB
go
--创建数据库
create database weiboDB
--主数据库
on primary
(name=' weiboDB ',
filename='c:\weibo\ hresourcesdb.mdf',
size=500,
maxsize=500000,
filegrowth=1)
--数据库日志
log on
(name=' weiboDB log ',
filename='d:\ weibo \ weiboDB.ldf',
size=50,
maxsize=5000,
filegrowth=1)
go
/用户user表*/
create table user(
Uid char(11) not null primary key --用户编号
check(Uid like '[U][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
Ualais varchar(20) not null --用户妮称
Uimage image not null --用户头像
Ulogon varchar(30) not null --邮箱(登陆名)
Upassswd varchar(20) not null --密码
Usex char(1) not null --性别
Uname varchar(20) null --真实姓名
Uskin char(11) not null --皮肤编号
Uqq varchar(11) null --QQ
Uschool Char(11) null --毕业院校
Uwork varchar(20) null --职位
Utel char(10) null --手机号
Uinfo varchar(100) null --自我介绍
Udatetime datetime not null --注册时间
Ublog varchar(50) null --个人博客
constraint PK1 foreign key(Uskin) references skin(Sid),
constraint PK2 foreign key(Uschool) references school(Sid),
)
Go
/* attenMember表*/
create table attenMember (
NGid Char(12) not null --关注组编号
Uider Char(11) not null --被关注者编号
constraint pK primary key(NG,Uider),
constraint PK1 foreign key(NGid) references attenInfo(NGid),
constraint PK1 foreign key(uider) references user(Uid)
)
go
/* userAtten表*/
create table attenGroup(
Uid Char(11) not null not null --用户编号
NGid Char(12) not null not null --关注组编号
constraint pK primary key(Uid,NUid),
constraint PK1 foreign key(NGid) references attenInfo(NUid)
)
go
/* AttenInfo表*/
create table attenGroup(
NGid Char(12) not null primary key --关注组编号
check(NGid like '[U][G][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
NGDatetime Datetime not null --创建时间
NGnum Int not null --关注组人数
Ngname Varchar(20) not null --关注组名称
)
go
/*院校school表*/
create table shcool(
Sid Char(11) not null primary key --院校编号
check(Sid like '[S][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
Sname Varchar(10) not null --所在省
Spro Varchar(10) not null --所在市
Scity Varchar(10) not null --所在县
Scountry Varchar(20) not null --院校名称
)
go
/*标签label表*/
create table label (
Lid Char(11) not null primary key --标签编号
check(Lid like '[U][G][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
Lname Varchar(10) not null --标签内容
)
go
/*标签Userlabel表*/
create table Userlabel (
Uid char(11) not null --用户编号
Lid char(11) not null --标签编号
constraint FK primary key(Uid,Lid),
constraint PK1 foreign key(Uid) references user(Uid),
constraint FK2 foreign key(Lid) references Label(Lid)
)
go
/*私信priMessage表*/
create table priMessage(
PMid Char(12) not null primary key --私信编号
check(PMid like '[P][M][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
Uid Char(11) not null --发送者编号
RUid Char(11) not null --接收者编号
PMcontent Varchar(200) not null --私信内容
PMdatetime datetime not null --发送时间
constraint FK1 foreign key(RUid) references user(Uid),
constraint FK2 foreign key(Uid) references user(Uid)
)
go
/*微群groupMember表*/
create table groupMember (
Gid Char(16) not null primary key --微群编号
Uid Char(11) not null --微群用户编号
constraint FK1 foreign key(uid) references user(Uid),
constraint FK1 foreign key(gid) references groupInfo(Gid)
)
go
/*微群groupInfo表*/
create table groupInfo(
Gid Char(16) not null primary key --微群编号
check(Gid like '[G][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
Gname Varchar(20) not null --微群妮称
Glabel Char(11) not null --微群标签
Gnum Int not null --用户数
Gdatetime Datetime not null --创建时间
constraint FK2 foreign key(Glabel) references label(Lid)
)
go
/*微群groupAdmin表*/
create table groupInfo(
Gid Char(16) not null primary key --微群编号
Gadmin Char(11) not null --群管理员
constraint PK1 foreign key(Gadmin) references user(uid),
)
go
/*相册photoFolder表*/
create table photoFolder(
PFid Char(11) not null primary key --相册编号
check(PFid like '[P][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
Uid Char(11) not null --用户编号
PFname Varchar(20) not null --相册名称
PFnum int not null --图片数量
Pid Char(11) not null --图片编号
constraint FK1 foreign key(Uid) references user(Uid)
)
go
/*图片photo表*/
create table photo(
Pid Char(11) not null primary key --图片编号
Check PGid like '[P][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')
Pname Varchar(20) not null --相片名称
Photo Varbinary(5000) not null --图片
)
go
/*皮肤skin表*/
create table skin(
Sid Char(11) primary key --皮肤编号
check(Sid like '[G][0-9][0-9][0-9][0-9][0-9]')
Simage Varbinary(2048) --背景图片
Scolor Char(9) --RGB主题颜色
)
go
/*普通消息message表*/
Create table message(
Mid Char(16) not null primary key --消息编号
check(Gid like '[M][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')
Uid Char(11) not null --用户编号
Tid Char(16) null --话题编号
Cid Char(11) null --转发编号
Mcontent Varchar(150) not null--消息内容
Mhttp Varchar(150) null --链接
Mfav Int not null --收藏次数
Mreply Int not null --评论次数
Mcopy Int not null --转发次数
Mdatetime datetime not null --发表时间
constraint FK1 foreign key(uider) references user(Uid),
constraint FK2 foreign key(Uid) references copy(Cid)
constraint Fk3 foreign key(Uid) references messageTitle(Tid)
)
go
/*普通消息话题messageTitle表*/
create table messageTitle(
Tid Char(16) not null primary key --话题编号
check(Tid like '[T][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')
Tnum Int not null --消息数量
Tname Varchar(20) not null --话题标题
Tcontent Varchar(1000) not null--话题简介
)
go
/*普通消息评论messageReply表*/
create table messageReply(
Rid Char(16) not null primary key --评论编号
check(Rid like '[R][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')
Mid Mid(16) not null --消息编号
Uid Uid(11) not null --用户编号
Rdatetime Datetime not null --评论时间
Rcontent Varchar(200) not null --评论内容
constraint FK1 foreign key(Mid) references message(Mid),
constraint FK2 foreign key(Uid) references user(Uid)
)
go
/*群消息话题groupTitle表*/
create table groupTitle(
GTid Char(17) not null primary key --话题编号
check(GTid like '[G][T][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')
Tnum Int not null --消息数量
Tname Varchar(20) not null --话题标题
Tcontent Varchar(1000) not null --话题简介
)
go
/*微群消息评论groupReply表*/
create table groupReply(
GRid Char(17) not null primary key --微群消息评论编号
check(GRid like '[G][R][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')
GMid Char(16) not null --群消息编号
Gid Char(16) not null --群编号
Uid Char(11) not null --用户编号
GRdatetime datetime not null --评论时间
GRcontent Varchar(200) not null --评论内容
constraint FK1 foreign key(GMid) references groupMessage(Uid),
constraint FK2 foreign key(Gid) references group(Uid)
constraint FK3 foreign key(Uid) references user(Uid)
)
go
/*群消息groupMessage表*/
create table groupMessage(
GMid Char(17) not null primary key --群消息编号
check(GMid like '[G][M][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')
Gid Char(16) not null --群编号
Uid Char(11) not null --用户编号
GTid Char(16) null --群话题编号
Cid Char(11) not null --转发编号
Mcontent Varchar(150) not null --消息内容
Mhttp Varchar(150) not null --链接
Mreply Int not null --评论次数
Mcopy Int not null --转发次数
GMdatetime datetime not null --发表时间
constraint FK1 foreign key(Gid) references group(Gid),
constraint FK2 foreign key(Uid) references user(Uid)
constraint FK3 foreign key(uider) references GroupTitle(GTid),
constraint FK4 foreign key(Cid) references Copy(cid)
)
go
/*收藏fav表*/
create table fav(
Fid Char(11) not null primary key --收藏编号
check(Fid like '[G][T][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ')
Uid Char(11) not null --用户编号
Mid Char(16) not null --消息编号
constraint FK1 foreign key(Uid) references user(Uid),
constraint FK2 foreign key(Mid) references message(Uid)
)
go
/*关注attention表*/
create table attention(
Uid Char(11) not null --用户编号
attUid Char(11) not null --被关注者编号
constraint pK primary key(Uid,attUid) ,
constraint FK1 foreign key(Uid) references user(Uid),
constraint FK2 foreign key(Mid) references message(Uid)
)
go
/*转发copy表*/
create table copy(
Cid Char(11) not null primary key --转发表编号
check(Fid like '[C][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ')
Uid Char(11) not null --用户编号
Mid Char(16) not null --被转发消息编号
CUid Char(11) not null --被转发用户编号
constraint FK1 foreign key(Mid) references Message(Mid),
constraint FK2 foreign key(Uid) references user(Uid),
constraint FK2 foreign key(CUid) references user(Uid)
)
go
主要是通过触发器定义一些复杂的数据库完整性要求。在本系统中用的较多的是插入触发器,在数据约束已详细描述。此处给予几个简单实现:
为方便处理首先规定所插入操作一次只允许插入一条记录。
CREATE TRIGGER InsTrg
ON user --此处可用别相应的表取代
FOR INSERT
AS
DECLARE @ info char(11
IF ( SELECT count(*) FROM inserted )>1
ROLLBACK
1.用户相册不超过100个
CREATE TRIGGER pftrigger
ON photoFolder
FOR INSERT
AS
@info char(11);
Select @info=Uid from inserted
IF ( SELECT count(*) FROM phtotFolder a where @info=a.Uid)=100)
ROLLBACK
2.相册图片不超过500个
CREATE TRIGGER prigger
ON photo
FOR INSERT
AS
@info char(11);
Select @info=Uid from inserted
IF ( SELECT count(*) FROM phtot a where @info=a.Uid)=500)
ROLLBACK
3.关注组数量不超过50个
CREATE TRIGGER prigger
ON attenMember
FOR INSERT
AS
@info char(11);
Select @info=NGid from inserted
IF ( SELECT count(NGid) FROM attenMember where @info=aNGid)=50)
ROLLBAC
推存用户类似的可能感兴趣的用户。
create procedure delayCount(@uid char(11))
as
begin
create table #tmp(
UId char(11);
)
declare @userId char(11)
declare myCur cursor for
select Uid
from user a
where @uid.Uschool=a.Uschool or
@uid.Uwork =a.Uwork
open myCur
fetch myCur into @userId
while(@@fetch_status=0)
begin
insert into #tmp values(@userId)
fetch myCur into @userId
end
close myCur
deallocate myCur
select * from #tmp
end
统计当天热门话题前15话题编号,并返回,此处指普通消息。
create procedure delayCount(@date datetime)
as
begin
create table #tmp(
titleId char(11);
)
declare @titleId char(11)
declare myCur cursor for
select top 15 Tid
from messageTitle
where Ttime=@date
orderby Tnum desc
open myCur
fetch myCur into @titleId
while(@@fetch_status=0)
begin
insert into #tmp values(@titleId)
fetch myCur into @titleId
end
close myCur
deallocate myCur
select * from #tmp
end