用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

免费源代码下载整理    -  云代码空间

—— 每天更新整理各种PHP、JSP、ASP源代码,敬请关注我的微博 http://weibo.com/freecodedownload

数据库系统原理课程设计报告——微博系统数据库设计

2013-10-29|10829阅||

摘要:        本科学生综合性实验报告   课程名称:数据库系统原理     实验项目名称   微博系统数据库设计      开课学期  2011 至 201

 

 

 

 

本科学生综合性实验报告

 

课程名称:数据库系统原理

 

 

实验项目名称   微博系统数据库设计     

开课学期  2011 2012 学年 第一学期 

  完成时间  2012    1      4    

 

 

 


  

 

 TOC \o "1-3" \u 需求分析.................................................................. 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

概念设计................................................................. 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

逻辑设计................................................................. 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

数据库应用设计........................................................... 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

 


1  需求分析

1.1  背景说明

微博,即微博客(MicroBlog)的简称,是一个基于用户关系的信息分享、传播以及获取平台,用户可以通过WEB、WAP以及各种客户端组件个人社区,以140字左右的文字更新信息,并实现即时分享。最早也是最著名的微博是美国的twitter,根据相关公开数据,截至20101月份,该产品在全球已经拥有7500万注册用户。20098月份中国最大的门户网站新浪网推出新浪微博内测版,成为门户网站中第一家提供微博服务的网站,微博正式进入中文上网主流人群视野,成为网民不可缺少的一部分。

 

1.2  系统目标与系统边界

 微博广泛分布在桌面、浏览器、移动终端等多个平台上。它十分简单,在微博客上,不像博客,只有140字的限制将平民和莎士比亚拉到了同一水平线上。导致各种微博大量原创内容爆发性地被生产出来。它也十分便捷,微博即时通讯功能非常强大,在没有网络的地方,只要有手机也可即时更新自己的内容,哪怕你就在事发现场。实时性强,在一些大的突发事件或引起全球关注的大事,如果有微博客在场,利用各种手段在微博客上发表出来,其实时性、现场感以及快捷性,甚至超过所有媒体。也正因为如此,微博以迅雷不及掩耳之势席卷了整个互联网。然而,面对着成千上万的用户,上亿的消息等等相关数据,如此海量的数据。如何存储才能高效处理便成为微博系统架构师的一大难题。也只有设计了良好的微博数据库,才能使前台,中间件的开发事半功倍,使用户体验更好,获得用户的青睐,从而吸引更多用户,为此,我们对微博系统的数据库进行深入的需求分析与设计,并尽可能的提高微博数据库的性能。

在本微博系统中,用户可发表(可发送私信,功能类似于E-MAIL),转发,评论,收藏消息(其中消息可包括图片,音乐,视频链接地址),随时看到被关注者的最新动态。创建,加入,发表,评论微群消息。创建消息,微群话题, 参与话题讨论,以及把系统一些建议反馈问题给系统。系统首要任务是如何对用户,消息联系之中的数据进行高效处理,并尽可能提高数据库的性能。

 

1.3  功能需求分析

1.3.1  系统的功能描述

一、       消息管理

 

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.3.2  系统总体功能图

 

 

1.3.3  主要业务流程描述

Ø         普通用户流程如下图:

注:

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.4  数据需求及业务规则分析

1.4.1  数据需求描述

对系统中的各种事物(对象)以及联系的属性进行描述,可能是基本对象,也可能是业务表格/单据(很多会涉及到多个基本对象之间的联系)。

1.      消息:消息包含消息编号,用户编号,话题编号,发表时间,转发次数,收藏次数,评论次数组成。

2.      私信:私息是消息的派生,增加了被发送者编号。

3.      微群消息:微群消息是消息的派生,增加了群编号。

4.      话题:由消息标题组成。

5.      评论:由消息编号,评论编号,用户编号,评论时间,评论内容组成。

6.      微群:由微群编号,数据项名,微群编号,微群妮称,群管理员,微群用户编,微群标签,用户数,创建时间组成。

7.      群消息评论:评论派生,只增加了群编号。

8.      用户:用户由用户编号,妮称,用户头像,邮箱,性别,密码,真实姓名,皮肤编号,QQ,毕业院校,职位,手机号,自我介绍,用户标签,兴趣,个人博客地址,注册时间组成。

9.      关注组:由关注组编号,被关注组编号,关注名称,创建时间组成。

10.  相册:由用户编号,相册编号,相册名称,图片名称,图片内容,图片创建时间组成。

11.  皮肤:由皮肤编号,背景图片组成,主题颜色组成。

12.  收藏:由用户编号,消息编号组成。

 

1.4.2  数据字典

1.         用户表:

数据项名

取值范围

数据项含义说明

用户编号

U开头加10位数字组成

用户编号,唯一识用户的字段

用户妮称

任意字符

用户在微博中显示的妮称,即用户名。

用户头像

图片类型

用户微博图像

邮箱(登陆名)

符合邮箱规范

用户登陆所用

密码

至少6个可打印字符

用户登陆所用密码

性别

男,女,保密

用户性别

真实姓名

任意可打印字符

用户真实姓名

皮肤编号

S10位数字

用户所用皮肤编号

QQ

610位数字

用户QQ

毕业院校

任意可打印字符

用户毕业院校

职位

任意可打印字符

用户职位

手机号

11位数字

用户手机号码

自我介绍

任意可打印字符

用户一些简要的自我介绍

用户标签

任意可打印字符

用户的兴趣爱好

注册时间

时间

用户注册时间

个人博客

HTTP地址

用户博客地址

 

2.        关注组表:

数据项名

取值范围

数据项含义说明

关注组编号

NG10位数字组成

用户对所关注人可组成组

被关注者编号

同用户编号

同用户编号

创建时间

时间

创建关注组时间

关注组名称

任意可打印字符

创建的关注组名称

 

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表示主题颜色

 

1.4.3  业务规则描述

(1)               所有用户只有注册登陆后才能进入微博查看消息。

(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.4.4  数据约束描述

 

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位数字组成。

 

2  概念设计

2.1  确定实体集及属性

2.1.1  实体集分析

从系统的数据需求描述中,抽取出实体集(可能对应基本对象,也可能对应表格/单据),并对其属性进行描述,根据需求分析可得到如下实体集:

 

1.      用户实体集。其属性有:包括用户编号,妮称,用户头像,邮箱,性别,密码,真实姓名,QQ,职位,手机号,自我介绍,个人博客地址,注册时间, 达人,认证。

2.      院校实体集。其属性有:院校编号,院校名称,所在省,所在市,所在县。

3.      标签实体集。标签编号,标签内容。

4.      消息实体集。派生普通消息与群消息,其属性有:消息编号,消息内容,评论次数,收藏次数,转发次数。

5.      私信实体集。其属性有:私信编号,私信内容。

6.      评论实体集。其属性有:评论编号,评论内容。

7.      微群实体集。其属性有:微群编号,微群妮称,管理员,用户数。

8.      关注组实体集。其属性有:由关注组编号,关注组名称,被关注者人数。

9.      相册实体集。其属性有相册编号,相册名称,图片数量。

10.  图片实体集。其属性有:图片编号,图片名称,图片内容。

11.  皮肤实体集。其属性有:皮肤编号,背景图片,主题颜色。

12.  话题实体集。派生消息话题与群标题。其属性有:话题编号,消息数量,话题简介。

 

2.1.2  实体集属性数据字典

1.         用户表:

 

数名项名

取值范围

数据项含义说明

用户编号

U开头加10位数字组成

用户编号,唯一识用户的字段

用户妮称

任意字符

用户在微博中显示的妮称,即用户名。

用户头像

图片类型

用户微博图像

邮箱(登陆名)

符合邮箱规范

用户登陆所用

密码

至少6个可打印字符

用户登陆所用密码

性别

男,女,保密

用户性别

真实姓名

任意可打印字符

用户真实姓名

QQ

610位数字

用户QQ

职位

任意可打印字符

用户职位

手机号

11位数字

用户手机号码

自我介绍

任意可打印字符

用户一些简要的自我介绍

注册时间

时间

用户注册时间

认证

系统提供,某一领域,如演员,学者

参照标签属性,为在某一领域有影响的专家

达人

参照标签内容

为在某一方面有爱好或专长

个人博客

HTTP地址

用户博客地址

 

2.         院校表:

数据项名

取值范围

数据项含义说明

院校编号

S10位数字组成

院校编号

所在省

中文字符

院校所在省份

所在市

中文字符

院校所在市

所在县

中文字符

院校所在县

院校名称

中文字符

院校名称

 

3.         标签表

数据项名

取值范围

数据项含义说明

标签编号

L10位数字组成

标签编号

标签内容

中文字符

用户标签

 

4.         关注组表:

数据项名

取值范围

数据项含义说明

关注组编号

NG10位数字组成

用户对所关注人可组成组

关注组名称

任意可打印字符

创建的关注组名称

 

5.         消息表:

数据项名

取值范围

数据项含义说明

消息编号

普通消息/群消息编号

用户发表消息编号

消息内容

任意可打印字符

用户发表消息内容

话题

任意可打印字符

用户发表消息所属话题

链接

http链接

用来链接音乐,视频

收藏次数

数值

消息收藏的次数

评论次数

数值

消息评论的次数

转发次数

数值

消息被转发的次数

 

 

6.         用户私信表

数据项名

取值范围

数据项含义说明

私信编号

PM开头加10位数字

用户发送私信编号

私信内容

任意可打印字符

用户发送私信内容

 

 

7.         评论表:

数据项名

取值范围

数据项含义说明

评论编号

消息评论/群消息评论

用户评论

评论内容

任意可打印字符

用户发表评论内容

 

 

8.         微群表:

数据项名

取值范围

数据项含义说明

微群编号

同群编号

同群编号

微群妮称

任意可打印字符

群的显示名称

群管理员

同用户编号

同用户编号

微群标签

同用户标签

同用户标签

用户数

数值

微群中成员数量

 

 

                       

9.         相册表:

数据项名

取值范围

数据项含义说明

相册编号

P开头加10位数字组成

用户相册编号

图片数量

数值

相册中图片个数

相册名称

任意可打印字符

用户相册名字

 

10.     图片表:

数据项名

取值范围

数据项含义说明

图片编号

P开头加10位数字组成

用户上传图片编号

相片名称

任意可打印字符

相片名称

相片内容

图片类型

用户分享的图片

 

11.     皮肤表:

数据项名

取值范围

数据项含义说明

皮肤编号

S开头加5位数字组成

皮肤编号

背景图片

图片类型

同用户编号

主题颜色

9位数字

RGB表示主题颜色

 

12.话题表

数据项名

取值范围

数据项含义说明

话题编号

群话题编号/ 消息话题编号

用户发表消息编号

消息数量

数值

话题包含的消息个数

话题标题

最多不超过20字符

话题的标题

话题简介

任意可打印字符

话题内容简介

 

 

2.2  确定联系集及属性

2.2.1  联系集分析

对各实体集(联系集)之间的联系进行描述,包括联系的映射基数、联系属性等。

1.      用户——用户的关注联系集:多对多联系,一个用户可以关注多个用户,而用户也可以被多个用户关注。

2.      用户——私信的发送联系集:一对多联系,一个用户可以给多个用户发送私信。其属性有:发送时间。

3.      用户——私信的接收联系集:一对多联系,一个用户可以接收多个用户发送的私信。

4.      用户——关注组的创建联系集:一对多联系,一个用户可以创建多个关注组。其属性有:关注组创建时间。

5.      用户——关注组的包含联系集:多对多联系,一个用户可以被关注组包多次,一个关注组也可以包含多个用户。

6.      用户——相册的创建联系集:一对多联系,一个用户可以创建多个相册。其属性有:创建时间。

7.      用户——图片的上传联系集:一对多联系,一个用户可以上传多张照片,其属性有:上传时间。

8.      用户——院校的属于联系集:多对一联系,一个毕业院校可以有多个学生,即用户。

9.      用户——标签的包含联系集:一个用户可以有多个标签描述自己,一个标签也可以被多个用户使用。

10.  相册——图片的包含联系集:一对多联系,一个相册可以包含多个图片。

11.  用户——皮肤的使用联系集:多对一联系,一种皮肤可以被多个用户使用。

12.  用户——群的创建联系集:一对多联系,一个用户可以创建多个群,其属性有:创建时间。

13.  用户——群的包含联系集:多对多联系,一个群可以包含多个用户,一个用户也可以加入多个群。

14.  用户——评论发表联系集:一对多联系,一个群用户可以发表多条群评论,其属性有:评论时间。

15.  用户——消息的发表联系集:一对多联系,一个用户可以发表多条消息,其属性有:发表时间。

16.  用户——消息的收藏联系集:多对多联系,一个用户可以收藏多条消息,一条消息可以被多个用户收藏。

17.  用户——消息的转发联系集:多对多联系,一个用户可以转发多条消息,一条消息可以被多个用户转发。。

18.  消息——评论的包含联系集:一对多联系,一条消息含有多个评论。

19.  消息——话题的包含联系集:多对一联系,一个话题有多个消息。

 

2.2.2  联系集属性数据字典

1.       用户——私信的发送联系集:

数据项名

取值范围

数据项含义说明

发送时间

时间类型

用户发送给关注者私信的时间

 

2.       用户——关注组创建联系集:

数据项名

取值范围

数据项含义说明

创建时间

时间类型

用户创建关注组的时间

      

3.       用户——相册的创建联系集:

数据项名

取值范围

数据项含义说明

创建时间

时间类型

用户创建相册的时间

 

4.       用户——图片的上传联系集:

数据项名

取值范转

数据项含义说明

上传时间

时间类型

用户上传图片的时间

 

5.       用户——群的创建联系集:

数据项名

取值范转

数据项含义说明

创建时间

时间类型

用户上传图片的时间

      

6.       用户——消息的发表联系集:

数据项名

取值范转

数据项含义说明

上传时间

时间类型

用户上传图片的时间

 

7.       用户——评论的发表联系集:

数据项名

取值范转

数据项含义说明

发表时间

时间类型

用户发表评论的时间

 

 

 

2.3         概念模型(E-R

l            实体ER图:

 

1.      用户实体集:

   

2.      消息实体集:

3.      标签实体集:

4.      院校实体集:

5.      评论实体集:

6.      微群实体集:

 

 

7.      关注组实体集:

8.      相册实体集:

9.      图片实体集:

10.  皮肤实体集:

11.  私信实体集:

12.  话题实体集:

 

 

 

l                    ER图:

1.  第一部分:

2.  第2部分:

 

3  逻辑设计

3.1  关系设计

注:以下表中,加粗加下划线属性为主码,加粗斜体属性为外码。

 

l            由实体集转化而来的表:

 

 

1.         用户user:

属性名称

数据类型

属性说明

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)

QQ

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)

被转发用户编号

 

3.2  关系优化

分析发现

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)

 

3.3  约束的说明

l            关系表中的外码与主码在4.1中定义。

l            需求分析阶段的数据约束在4.2中定义。

 

4  数据库应用设计

4.1  数据库脚本

 

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

 

4.2  数据库完整性设计

主要是通过触发器定义一些复杂的数据库完整性要求。在本系统中用的较多的是插入触发器,在数据约束已详细描述。此处给予几个简单实现:

为方便处理首先规定所插入操作一次只允许插入一条记录。

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

4.3         存储过程设计

推存用户类似的可能感兴趣的用户。

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

 

 

 

 

顶 5踩 0收藏
分享到:
更多
文章评论
    发表评论