首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库设计布局

数据库设计布局
EN

Stack Overflow用户
提问于 2018-06-01 12:04:24
回答 1查看 26关注 0票数 0

为了练习MySQL,我正在用java创建一个数据库聊天程序。

到目前为止,我已经创建了3个表:

  1. 用来记录当前聊天会话的名称和密码的聊天日志。
  2. 用于记录其用户名、密码和当前聊天的用户日志。
  3. 允许自动报告错误和内容问题的错误日志。

但是我想知道什么是最好和最有效的方式来存储聊天消息。我应该为每个聊天创建一个新的表(使用聊天日志表中的名称来标识它)还是有一个大表来存储所有聊天的所有消息,并将聊天名引用为外键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 13:13:31

到目前为止,我们只考虑表ChatLogUserLog

ChatLog

代码语言:javascript
运行
复制
chatid | chatname | chatpassword
-------+----------+-------------
1      | foo      | bar
2      | lol      | xD

UserLog

代码语言:javascript
运行
复制
userid | username   | userpassword
-------+------------+-------------
1      | chatbot    | skynet
2      | john       | doe
3      | chucknixon | thegreatone

对于消息日志,我的方法将是您编写的最后一个方法,它有一个带有外键的大表。

MessageLog

代码语言:javascript
运行
复制
messageid | userid | chatid | messagecontent
----------+--------+--------+---------------
1         | 1      | 1      | john has joined the chat
2         | 1      | 1      | chucknixon has joined the chat
3         | 2      | 1      | hello chuck
4         | 1      | 2      | john has joined the chat
5         | 3      | 1      | Hi john how are you ?

然后,关系逻辑和结构结构将如下所示:

-a唯一用户可以编写0或n消息。

-a唯一消息可以由1编写,并且只有1用户可以编写。

-a唯一聊天室可以包含0或n消息

-a唯一的消息可以包含在1中,只有一个聊天室。

UserLog 0,n -> (写入) <- 1,1 MessageLog 1,1 -> (要包含) <- 0,n ChatLog

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50643044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档