日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

聊天室——MYSQL建表

發布時間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊天室——MYSQL建表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 1. 用戶數據表——UserData
  • 2. 好友列表——FriendsList
  • 3. 未讀消息列表——OffLineMes
  • 4. 群成員列表——GroupList


前言

在進行聊天室項目以前,我從來沒有接觸過mysql,但是mysql在聊天室的開發過程中起到了非常重要的作用;我們許多功能的實現都需要依靠數據庫,畢竟我們的server不可能一直運行,有時一個功能實現的關鍵就在于數據表。
聊天室的建表我也是根據整體服務器的架構來進行


首先我們需要把每一個用戶的基礎信息記錄下來,

1. 用戶數據表——UserData


在聊天之前,我們需要先有好友列表,

2. 好友列表——FriendsList

關于好友列表,我們可以給每一個用戶創建一個數據表,這個表的名字為這個用戶的用戶名"username"

其中的username表示好友或群的id,第二列的num表示有一些額外的含義,借助num可以幫助我們完成許多的其他的功能。
比如:0 代表被屏蔽消息的好友, 1 代表普通的好友, 2 代表這是一個群…

但是這種建表方法有一個很大的缺點,當注冊的用戶量很多的時候我們的數據庫會變得很丑陋,那么為了避免這種情況,我們就需要修改建表的方式以及存儲的思路。

通過這樣的建表方式可以把互為好友關系的兩個用戶放到一行里,避免了每一個用戶建一個表,第三列的type欄里依舊可以通過不同的數字來表示不同的屬性。在檢索好友列表時可以使用這樣的語法:

select * from FriendsList where usera = "username" or userb = "username";

其他各種功能也可以依靠這個表來實現

3. 未讀消息列表——OffLineMes

當好友列表已經創建好的時候,就可以輸入好友的用戶名開始聊天了。那么在聊天中,聊天記錄的存儲就需要一個數據表來記錄,

如果對方處于離線狀態的話,我們未被接收的消息應該存儲到一個單獨的表里,

在處理完這條未讀消息之后,我們應該及時的將這條消息刪除

4. 群成員列表——GroupList

與好友列表一樣,我們可以為每一個群聊建一個數據表,用存放這個群的群成員。


這是最為直觀的一種建表方式,我們可以很清晰的知道這個群組里都有哪些成員。但是數據庫是用來存儲數據的,而不會給用戶去看,所以在數據量較小時,我們沒有必要去考慮數據庫復雜度的問題。而且與好友列表一樣,當創建群聊的人數越來越多之后,整個數據庫會變得非常的難看。


同樣,第三列數據表示該username在groupname里的職位。
這樣建表不僅數據庫會變得很整潔,在實現一些后續功能時也會容易很多,而不用在各個數據表之間嵌套查詢。


關于C語言操作MYSQL可以參考我的這篇博客:
https://blog.csdn.net/qq_51665789/article/details/119350338?spm=1001.2014.3001.5501

總結

以上是生活随笔為你收集整理的聊天室——MYSQL建表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。