ホームページ >WeChat アプレット >WeChatの開発 >WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

高洛峰
高洛峰オリジナル
2017-02-14 11:54:592204ブラウズ

WeChat パブリック プラットフォームを開発する前に、まず WeChat 公式 Web サイトにアクセスして一般的な状況を理解してください: http://mp.weixin.qq.com/wiki/index.php を読んだ後、概要がわかります。データベースの設計を開始し、考慮されていない考慮事項は後で追加されるように最善を尽くしてください。

1. まずユーザー部分です。WeChat の公式インターフェースと実際のアプリケーションによると、ユーザー部分にはユーザー テーブル、ユーザー情報テーブル、ユーザー グループ化テーブルの 3 つのテーブルがあります:

WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

2.ユーザーのデザイン その後は、記事分類テーブル、記事テーブルを含む記事部分です。デザインは次のとおりです。

WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

3. ユーザー関連のテーブルを使用して、ユーザーを保存できます。記事モジュールを使用すると、ユーザーが入力した情報に基づいて記事を返すことができます (テキスト、グラフィック、写真、音楽、ビデオ、音声などを返します)。しかし、実際のアプリケーションでは、特定のキーワードを指定する必要があります。ここのコンテンツ テーブルは、上記の記事テーブルと重複しているように見えますが、これは、specified によって指定された返信コンテンツです。返されるテキスト、グラフィックス、またはその他のマルチメディア情報を指定できます。マルチメディア情報が返される場合、上記の記事テーブルは、ユーザーのクエリに対する標準の一般的な記事コンテンツ テーブルです。ほとんどの場合、グラフィック情報が直接返され、グラフィック情報がリンクをクリックすると、この記事に対応する表示アドレスがマイクロサイトに相当するため、記事とこのキーワードの目次を別々に管理する方が便利です。 デザインは次のとおりです:

WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

4. メッセージの記録。たとえば、同じキーワードが後で送信されたときに、ユーザーが送信した最後のイベント メッセージに基づいて、メッセージを記録します。ユーザーがメッセージを送信するたびに対応するメニュー オプションを選択するのではなく、対応するメニューに戻り、記録された情報などに基づいてパーソナライズされたサービスを提供します。 ユーザーが送信したメッセージの記録テーブルと、ユーザーに返信されたメッセージの記録テーブルが含まれます。これにより、ユーザーとの会話を完全に復元できます。具体的にはどのようなプロセスです。ユーザーが送信したメッセージは返す必要がありますか? メッセージはプロジェクト コードでビジネスによって決定されます。 デザインは次のとおりです:

WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

5. カスタム メニュー、WeChat パブリック プラットフォームでカスタム メニューを作成および管理します。デザインは次のとおりです。

WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

6. その他、実際のプロジェクトに従って特別に設計されています。ユーザー分析、訪問ユーザーポイントなど、ここでは設計されていません。

キーワード モジュールの応答メッセージ タイプやメッセージ レコードのメッセージ タイプなど、上記の設計の一部はデータベースに組み込まれていません。これらの単一オプション形式の少量のデータは固定されています (Tencent によって決定されます)。 ) データベースを設計せずに、他の方法を使用して特定のプロジェクト (固定静的、構成ファイル、キャッシュなど) に実装します。

完全なデザインは次のとおりです: (スクリーンショットの便宜上、カバーする各モジュールのテーブルをドラッグしました)

WeChatパブリックプラットフォームのasp.net開発 (1)データベース設計

次のようにスクリプトをダウンロードします: WeChat という名前のデータベースを作成します (データベースの設計時に自分で定義しました) ) データベース内で、スクリプトを実行すれば 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 開発 WeChat パブリック プラットフォーム (1) データベース設計関連記事の詳細については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。