首页 > 编程 > .NET > 正文

[c#]asp.net开发微信公众平台(1)数据库设计

2024-07-21 02:50:30
字体:
来源:转载
供稿:网友
[c#]asp.net开发微信公众平台(1)数据库设计

开发微信公众平台之前,先去微信官方了解下大概的情况 这里:http://mp.weixin.QQ.com/wiki/index.php;看了之后心里大致有数了,开始设计数据库,尽可能的考虑,未考虑到的,以后再补充。

1、首先是用户部分,根据微信官方的接口结合实际运用,用户部分有3个表:用户表、用户资料表、用户分组表,我设计的如下:

2、用户设计好之后就是文章部分,包括:文章分类表、文章表, 设计如下:

3、有了用户相关的表我们可以保存用户,有了文章模块的表我们可以根据用户输入的信息查询文章进行返回(返回文本、图文、图片、音乐、视频、语音等等),但是实际运用中,我们存在需要指定特定的关键字返回特定的内容的情况,那么就需要专门的特定关键字模块, 包括:关键字表、关键字返回的内容表, 这里的内容表看着像是与上面的文章表有重合,实则不然, 这里是特定关键字指定的回复内容,可以指定返回文本、图文或其他多媒体信息,当返回多媒体信息时内容中存入文件地址, 上面的文章表是标准的通用的文章内容表, 供用户查询多数情况下直接返回图文信息,且图文信息点击链接时就是这篇文章对应的展示地址, 相当于一个微网站, 所以文章和这个关键字的内容表分开设计更加方便管理。 设计如下:

4、消息记录, 把用户发来的消息进行记录,方便后续处理, 比如 根据用户上次发来的事件消息,之后再发同一个关键词时,返回对应菜单下的内容,而不用用户每次发送消息都带对应的菜单选项;客服消息根据记录的信息做个性化的服务 等等。 包括:用户发来的消息记录表、回复给用户的消息记录表 ,有了这些可以完整的还原和用户的对话,这里是记录和用户交流的过程,具体用户发来的消息需要返回什么样的消息,由项目代码中业务决定。 设计如下:

5、自定义菜单,创建和管理微信公众平台中的自定义菜单,设计如下:

6、其他, 具体根据做的实际项目来设计, 比如 用户分析、访问统计; 用户积分; 二维码相关 等等 , 此处先不设计。

以上设计中,有一些是没有设计到数据库的, 比如关键字模块中的回复消息类型、消息记录中的消息类型, 这些固定不变(由腾讯决定)的少量的单选项形式的数据,我们在具体项目中使用其他方法来实现(固定静态、配置文件、缓存等),无需设计数据库。

完整设计如下:(为了方便截图 ,我把各个模块的表拖动覆盖了)

下载脚本,如下:在数据库中创建一个名为微信(设计数据库时自己定义的)的数据库,脚本执行一下就OK,

  1 use  weixin -------微信公众平台  2 if exists ( select *  from  sysobjects where name = 'tb_User' and xtype='U')   3 drop table tb_User  4 create table  tb_User------------------------------------------------------------用户表  5 (  6   ID               int              PRimary key identity(1,1)       NOT NULL , --主键-主键  7   InId             int              default  0                      NOT NULL , --自有系统的用户ID  8   OpenId           varchar(150)     default ''                      NOT NULL , --微信openid  9   Group            int              default  0                      NOT NULL , --分组ID 10   NickName         varchar(50)      default ''                      NOT NULL , --昵称-微信 11   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间 12   State            int              default  1                      NOT NULL , --状态-1为正常 13   PreFirst         varchar(150)     default ''                      NOT NULL , --预留字段1 14 ); 15  16  17 if exists ( select *  from  sysobjects where name = 'tb_Group' and xtype='U')  18 drop table tb_Group 19 create table  tb_Group-----------------------------------------------------------分组表 20 ( 21   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键 22   Name             varchar(50)      default ''                      NOT NULL , --名称-本地 23   WeiId            int              default  0                      NOT NULL , --对应微信分组ID 24   WeiName          varchar(50)      default ''                      NOT NULL , --微信分组名 25   Note             varchar(100)     default ''                      NOT NULL , --备注 26   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间 27   State            int              default  1                      NOT NULL , --状态 28 ); 29  30  31 if exists ( select *  from  sysobjects where name = 'tb_UserData' and xtype='U')  32 drop table tb_UserData 33 create table  tb_UserData--------------------------------------------------------用户资料表 34 ( 35   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键 36   UserId           int              default  0                      NOT NULL , --用户表主键 37   Sex              int              default  0                      NOT NULL , --性别0未知1男2女 38   City             varchar(20)      default ''                      NOT NULL , --城市 39   Country          varchar(30)      default ''                      NOT NULL , --国家 40   Province         varchar(20)      default ''                      NOT NULL , --省份 41   Language         varchar(15)      default ''                      NOT NULL , --语言 42   HeadImgUrl       varchar(250)     default ''                      NOT NULL , --用户头像 43   SubTime          varchar(50)      default ''                      NOT NULL , --最后次关注时间戳 44   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间 45   State            int              default  1                      NOT NULL , --状态 46   PreFirst         varchar(150)     default ''                      NOT NULL , --预留1 47 ); 48  49  50 if exists ( select *  from  sysobjects where name = 'tb_Article' and xtype='U')  51 drop table tb_Article 52 create table  tb_Article---------------------------------------------------------文章表 53 ( 54   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键 55   SortId           int              default  0                      NOT NULL , --类别ID 56   ITop             int              default  0                      NOT NULL , --置顶0不1是 57   TopBeginTime     datetime         default  getdate()              NOT NULL , --置顶开始时间 58   TopEndTime       datetime         default  getdate()              NOT NULL , --置顶结束时间 59   Title            varchar(100)     default ''                      NOT NULL , --标题 60   KeyWorld         varchar(150)     default ''                      NOT NULL , --关键字 61   Summary          varchar(680)     default ''                      NOT NULL , --简介//680为微信文字上限左右 62   Content          ntext            default ''                      NOT NULL , --内容 63   Source           varchar(50)      default  '独家原创'                 NOT NULL , --来源 64   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间 65   PublishTime      datetime         default  getdate()              NOT NULL , --发布时间 66   AOrder           int              default  99                     NOT NULL , --排序 67   State            int              default  1                      NOT NULL , --状态 68   MinImg           varchar(350)     default ''                      NOT NULL , --缩略图 69 ); 70  71  72 if exists ( select *  from  sysobjects where name = 'tb_ArtSort' and xtype='U')  73 drop table tb_ArtSort 74 create table  tb_ArtSort---------------------------------------------------------文章分类表 75 ( 76   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键 77   Name             varchar(50)      default ''                      NOT NULL , --名称 78   ParentId         int              default  0                      NOT NULL , --父级ID 79   IndexLevel       int              default  1                      NOT NULL , --当前级别 80   SOrder           int              default  99                     NOT NULL , --排序 81   State            int              default  1                      NOT NULL , --状态 82   Note             varchar(150)     default ''                      NOT NULL , --备注 83 ); 84  85  86 if exists ( select *  from  sysobjects where name = 'tb_KeyWord' and xtype='U')  87 drop table tb_KeyWord 88 create table  tb_KeyWord---------------------------------------------------------关键字表 89 ( 90   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键 91   Name             varchar(50)      default ''                      NOT NULL , --名称 92   Note             varchar(250)     default ''                      NOT NULL , --备注 93   State            int              default  1                      NOT NULL , --状态 94   CreateTime       datetime
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表