首頁  >  文章  >  微信小程式  >  asp.net開發微信公眾平台(1)資料庫設計

asp.net開發微信公眾平台(1)資料庫設計

高洛峰
高洛峰原創
2017-02-14 11:54:592162瀏覽

    在開發微信公眾平台之前,先去微信官方了解下大概的情況這裡: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