聊天室——MYSQL建表


前言

在进行聊天室项目以前,我从来没有接触过mysql,但是mysql在聊天室的开发过程中起到了非常重要的作用;我们许多功能的实现都需要依靠数据库,毕竟我们的server不可能一直运行,有时一个功能实现的关键就在于数据表。
聊天室的建表我也是根据整体服务器的架构来进行


首先我们需要把每一个用户的基础信息记录下来,

1. 用户数据表——UserData

table:UserData
在聊天之前,我们需要先有好友列表,

2. 好友列表——FriendsList

关于好友列表,我们可以给每一个用户创建一个数据表,这个表的名字为这个用户的用户名"username"
table:"username"
其中的username表示好友或群的id,第二列的num表示有一些额外的含义,借助num可以帮助我们完成许多的其他的功能。
比如:0 代表被屏蔽消息的好友, 1 代表普通的好友, 2 代表这是一个群…

但是这种建表方法有一个很大的缺点,当注册的用户量很多的时候我们的数据库会变得很丑陋,那么为了避免这种情况,我们就需要修改建表的方式以及存储的思路。
table:FriendsList
通过这样的建表方式可以把互为好友关系的两个用户放到一行里,避免了每一个用户建一个表,第三列的type栏里依旧可以通过不同的数字来表示不同的属性。在检索好友列表时可以使用这样的语法:

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

其他各种功能也可以依靠这个表来实现

3. 未读消息列表——OffLineMes

当好友列表已经创建好的时候,就可以输入好友的用户名开始聊天了。那么在聊天中,聊天记录的存储就需要一个数据表来记录,
table:HisData

如果对方处于离线状态的话,我们未被接收的消息应该存储到一个单独的表里,
table:OffLineMes
在处理完这条未读消息之后,我们应该及时的将这条消息删除

4. 群成员列表——GroupList

与好友列表一样,我们可以为每一个群聊建一个数据表,用存放这个群的群成员。

table:"GroupName"
这是最为直观的一种建表方式,我们可以很清晰的知道这个群组里都有哪些成员。但是数据库是用来存储数据的,而不会给用户去看,所以在数据量较小时,我们没有必要去考虑数据库复杂度的问题。而且与好友列表一样,当创建群聊的人数越来越多之后,整个数据库会变得非常的难看。

table:GroupList
同样,第三列数据表示该username在groupname里的职位。
这样建表不仅数据库会变得很整洁,在实现一些后续功能时也会容易很多,而不用在各个数据表之间嵌套查询。


关于C语言操作MYSQL可以参考我的这篇博客:
https://blog.csdn.net/qq_51665789/article/details/119350338?spm=1001.2014.3001.5501

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值