【问题标题】:Suggestions for chat system schema design聊天系统架构设计建议
【发布时间】:2014-02-03 18:42:39
【问题描述】:

我需要关于 sql 表架构的建议。我已经打开了一个表并将其命名为 Chats,添加两列(如 ID 和消息)还是包含 ID 和消息的列会更好吗?其中哪一个会更快

【问题讨论】:

  • 永远,永远,永远不要在一列中存储多个值。 id 应该只包含 一个 数字。而message 应该只包含 一个 消息。
  • 我已经做到了,但它们都运行缓慢,即使有三四行
  • 您使用的是什么数据库?微软? MySQL?甲骨文?
  • 数据库表需要普通形式,因此您需要使用第一个变体。
  • @Ravshanjon 你是什么意思慢?数据量基本一样,变化不大

标签: sql-server schema chat


【解决方案1】:

我个人会将其建模为两个表:

Chats
 - ID
 - Name

Messages
 - ID
 - ChatID
 - Message
 - SentDate

应该有一个从 Messages.ChatID 到 Chats.ID 的外键。

否则,您将不得不在每次有人发送消息时创建重复的聊天。

我强烈建议不要将 ID 和值保留在同一列中,这样几乎不可能加入,并且会在以后产生各种问题。

【讨论】:

    【解决方案2】:

    没有理由使用单列。添加尽可能多的列,每列都有自己的数据类型,因为稍后您将能够按每列过滤和排序表。如果需要,您还可以添加约束、索引、统计信息等。

    如果您使用单独的列,对该表执行的任何查询都会运行得更快。

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2022-08-20
      • 2019-03-22
      • 2011-12-28
      • 1970-01-01
      • 2020-04-28
      相关资源
      最近更新 更多