在開發微信公眾平台之前,先去微信官方了解下大概的情況這裡:http://mp.weixin.qq.com/wiki/index.php ;看了之後心裡大致有數了,開始設計資料庫,盡可能的考慮,未考慮到的,以後再補充。
1、首先是使用者部分,依照微信官方的介面結合實際運用,使用者部分有3個表格:使用者表、使用者資料表、使用者分組表,我設計的如下:
2、使用者設計好之後就是文章部分,包括:文章分類表、文章表, 設計如下:
3、有了用戶相關的表我們可以保存用戶,有了文章模組的表我們可以根據用戶輸入的信息查詢文章進行回傳(傳回文字、圖文、圖片、音樂、影片、語音等等),但實際運用中,我們存在需要指定特定的關鍵字傳回特定的內容的情況,那麼就需要專門的特定關鍵字模組, 包含:關鍵字表、關鍵字返回的內容表, 這裡的內容表看著像是與上面的文章表有重合,實則不然, 這裡是特定關鍵字指定的回复內容,可以指定返回文本、圖文或其他多媒體訊息,當返回多媒體訊息時內容中存入文件地址, 上面的文章表是標準的通用的文章內容表, 供用戶查詢多數情況下直接返回圖文信息,且圖文信息點擊鏈接時就是這篇文章對應的展示地址, 相當於一個微網站, 所以文章和這個關鍵字的內容表分開設計更方便管理。 設計如下:
4、訊息記錄, 把用戶發送的訊息進行記錄,方便後續處理, 例如根據用戶上次發出的事件訊息,之後再發同一個關鍵字時,回到對應選單下的內容,而不用用戶每次發送訊息都帶著對應的選單選項;客服訊息根據記錄的資訊做個人化的服務等等。 包括:用戶發送的消息記錄表、回覆給用戶的消息記錄表 ,有了這些可以完整的還原和用戶的對話,這裡是記錄和用戶交流的過程,具體用戶發來的消息需要返回什麼樣的訊息,由專案程式碼中業務決定。 設計如下:
5、自訂選單,創建和管理微信公眾平台中的自訂選單,設計如下:
6、其他, 、存取統計; 使用者積分; 二維碼相關等等, 此處先不設計。
以上設計中,有些是沒有設計到資料庫的, 例如關鍵字模組中的回覆訊息類型、訊息記錄中的訊息類型, 這些固定不變(由騰訊決定)的少量的單一選項形式的數據,我們在具體項目中使用其他方法來實現(固定靜態、設定檔、快取等),無需設計資料庫。
完整設計如下:(為了方便截圖,我把各個模組的表格拖曳覆蓋了)
下載腳本,如下:在資料庫中建立一個名為微信(設計資料庫時自己定義的)的資料庫,腳本執行一下就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中文網!