搜索
首页微信小程序微信开发asp.net开发微信公众平台(1)数据库设计

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

use  weixin -------微信公众平台
if exists ( select *  from  sysobjects where name = 'tb_User' and xtype='U') 
drop table tb_User
create table  tb_User------------------------------------------------------------用户表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  InId             int              default  0                      NOT NULL , --自有系统的用户ID
  OpenId           varchar(150)     default ''                      NOT NULL , --微信openid
  Group            int              default  0                      NOT NULL , --分组ID
  NickName         varchar(50)      default ''                      NOT NULL , --昵称-微信
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  State            int              default  1                      NOT NULL , --状态-1为正常
  PreFirst         varchar(150)     default ''                      NOT NULL , --预留字段1
);


if exists ( select *  from  sysobjects where name = 'tb_Group' and xtype='U') 
drop table tb_Group
create table  tb_Group-----------------------------------------------------------分组表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  Name             varchar(50)      default ''                      NOT NULL , --名称-本地
  WeiId            int              default  0                      NOT NULL , --对应微信分组ID
  WeiName          varchar(50)      default ''                      NOT NULL , --微信分组名
  Note             varchar(100)     default ''                      NOT NULL , --备注
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  State            int              default  1                      NOT NULL , --状态
);


if exists ( select *  from  sysobjects where name = 'tb_UserData' and xtype='U') 
drop table tb_UserData
create table  tb_UserData--------------------------------------------------------用户资料表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  UserId           int              default  0                      NOT NULL , --用户表主键
  Sex              int              default  0                      NOT NULL , --性别0未知1男2女
  City             varchar(20)      default ''                      NOT NULL , --城市
  Country          varchar(30)      default ''                      NOT NULL , --国家
  Province         varchar(20)      default ''                      NOT NULL , --省份
  Language         varchar(15)      default ''                      NOT NULL , --语言
  HeadImgUrl       varchar(250)     default ''                      NOT NULL , --用户头像
  SubTime          varchar(50)      default ''                      NOT NULL , --最后次关注时间戳
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  State            int              default  1                      NOT NULL , --状态
  PreFirst         varchar(150)     default ''                      NOT NULL , --预留1
);


if exists ( select *  from  sysobjects where name = 'tb_Article' and xtype='U') 
drop table tb_Article
create table  tb_Article---------------------------------------------------------文章表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  SortId           int              default  0                      NOT NULL , --类别ID
  ITop             int              default  0                      NOT NULL , --置顶0不1是
  TopBeginTime     datetime         default  getdate()              NOT NULL , --置顶开始时间
  TopEndTime       datetime         default  getdate()              NOT NULL , --置顶结束时间
  Title            varchar(100)     default ''                      NOT NULL , --标题
  KeyWorld         varchar(150)     default ''                      NOT NULL , --关键字
  Summary          varchar(680)     default ''                      NOT NULL , --简介//680为微信文字上限左右
  Content          ntext            default ''                      NOT NULL , --内容
  Source           varchar(50)      default  '独家原创'                 NOT NULL , --来源
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  PublishTime      datetime         default  getdate()              NOT NULL , --发布时间
  AOrder           int              default  99                     NOT NULL , --排序
  State            int              default  1                      NOT NULL , --状态
  MinImg           varchar(350)     default ''                      NOT NULL , --缩略图
);


if exists ( select *  from  sysobjects where name = 'tb_ArtSort' and xtype='U') 
drop table tb_ArtSort
create table  tb_ArtSort---------------------------------------------------------文章分类表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  Name             varchar(50)      default ''                      NOT NULL , --名称
  ParentId         int              default  0                      NOT NULL , --父级ID
  IndexLevel       int              default  1                      NOT NULL , --当前级别
  SOrder           int              default  99                     NOT NULL , --排序
  State            int              default  1                      NOT NULL , --状态
  Note             varchar(150)     default ''                      NOT NULL , --备注
);


if exists ( select *  from  sysobjects where name = 'tb_KeyWord' and xtype='U') 
drop table tb_KeyWord
create table  tb_KeyWord---------------------------------------------------------关键字表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  Name             varchar(50)      default ''                      NOT NULL , --名称
  Note             varchar(250)     default ''                      NOT NULL , --备注
  State            int              default  1                      NOT NULL , --状态
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  ReType           int              default  1                      NOT NULL , --回复消息类型1为文本
);


if exists ( select *  from  sysobjects where name = 'tb_KeyContent' and xtype='U') 
drop table tb_KeyContent
create table  tb_KeyContent------------------------------------------------------关键字返回内容表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  Title            varchar(150)     default ''                      NOT NULL , --标题
  Content          varchar(700)     default ''                      NOT NULL , --内容
  KeyId            int              default  0                      NOT NULL , --关键字ID
  Type             int              default  1                      NOT NULL , --类型-文本图文等
  MinImg           varchar(250)     default ''                      NOT NULL , --图片
  ITop             int              default  0                      NOT NULL , --置顶
  TopBeginTime     datetime         default  getdate()              NOT NULL , --置顶开始时间
  TopEndTime       datetime         default  getdate()              NOT NULL , --置顶结束时间
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  State            int              default  1                      NOT NULL , --状态
  Href             varchar(250)     default  '#'                    NOT NULL , --图文时点开的链接
);


if exists ( select *  from  sysobjects where name = 'tb_UserMsg' and xtype='U') 
drop table tb_UserMsg
create table  tb_UserMsg---------------------------------------------------------用户消息记录表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  MsgType          int              default  1                      NOT NULL , --消息类型文本、事件
  EventId          int              default  1                      NOT NULL , --事件ID//自定义菜单的ID
  Content          varchar(700)     default ''                      NOT NULL , --消息内容
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  State            int              default  1                      NOT NULL , --状态
  ReState          int              default  0                      NOT NULL , --回复状态
  WeiMsgId         varchar(50)      default ''                      NOT NULL , --微信消息ID
  UserId           int              default  0                      NOT NULL , --用户表主键
);


if exists ( select *  from  sysobjects where name = 'tb_245' and xtype='U') 
drop table tb_245
create table  tb_245-------------------------------------------------------------回复消息表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  UserId           int              default  0                      NOT NULL , --用户表主键
  MsgID            int              default  0                      NOT NULL , --消息表主键
  ReType           int              default  1                      NOT NULL , --回复类型//文本图文
  ReFrom           int              default  1                      NOT NULL , --回复点//1文章2关键词
  ReContentId      varchar(80)      default  '0,'                   NOT NULL , --回复的内容ID串
  CreateTime       datetime         default  getdate()              NOT NULL , --回复记录时间
);


if exists ( select *  from  sysobjects where name = 'tb_PersonalMenu' and xtype='U') 
drop table tb_PersonalMenu
create table  tb_PersonalMenu----------------------------------------------------自定义菜单表
(
  ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  Name             varchar(50)      default ''                      NOT NULL , --名称
  Type             int              default  1                      NOT NULL , --类型1click2view
  ParentId         int              default  0                      NOT NULL , --父级ID
  IndexLevel       int              default  1                      NOT NULL , --当前级别
  LinkUrl          varchar(350)     default  '#'                    NOT NULL , --链接地址view时用
  CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
  POrder           int              default  99                     NOT NULL , --排序
  State            int              default  1                      NOT NULL , --状态
  Note             varchar(150)     default ''                      NOT NULL , --备注
);

更多asp.net开发微信公众平台(1)数据库设计相关文章请关注PHP中文网!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。