互動朋友圈數據模型設計

来源:http://www.cnblogs.com/gdsblog/archive/2017/07/25/7234816.html
-Advertisement-
Play Games

互動朋友圈模型設計 根據該模型生出資料庫後的表結構如下: 如有問題,請留言! ...




互動朋友圈模型設計

  1 //引入框架
  2 const Sequelize = require('sequelize');
  3 //創建ORM實例
  4 const sequelize = new Sequelize('friendsdb', 'root', 'guoguo',
  5     {
  6         'dialect': 'mysql',  // 資料庫使用mysql
  7     }
  8 );
  9 //驗證時候連接
 10 sequelize.authenticate().then(()=>{
 11     console.log('==========================');
 12     console.log('連接資料庫成功!');
 13     console.log('==========================');
 14     
 15 }).catch((error)=>{
 16     console.log('==========================');
 17     console.log('連接資料庫失敗!'+error);
 18     console.log('==========================');
 19     
 20 });
 21 //創建賬戶
 22 const Account = sequelize.define('account', {
 23     account: {
 24         type: Sequelize.STRING,
 25         validate: {
 26             notEmpty: true,
 27             isEmail: true,
 28         }
 29     },
 30     pwd: {
 31         type: Sequelize.STRING,
 32         validate: {
 33             notEmpty: true,
 34             len: [6, 18],
 35         },
 36     }
 37 }, {
 38         freezeTableName: true,
 39         paranoid: true,
 40     })
 41 
 42 //創建用戶
 43 const User = sequelize.define('user', {
 44     picUrl: {
 45         type: Sequelize.STRING,
 46         validate: {
 47             notEmpty: true,
 48         }
 49     }
 50 }, {
 51         freezeTableName: true,
 52         paranoid: true,
 53     });
 54 //創建消息
 55 const Message = sequelize.define('message', {
 56     content: {
 57         type: Sequelize.STRING(500),
 58         validate: {
 59             notEmpty: true,
 60         }
 61     }
 62 }, {
 63         freezeTableName: true,
 64         paranoid: true,
 65     });
 66 //創建圖像
 67 const Image = sequelize.define('image', {
 68     picUrl: Sequelize.STRING,
 69 }, {
 70         freezeTableName: true,
 71         paranoid: true,
 72     });
 73 //創建評論
 74 const Comment = sequelize.define('comment', {
 75     content: {
 76         type: Sequelize.STRING(500),
 77         validate: {
 78             notEmpty: true,
 79         }
 80     }
 81 }, {
 82         freezeTableName: true,
 83         paranoid: true,
 84     });
 85 
 86 
 87 //設置中間表()
 88 const Friendship=sequelize.define('friendship',{
 89     id:{
 90         type:Sequelize.INTEGER,
 91         autoincrement:true,
 92         primaryKey:true,
 93     },
 94     
 95 },{
 96     freezeTableName:true,  
 97 });
 98 
 99 //設置關係的時候上級聯
100 //Account.belongsTo(User,{onDelete:'CASCADE',onUpdate:'CASCADE'});
101 User.belongsTo(Account,{onDelete:'CASCADE',onUpdate:'CASCADE'});
102 //用戶和消息的關係
103 User.hasMany(Message,{onDelete:'CASCADE',onUpdate:'CASCADE'});
104 Message.belongsTo(User,{onDelete:'CASCADE',onUpdate:'CASCADE'});
105 //用戶和評論的關係
106 User.hasMany(Comment,{onDelete:'CASCADE',onUpdate:'CASCADE'});
107 Comment.belongsTo(User,{onDelete:'CASCADE',onUpdate:'CASCADE'});
108 //消息和圖片的關係
109 Message.hasMany(Image,{onDelete:'CASCADE',onUpdate:'CASCADE'});
110 //消息和評論的關係
111 Message.hasMany(Comment,{onDelete:'CASCADE',onUpdate:'CASCADE'});
112 //用戶表自身關聯 (關註與被關註)
113 User.belongsToMany(User,{as:'followed',through:Friendship,foreignKey:'followerId',onDelete:'CASCADE',onUpdate:'CASCADE'});
114 User.belongsToMany(User,{as:'follower',through:Friendship,foreignKey:'followedId',onDelete:'CASCADE',onUpdate:'CASCADE'});
115 
116 /**
117  * //刪除資料庫
118     sequelize.drop().then(()=>{
119         console.log('==========================');
120         console.log('刪除成功!');
121         console.log('==========================');
122         
123     });
124  * 
125  */
126  
127     
128 //同步模型與資料庫
129 sequelize.sync();

 


 

 

根據該模型生出資料庫後的表結構如下:

 1 mysql> desc account;
 2 +-----------+--------------+------+-----+---------+----------------+
 3 | Field     | Type         | Null | Key | Default | Extra          |
 4 +-----------+--------------+------+-----+---------+----------------+
 5 | id        | int(11)      | NO   | PRI | NULL    | auto_increment |
 6 | account   | varchar(255) | YES  |     | NULL    |                |
 7 | pwd       | varchar(255) | YES  |     | NULL    |                |
 8 | createdAt | datetime     | NO   |     | NULL    |                |
 9 | updatedAt | datetime     | NO   |     | NULL    |                |
10 | deletedAt | datetime     | YES  |     | NULL    |                |
11 +-----------+--------------+------+-----+---------+----------------+
12 6 rows in set
13 
14 mysql> desc user;
15 +-----------+--------------+------+-----+---------+----------------+
16 | Field     | Type         | Null | Key | Default | Extra          |
17 +-----------+--------------+------+-----+---------+----------------+
18 | id        | int(11)      | NO   | PRI | NULL    | auto_increment |
19 | picUrl    | varchar(255) | YES  |     | NULL    |                |
20 | createdAt | datetime     | NO   |     | NULL    |                |
21 | updatedAt | datetime     | NO   |     | NULL    |                |
22 | deletedAt | datetime     | YES  |     | NULL    |                |
23 | accountId | int(11)      | YES  | MUL | NULL    |                |
24 +-----------+--------------+------+-----+---------+----------------+
25 6 rows in set
26 
27 mysql> desc message;
28 +-----------+--------------+------+-----+---------+----------------+
29 | Field     | Type         | Null | Key | Default | Extra          |
30 +-----------+--------------+------+-----+---------+----------------+
31 | id        | int(11)      | NO   | PRI | NULL    | auto_increment |
32 | content   | varchar(500) | YES  |     | NULL    |                |
33 | createdAt | datetime     | NO   |     | NULL    |                |
34 | updatedAt | datetime     | NO   |     | NULL    |                |
35 | deletedAt | datetime     | YES  |     | NULL    |                |
36 | userId    | int(11)      | YES  | MUL | NULL    |                |
37 +-----------+--------------+------+-----+---------+----------------+
38 6 rows in set
39 
40 mysql> desc comment;
41 +-----------+--------------+------+-----+---------+----------------+
42 | Field     | Type         | Null | Key | Default | Extra          |
43 +-----------+--------------+------+-----+---------+----------------+
44 | id        | int(11)      | NO   | PRI | NULL    | auto_increment |
45 | content   | varchar(500) | YES  |     | NULL    |                |
46 | createdAt | datetime     | NO   |     | NULL    |                |
47 | updatedAt | datetime     | NO   |     | NULL    |                |
48 | deletedAt | datetime     | YES  |     | NULL    |                |
49 | userId    | int(11)      | YES  | MUL | NULL    |                |
50 | messageId | int(11)      | YES  | MUL | NULL    |                |
51 +-----------+--------------+------+-----+---------+----------------+
52 7 rows in set
53 
54 mysql> desc image;
55 +-----------+--------------+------+-----+---------+----------------+
56 | Field     | Type         | Null | Key | Default | Extra          |
57 +-----------+--------------+------+-----+---------+----------------+
58 | id        | int(11)      | NO   | PRI | NULL    | auto_increment |
59 | picUrl    | varchar(255) | YES  |     | NULL    |                |
60 | createdAt | datetime     | NO   |     | NULL    |                |
61 | updatedAt | datetime     | NO   |     | NULL    |                |
62 | deletedAt | datetime     | YES  |     | NULL    |                |
63 | messageId | int(11)      | YES  | MUL | NULL    |                |
64 +-----------+--------------+------+-----+---------+----------------+
65 6 rows in set
66 
67 mysql> desc friendship;
68 +------------+----------+------+-----+---------+-------+
69 | Field      | Type     | Null | Key | Default | Extra |
70 +------------+----------+------+-----+---------+-------+
71 | id         | int(11)  | NO   | PRI | 0       |       |
72 | createdAt  | datetime | NO   |     | NULL    |       |
73 | updatedAt  | datetime | NO   |     | NULL    |       |
74 | followerId | int(11)  | YES  | MUL | NULL    |       |
75 | followedId | int(11)  | YES  | MUL | NULL    |       |
76 +------------+----------+------+-----+---------+-------+
77 5 rows in set

 

如有問題,請留言!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Layout Controls Auto Layout Ext JS4中的容器的預設佈局是自動佈局。這個佈局管理器會自動地將組件放在一個容器中。 Fit Layout Fit佈局安排了容器的內容完全占據空間,它適合於容器的大小。Fit佈局通常用於具有單個項目的容器。Fit佈局是Card佈局的基類 A ...
  • //settime($("#getPhoneCode"),60); function settime($obj, time) { if (time == 0) { $obj.attr("disabled", false); $obj.css("background", "#f38401").css(... ...
  • jquery table 元素操作-創建|數據填充|重置|隱藏行 ...
  • [1]基本用法 [2]多行字元串 [3]變數占位符 [4]標簽模板 [5]raw() ...
  • /* 此文不斷更新中 */ 使用 .col-md-offset-* 類可以將列向右側偏移 ...
  • 倒計時主要用到的知識點:1、設置時間間隔的setInterval可以被clearInterval取消 2、毫秒轉換為時分格式 這個是效果圖 下麵是js中的函數 第二個是html資源,為了方便我css直接寫在html中了 需要代碼的小伙伴可以自行下載 鏈接:http://pan.baidu.com/s ...
  • 【來源】由於自己非電腦出身,所以對於底層的一些常識的認識不夠;近期開始自修《網易雲課堂》的大學四年電腦,碰到了一個通過三角函數計算角度的問題;為了讓自己重溫三角函數知識,引出了之後一些列的實踐和思考,而且最後我用的非三角函數知識; 【思考】對於時鐘這種插件,《慕課網》上有很多講解,也看了一些,怎 ...
  • 一說到數組排序,最直觀的想法就是用sort啊! 請問不用使用sort方法還可以使用什麼方法進行數組排序? 比如 : 快速排序法、合併排序法、冒泡排序法、選擇排序法、插入排序法、布爾排序法、交互排序、選擇排序、二分法排序..... 等等一下,在我們瞭解這些排序方法之前,為了更好的理解,先讓我們探索一下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...