聊天室——MYSQL建表
文章目錄
- 前言
- 1. 用戶數(shù)據(jù)表——UserData
- 2. 好友列表——FriendsList
- 3. 未讀消息列表——OffLineMes
- 4. 群成員列表——GroupList
前言
在進(jìn)行聊天室項(xiàng)目以前,我從來(lái)沒有接觸過mysql,但是mysql在聊天室的開發(fā)過程中起到了非常重要的作用;我們?cè)S多功能的實(shí)現(xiàn)都需要依靠數(shù)據(jù)庫(kù),畢竟我們的server不可能一直運(yùn)行,有時(shí)一個(gè)功能實(shí)現(xiàn)的關(guān)鍵就在于數(shù)據(jù)表。
聊天室的建表我也是根據(jù)整體服務(wù)器的架構(gòu)來(lái)進(jìn)行
首先我們需要把每一個(gè)用戶的基礎(chǔ)信息記錄下來(lái),
1. 用戶數(shù)據(jù)表——UserData
在聊天之前,我們需要先有好友列表,
2. 好友列表——FriendsList
關(guān)于好友列表,我們可以給每一個(gè)用戶創(chuàng)建一個(gè)數(shù)據(jù)表,這個(gè)表的名字為這個(gè)用戶的用戶名"username"
其中的username表示好友或群的id,第二列的num表示有一些額外的含義,借助num可以幫助我們完成許多的其他的功能。
比如:0 代表被屏蔽消息的好友, 1 代表普通的好友, 2 代表這是一個(gè)群…
但是這種建表方法有一個(gè)很大的缺點(diǎn),當(dāng)注冊(cè)的用戶量很多的時(shí)候我們的數(shù)據(jù)庫(kù)會(huì)變得很丑陋,那么為了避免這種情況,我們就需要修改建表的方式以及存儲(chǔ)的思路。
通過這樣的建表方式可以把互為好友關(guān)系的兩個(gè)用戶放到一行里,避免了每一個(gè)用戶建一個(gè)表,第三列的type欄里依舊可以通過不同的數(shù)字來(lái)表示不同的屬性。在檢索好友列表時(shí)可以使用這樣的語(yǔ)法:
其他各種功能也可以依靠這個(gè)表來(lái)實(shí)現(xiàn)
3. 未讀消息列表——OffLineMes
當(dāng)好友列表已經(jīng)創(chuàng)建好的時(shí)候,就可以輸入好友的用戶名開始聊天了。那么在聊天中,聊天記錄的存儲(chǔ)就需要一個(gè)數(shù)據(jù)表來(lái)記錄,
如果對(duì)方處于離線狀態(tài)的話,我們未被接收的消息應(yīng)該存儲(chǔ)到一個(gè)單獨(dú)的表里,
在處理完這條未讀消息之后,我們應(yīng)該及時(shí)的將這條消息刪除
4. 群成員列表——GroupList
與好友列表一樣,我們可以為每一個(gè)群聊建一個(gè)數(shù)據(jù)表,用存放這個(gè)群的群成員。
這是最為直觀的一種建表方式,我們可以很清晰的知道這個(gè)群組里都有哪些成員。但是數(shù)據(jù)庫(kù)是用來(lái)存儲(chǔ)數(shù)據(jù)的,而不會(huì)給用戶去看,所以在數(shù)據(jù)量較小時(shí),我們沒有必要去考慮數(shù)據(jù)庫(kù)復(fù)雜度的問題。而且與好友列表一樣,當(dāng)創(chuàng)建群聊的人數(shù)越來(lái)越多之后,整個(gè)數(shù)據(jù)庫(kù)會(huì)變得非常的難看。
同樣,第三列數(shù)據(jù)表示該username在groupname里的職位。
這樣建表不僅數(shù)據(jù)庫(kù)會(huì)變得很整潔,在實(shí)現(xiàn)一些后續(xù)功能時(shí)也會(huì)容易很多,而不用在各個(gè)數(shù)據(jù)表之間嵌套查詢。
關(guān)于C語(yǔ)言操作MYSQL可以參考我的這篇博客:
https://blog.csdn.net/qq_51665789/article/details/119350338?spm=1001.2014.3001.5501
總結(jié)
以上是生活随笔為你收集整理的聊天室——MYSQL建表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机软件编程应聘ppt,计算机软件技术
- 下一篇: mysql 时间加五分钟_mysql当前