[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

 

    第一步數據庫設計就到這里結束了, 后續開始項目的代碼旅程...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM