zoukankan      html  css  js  c++  java
  • [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         default  getdate()              NOT NULL , --创建时间
     95   ReType           int              default  1                      NOT NULL , --回复消息类型1为文本
     96 );
     97 
     98 
     99 if exists ( select *  from  sysobjects where name = 'tb_KeyContent' and xtype='U') 
    100 drop table tb_KeyContent
    101 create table  tb_KeyContent------------------------------------------------------关键字返回内容表
    102 (
    103   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
    104   Title            varchar(150)     default ''                      NOT NULL , --标题
    105   Content          varchar(700)     default ''                      NOT NULL , --内容
    106   KeyId            int              default  0                      NOT NULL , --关键字ID
    107   Type             int              default  1                      NOT NULL , --类型-文本图文等
    108   MinImg           varchar(250)     default ''                      NOT NULL , --图片
    109   ITop             int              default  0                      NOT NULL , --置顶
    110   TopBeginTime     datetime         default  getdate()              NOT NULL , --置顶开始时间
    111   TopEndTime       datetime         default  getdate()              NOT NULL , --置顶结束时间
    112   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
    113   State            int              default  1                      NOT NULL , --状态
    114   Href             varchar(250)     default  '#'                    NOT NULL , --图文时点开的链接
    115 );
    116 
    117 
    118 if exists ( select *  from  sysobjects where name = 'tb_UserMsg' and xtype='U') 
    119 drop table tb_UserMsg
    120 create table  tb_UserMsg---------------------------------------------------------用户消息记录表
    121 (
    122   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
    123   MsgType          int              default  1                      NOT NULL , --消息类型文本、事件
    124   EventId          int              default  1                      NOT NULL , --事件ID//自定义菜单的ID
    125   Content          varchar(700)     default ''                      NOT NULL , --消息内容
    126   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
    127   State            int              default  1                      NOT NULL , --状态
    128   ReState          int              default  0                      NOT NULL , --回复状态
    129   WeiMsgId         varchar(50)      default ''                      NOT NULL , --微信消息ID
    130   UserId           int              default  0                      NOT NULL , --用户表主键
    131 );
    132 
    133 
    134 if exists ( select *  from  sysobjects where name = 'tb_245' and xtype='U') 
    135 drop table tb_245
    136 create table  tb_245-------------------------------------------------------------回复消息表
    137 (
    138   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
    139   UserId           int              default  0                      NOT NULL , --用户表主键
    140   MsgID            int              default  0                      NOT NULL , --消息表主键
    141   ReType           int              default  1                      NOT NULL , --回复类型//文本图文
    142   ReFrom           int              default  1                      NOT NULL , --回复点//1文章2关键词
    143   ReContentId      varchar(80)      default  '0,'                   NOT NULL , --回复的内容ID串
    144   CreateTime       datetime         default  getdate()              NOT NULL , --回复记录时间
    145 );
    146 
    147 
    148 if exists ( select *  from  sysobjects where name = 'tb_PersonalMenu' and xtype='U') 
    149 drop table tb_PersonalMenu
    150 create table  tb_PersonalMenu----------------------------------------------------自定义菜单表
    151 (
    152   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
    153   Name             varchar(50)      default ''                      NOT NULL , --名称
    154   Type             int              default  1                      NOT NULL , --类型1click2view
    155   ParentId         int              default  0                      NOT NULL , --父级ID
    156   IndexLevel       int              default  1                      NOT NULL , --当前级别
    157   LinkUrl          varchar(350)     default  '#'                    NOT NULL , --链接地址view时用
    158   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
    159   POrder           int              default  99                     NOT NULL , --排序
    160   State            int              default  1                      NOT NULL , --状态
    161   Note             varchar(150)     default ''                      NOT NULL , --备注
    162 );
    View Code

        第一步数据库设计就到这里结束了, 后续开始项目的代码旅程...

    新建的QQ群,技术交流,有其他任何技术方面的讨论都可以进群:群号183695596 微信公众平台开发MVC版本demo下载 群号183695596 微信客户端调试工具下载 群号183695596 微信公众平台开发webform版本demo下载
  • 相关阅读:
    UITableView全面解析
    UITableView传值(自己使用)(属性,代理传值)
    页面之间传值(单例传值)(自己使用)
    带导航栏的最简单多视图
    UIscrollView和UIPageControl的循环滚动
    UIPickerView简单应用
    自定义进度条(菜鸟版)
    UISegmentedControl(人物简介)
    UI控件闪灯
    关于NSCELL
  • 原文地址:https://www.cnblogs.com/mochen/p/3645372.html
Copyright © 2011-2022 走看看