微博数据库设计_第1页
微博数据库设计_第2页
微博数据库设计_第3页
微博数据库设计_第4页
微博数据库设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科学生综合性实验报告课程名称:数据库系统原理实验项目名称 微博系统数据库设计开课学期2011至2012学年第一学期完成时间2012年1月4日1-1-II需求分析 11.1背景说明 1系统目标与系统边界 1功能需求分析 1系统的功能描述 1系统总体功能图 51.3.3主要业务流程描述 7 1.4数据需求及业务规则分析 9 1.4.1数据需求描述 9 1.4.2数据字典 9业务规则描述 13 1.4.4数据约束描述 14概念设计 15确定实体集及属性 152.1.1实体集分析 15 2.1.2实体集属性数据字典 162.2确定联系集及属性 192.2.1联系集分析 19 2.2.2联系集属性数据字典 20概念模型(E-R图) 212.4检查是否满足需求 错误!未定义书签。 2.5改进的E-R图及数据字典 错误!未定义书签。3逻辑设计 28关系设计 283.2关系优化 34约束的说明 35 4数据库物理设计 错误!未定义书签。 4.1确定数据库的存储结构 错误!未定义书签。 4.2确定数据库的存取方法 错误!未定义书签。 5数据库应用设计 35 5.1数据库脚本 35 5.2数据库完整性设计 47 5.3数据库安全性设计 错误!未定义书签。5.4存储过程设计 48 6数据库应用开发 错误!未定义书签。微博数据库设计1需求分析1.1背景说明微博,即微博客(MicroBlog)的简称,是一个基于用户关系的信息分享、传播以及获取平台,用户可以通过WEB、WAP以及各种客户端组件个人社区,以140字左右的文字更新信息,并实现即时分享。最早也是最著名的微博是美国的twitter,根据相关公开数据,截至2010年1月份,该产品在全球已经拥有7500万注册用户。2009年8月份中国最大的门户网站新浪网推出“新浪微博”内测版,成为门户网站中第一家提供微博服务的网站,微博正式进入中文上网主流人群视野,成为网民不可缺少的一部分。1.2系统目标与系统边界微博广泛分布在桌面、浏览器、移动终端等多个平台上。它十分简单,在微博客上,不像博客,只有140字的限制将平民和莎士比亚拉到了同一水平线上。导致各种微博大量原创内容爆发性地被生产出来。它也十分便捷,微博即时通讯功能非常强大,在没有网络的地方,只要有手机也可即时更新自己的内容,哪怕你就在事发现场。实时性强,在一些大的突发事件或引起全球关注的大事,如果有微博客在场,利用各种手段在微博客上发表出来,其实时性、现场感以及快捷性,甚至超过所有媒体。也正因为如此,微博以迅雷不及掩耳之势席卷了整个互联网。然而,面对着成千上万的用户,上亿的消息等等相关数据,如此海量的数据。如何存储才能高效处理便成为微博系统架构师的一大难题。也只有设计了良好的微博数据库,才能使前台,中间件的开发事半功倍,使用户体验更好,获得用户的青睐,从而吸引更多用户,为此,我们对微博系统的数据库进行深入的需求分析与设计,并尽可能的提高微博数据库的性能。在本微博系统中,用户可发表(可发送私信,功能类似于E-MAIL),转发,评论,收藏消息(其中消息可包括图片,音乐,视频链接地址),随时看到被关注者的最新动态。创建,加入,发表,评论微群消息。创建消息,微群话题,参与话题讨论,以及把系统一些建议反馈问题给系统。系统首要任务是如何对用户,消息联系之中的数据进行高效处理,并尽可能提高数据库的性能。1.3功能需求分析1.3.1系统的功能描述一、 消息管理用户消息管理-2--2- 微博数据库设计 •发表消息 用户可以随时发表140个字左右的消息,其中可包括音乐,图片,视频,此处除图片外均为链 接地址,而图片只可为相册中图片,发表的消息只有用户本身与关注此用户的人可以立即收到,否则须查询到相应用户才能看到该用户发表的消息。 •删除消息 用户对发表过的消息,觉得不满或不适当的,可删除,只有用户或系统管理员本身有此权限。 •评论消息 用户可对其它用户发表的消息进行评论,每条消息均会显示评论条数与评论内容。 •删除评论 用户对自己不满意或其它原因的评论可删除。 •转发消息 用户可以转发关注者所发表的消息,转发后,每条消息转发次数均会显示。 •查看消息 用户可以在当前页面查看到被自己关注者的所有消息,按时间排序。 •收藏消息 用户可对其它用户发表的感兴趣的消息收藏,供以后查看,每条消息下均会显示收藏次数, 显然,私信不可收藏。用户私信管理 •发送私信 用户可以对自己的关注的人,即被关注者,发送私信,只有对方可见。可加入图片,表情, 图片元素,对方收到后,亦可回信.仅两人可见。 •查看私信 私信仅可在同一微博系统中进行发送并在用户“我的私信”中可查看所有发送和收到的私信。 •回复私信 用户收到对方…-即关注者发私信时,可直接回复对方。•删除私信 用户可以在“我的私信”中直接删除私信。微群消息管理 •发表群消息 用户可以随时发表140个字左右的消息,其中可包括音乐,图片,视频,此处除图片外均为链接地址,而图片只可为相册中图片,发表的消息只有用户本身与关注此用户的人可以立即收到,否则须查询到相应用户才能看到该用户发表的消息。•评论群消息 用户可对其它用户发表的群消息进行评论,每条消息均会显示评论条数与评论内容。 •删除群评论 用户对自己不满意或其它原因的评论可删除。 •转发消息 用户可以转发关注者所发表的消息,转发后,每条消息转发次数均会显示。 •查看消息 用户可以在当前页面查看到被自己关注者的所有消息,按时间排序。话题管理 用户可以把消息发表至某一话题下。用户也可查看当前热门话题,并参与之。也可以创建话题。话题中的消息与用户消息管理是完全一样的,只是话题细化了整个微博的消息,使用户能对某一话题进行交流,针对性强。微群话题管理 在微群中亦可创建话题,其功能与一般话题一样,话题消息限在群中,是对群中消息的细化,使群中微博数据库设计微博数据库设计--#-评论实体集:评论微群实体集:关注组实体集:相册实体集:10.皮肤实体集:11.私信实体集:12.话题实体集:•总E—R图:2.第2部分:消息评论群评论评论群话题消息话题发表时间消息3逻辑设计3.1关系设计注:以下表中,加粗加下划线属性为主码,加粗斜体属性为外码。• 由实体集转化而来的表:1.用户user表:

属性名称数据类型属性说明Uidchar(ll)用户编号Ualaisvarchar(20)用户妮称Uimageimage用户头像Ulogonvarchar(30)邮箱(登陆名)Upassswdvarchar(20)密码Usexchar(1)性别Unamevarchar(20)真实姓名Uskinchar(11)皮肤编号Uqqvarchar(11)QQUschoolChar(11)毕业院校Uworkvarchar(20)职位Utelchar(10)手机号Uinfovarchar(100)自我介绍Udatetimedatetime注册时间Ublogvarchar(50)个人博客2.关注组attenGruop表:属性名称数据类型属性说明UidChar(11用户编号NGidChar(12)关注组编号UiderChar(11)被关注者编号NGDatetimeDatetime创建时间NGnumInt关注组人数NgnameVarchar(20)关注组名称3.院校school表属性名称数据类型属性说明SidChar(11)院校编号SnameVarchar(lO)所在省SproVarchar(lO)所在市ScityVarchar(10)所在县ScountryVarchar(20)院校名称

4.标签label表属性名称数据类型属性说明LidChar(11)标签编号LnameVarchar(10)标签内容5.用户使用标签UserLabel属性名称数据类型属性说明UidChar(11)用户编号Lidchar(11)标签编号6.私信priMessage表:属性名称数据类型属性说明PMidChar(12)私信编号UidChar(11)发送者编号RUidChar(11)接收者编号PMcontentVarchar(200)私信内容PMdatetimedatetime发送时间7.微群group表:属性名称数据类型属性说明GidChar(16)微群编号GnameVarchar(20)微群妮称GadminChar(11)群管理员GidChar(11)微群用户编号GlabelChar(11)微群标签GnumInt用户数GdatetimeDatetime创建时间

8.相册photoFolder表属性名称数据类型属性说明PFidChar(11)相册编号UidChar(11)用户编号PFnameVarchar(20)相册名称PFnumint图片数量PidChar(11)图片编号9.图片photo表:属性名称数据类型属性说明PidChar(11)图片编号PnameVarchar(20)相片名称PhotoVarbinary(5000)图片10.皮肤skin表:属性名称数据类型属性说明SidChar(6)皮肤编号SimageVarbinary(2048)背景图片ScolorChar(9)RGB主题颜色• 由类层次转化而来的表:1.普通消息message表:属性名称数据类型属性说明MidChar(16)消息编号UidChar(11)用户编号TidChar(16)话题编号CidChar(11)转发编号McontentVarchar(150)消息内容

MhttpVarchar(150)链接MfavInt收藏次数MreplyInt评论次数McopyInt转发次数Mdatetimedatetime发表时间2.普通消息话题messageTitle表属性名称数据类型属性说明TidChar(16)话题编号TnumInt消息数量TnameVarchar(20)话题标题TcontentVarchar(1000)话题简介Ttimedatetime发表时间3.普通消息评论messageReply表:属性名称数据类型属性说明RidChar(16)讦论编号MidChar(16)消息编号UidChar(11)用户编号RdatetimeDatetime评论时间RcontentVarchar(200)评论内容4.群消息话题groupTitle表:属性名称数据类型属性说明GTidChar(17)群话题编号TnumInt消息数量TnameVarchar(20)话题标题TcontentVarchar(1000)话题简介Ttimedatetime发表时间

5.微群消息评论gruopReply表属性名称数据类型属性名称GRidChar(17)微群消息评论编号GMidChar(17)群消息编号GidChar(17)群编号UidChar(11)用户编号GRdatetimedatetime评论时间GRcontentVarchar(200)评论内容6.群消息groupMessage表:属性名称数据类型属性说明GMidChar(17)群消息编号GidChar(16)群编号UidChar(11)用户编号GTidChar(17)群话题编号CidChar(11)转发编号McontentVarchar(150)消息内容MhttpVarchar(150)链接MreplyInt评论次数McopyInt转发次数GMdatetimedatetime发表时间•由联系集转化的表:1.收藏fav表:属性名称数据类型属性说明FidChar(11)收藏编号UidChar(11)用户编号MidChar(16)消息编号

2.关注表attention表:属性名称数据类型属性说明UidChar(ll)用户编号attUidChar(ll)被关注者编号3・转发copy表:属性名称数据类型属性说明CidChar(11)转发表编号UidChar(11)用户编号MidChar(16)被转发消息编号CUidChar(11)被转发用户编号3.2关系优化分析发现•微群group表:属性名称数据类型属性说明GidChar(16)微群编号GnameVarchar(20)微群妮称GadminChar(11)群管理员GUidChar(11)微群用户编号GlabelChar(11)微群标签GnumInt用户数GdatetimeDatetime创建时间并不符合BCNF,把group分解得groupMember(Gid,GUid)groupInfo(Gid,Gname,Gnum,Gdatetime)groupMemAdmin(Gid,Gadmin)•关注组attenGruop表:属性名称数据类型属性说明UidChar(11用户编号NGidChar(12)关注组编号UiderChar(11)被关注者编号NGDatetimeDatetime创建时间NGnumInt关注组人数NgnameVarchar(20)关注组名称亦不符合BCNF分解得:attenMember(NGid,uider)userAtten(Uid,NGid)attenInfo(NGid,NGDatetime,NGnum,Nganme)3.3约束的说明关系表中的外码与主码在4.1中定义。需求分析阶段的数据约束在4.2中定义。4数据库应用设计4.1数据库脚本setnocountonsetdateformatymdusemastergoifnotexists(select*fromsysloginswherename='weibouser')execsp_addloginweibouser,weibousergo

ifexists(select*fromsysdatabaseswherename=,weiboDB')dropdatabaseweiboDBgo—创建数据库createdatabaseweiboDB—主数据库onprimary(name=,weiboDBfilename='c:\weibo\hresourcesdb.mdf',size=500,maxsize=500000,filegrowth=1)一数据库日志logon(name=,weiboDBlogfilename='d:\weibo\weiboDB.ldf',size=50,maxsize=5000,filegrowth=1)go/用户user表*/createtableuser(Uidchar(11)notnullprimarykeyUidchar(11)notnullprimarykey--用户编号check(Uidlike'[U][0—9][0—9][0—9][0—9][0—9][0—9][0—9][0-9][0-9][0—9]')Ualaisvarchar(20)notnull一用户妮称Uimageimagenotnull一用户头像Ulogonvarchar(30)notnull--邮箱(登陆名)Ualaisvarchar(20)notnull一用户妮称Uimageimagenotnull一用户头像Ulogonvarchar(30)notnull--邮箱(登陆名)Upassswdvarchar(20)notnull--密码Usexchar(1)notnull—性别Unamevarchar(20)null—真实姓名Uskinchar(11)notnull--皮肤编号Uqqvarchar(11)null--QQUschoolChar(11)null一毕业院校Uworkvarchar(20)null―职位Utelchar(10)null--手机号Uinfovarchar(100)null--自我介绍Udatetimedatetimenotnull一注册时间Ublogvarchar(50)null一个人博客constraintPK1foreignkey(Uskin)referencesskin(Sid),constraintPK2foreignkey(Uschool)referencesschool(Sid),Go/*attenMember表*/createtableattenMember(NGidChar(12)notnull —关注组编号UiderChar(11)notnull —被关注者编号constraintpKprimarykey(NG,Uider),constraintPK1foreignkey(NGid) referencesattenInfo(NGid),constraintPK1foreignkey(uider)referencesuser(Uid))go/*userAtten表*/

createtableattenGroup(Uid Char(11)notnull notnull—用户编号NGid Char(12)notnull notnull—关注组编号constraintpKprimarykey(Uid,NUid),constraintPK1foreignkey(NGid)referencesattenInfo(NUid))go/*AttenInfo表*/createtableattenGroup(NGidChar(12)notnull primarykey —关注组编号check(NGidlike'[U][G][0—9][0—9][0—9][0—9][0—9][0—9][0—9][0-9][0-9][0-9]')notnull--创建时间notnull--创建时间--关注组人数--关注组名称NGnumInt notnullNgnameVarchar(20)notnull)go/*院校school表*/createtableshcool(SidChar(11) notnullprimarykey--院校编号check(Sidlike'[S][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

SnameVarchar(10)notnull一所在省SproVarchar(10)notnull--所在市ScityVarchar(10)notnull一所在县ScountryVarchar(20)notnull一院校名称)go/*标签label表*/createtablelabel(LidChar(ll)notnullprimarykey--标签编号check(Lidlike'[U][G][0—9][0—9][0—9][0—9][0—9][0—9][0—9][0-9][0-9][0-9]')LnameVarchar(10)notnull--LnameVarchar(10)notnull--标签内容)go/*标签Userlabel表*/createtableUserlabel(Uid char(11) notnull —用户编号Lid char(11) notnull —标签编号constraintFKprimarykey(Uid,Lid),constraintPK1foreignkey(Uid)referencesuser(Uid),constraintFK2foreignkey(Lid)referencesLabel(Lid))go/*私信priMessage表*/createtablepriMessage(

PMidChar(12)notnullprimarykey—私信编号check(PMidlike'[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) notnull --发送者编号RUid Char(11) notnull --接收者编号PMcontentVarchar(200)notnull --私信内容PMdatetimedatetime notnull --发送时间constraintFK1foreignkey(RUid)referencesuser(Uid),constraintFK2foreignkey(Uid)referencesuser(Uid)go/*微群groupMember表*/createtablegroupMemberGidChar(16)notnullprimarykeyGidChar(16)notnullprimarykey--微群编号UidChar(11)notnull--UidChar(11)notnull--微群用户编号GlabelChar(11)notnull--微群标签GnumInt notnullGlabelChar(11)notnull--微群标签GnumInt notnull--用户数constraintFK1foreignkey(uid)referencesuser(Uid),constraintFK1foreignkey(gid)referencesgroupInfo(Gid)go/*微群groupInfo表*/createtablegroupInfo(GidChar(16)notnullprimarykey--微群编号check(Gidlike'[G][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')--微群妮称--微群妮称GdatetimeDatetime notnull —创建时间constraintFK2foreignkey(Glabel)referenceslabel(Lid))go/*微群groupAdmin表*/createtablegroupInfo(GidChar(16)notnullprimarykey一微群编号GadminChar(11)notnull 一群管理员constraintPK1foreignkey(Gadmin)referencesuser(uid),)go/*相册photoFolder表*/createtablephotoFolder(PFidChar(11)notnullprimarykey—相册编号check(PFidlike'[P][0—9][0—9][0—9][0—9][0—9][0—9][0—9][0-9][0-9][0-9]')UidChar(11)notnull--用户编号PFnameVarchar(20)notnull--相册名称PFnumintnotnull--图片数量PidChar(11)notnull--图片编号constraintFK1foreignkey(Uid)referencesuser(Uid))

go/*图片photo表*/createtablephoto(PidChar(ll) notnullprimarykey—图片编号CheckPGidlike'[P][0—9][0—9][0—9][0—9][0—9][0—9][0—9][0-9][0-9][0-9]')Pname Varchar(20) notnull 一相片名称Photo Varbinary(5000)notnull —图片)go/*皮肤skin表*/createtableskin(SidChar(11)primarykey--皮肤编号check(Sidlike'[G][0—9][0—9][0—9][0—9][0—9]')SimageVarbinary(2048) —背景图片ScolorChar(9) --RGB主题颜色go/*普通消息message表*/Createtablemessage(MidChar(16)notnullprimarykey--消息编号check(GidlikeMidChar(16)notnullprimarykey--消息编号check(Gidlike'[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]')UidChar(11)notnull--用户编号TidChar(16)null--话题编号Cid Char(11) null 一转发编号McontentVarchar(150)notnull—消息内容Mhttp Varchar(150)null —链接Mfav Int not null 一收藏次数Mreply Int not null —评论次数Mcopy Int not null 一转发次数Mdatetimedatetime notnull —发表时间constraintFK1foreignkey(uider)referencesuser(Uid),constraintFK2foreignkey(Uid)referencescopy(Cid)constraintFk3foreignkey(Uid)referencesmessageTitle(Tid))go/*普通消息话题messageTitle表*/createtablemessageTitle(TidChar(16)notnullprimarykey--话题编号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 notnull --消息数量Tname Varchar(20)notnull --话题标题TcontentVarchar(1000)notnull--话题简介)go/*普通消息评论messageReply表*/createtablemessageReply(RidChar(16)notnull primarykey--评论编号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) notnull —消息编号Uid Uid(11) notnull 一用户编号RdatetimeDatetime notnull —评论时间RcontentVarchar(200)notnull —评论内容constraintFK1foreignkey(Mid)referencesmessage(Mid),constraintFK2foreignkey(Uid)referencesuser(Uid)go/*群消息话题groupTitle表*/createtablegroupTitle(GTidChar(17)notnullprimarykey--话题编号check(GTidlike'[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]')TnumIntnotnull一消息数量TnameVarchar(20)notnull--话题标题TcontentVarchar(1000)notnull--话题简介go/*微群消息评论groupReply表*/createtablegroupReply(notnullprimarykey--微群消息评论编号notnullprimarykey--微群消息评论编号'[G][R][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]check(GRid like[0-9][0-9][0-9][0-9][0-9]')GMidChar(16)notnull--群消息编号GidChar(16)notnull--群编号UidChar(11)notnull--用户编号GRdatetimedatetimenotnull一评论时间GRcontentVarchar(200)notnull一评论内容constraintFK1foreignkey(GMid)referencesgroupMessage(Uid),constraintconstraintFK2foreignkey(Gid)referencesgroup(Uid)constraintconstraintFK3foreignkey(Uid)referencesuser(Uid)go/*群消息groupMessage表*/createtablegroupMessage(GMidChar(17)notnullprimarykey--群消息编号check(GMidlike'[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]')一发表时间GidChar(16)notnull--群编号UidChar(11)notnull--用户编号GTidChar(16)null--群话题编号CidChar(11)notnull--转发编号McontentVarchar(150) notnull--消息内容MhttpVarchar(150)notnull--链接MreplyIntnotnull--评论次数McopyIntnotnull--转发次数GMdatetimedatetimenotnullgoconstraintconstraintconstraintconstraint/*收藏fav表*/FK1FK2FK3FK4foreignkey(Gid)referencesgroup(Gid),foreignkey(Uid)referencesuser(Uid)foreignkey(uider)referencesGroupTitle(GTid),foreignkey(Cid)referencesCopy(cid)createtablefav(FidChar(11)notnullprimarykey—收藏编号check(Fidlike'[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) notnull --用户编号Mid Char(16) notnull --消息编号constraintFK1foreignkey(Uid)referencesuser(Uid),constraintFK2foreignkey(Mid)referencesmessage(Uid))go/*关注attention表*/createtableattention(Uid Char(11) notnull --用户编号attUidChar(11) notnull --被关注者编号constraintpKprimarykey(Uid,attUid),constraintFK1foreignkey(Uid)referencesuser(Uid),constraintFK2foreignkey(Mid)referencesmessage(Uid))go/*转发copy表*/createtablecopy(CidChar(11)notnullprimarykey--转发表编号check(Fidlike'[C][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')UidChar(11)notnull—用户编号MidChar(16)notnull一被转发消息编号CUidChar(11)notnull一被转发用户编号referencesMessage(Mid),referencesuser(Uid),constraintFK1foreignkey(Mid)constraintFK2foreignkey(Uid)constraintFK2foreignkey(CUid)referencesuser(Uid)goreferencesMessage(Mid),referencesuser(U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论