设计一个结构化数据库来聊天,一个表或多个表

时间:2014-03-21 19:13:52

标签: android mysql sql sqlite database-design

下午好,

  • 我正在考虑如何保留sqlite表1或超过1的帖子,

  • 举一个例子,一个聊天,最好将它全部保存在同一个表中(如果可以的话)或更好的不同?

(示例1表)

http://cmanios.wordpress.com/2013/10/29/read-sms-directly-from-sqlite-database-in-android/

  • 我认为如果我们将表中的所有信息都更容易信息溢出(堆栈溢出)

android sqlite表的限制:(相关主题)

Maximum SQLite Database Size in Android Application

SQLite database limits in Android

  • 我的意思是我可以在一个表中包含更多消息。 从我的角度来看,作为程序员,我想创建多个表。

  • 示例1和x表:

    • (1表)(其中user =" select")只需要查看特定用户,例如"用户1和2的消息)

表:(用户1 +用户2 +用户3 ...用户x)

+-----------------------------------------------------------------------------------------------------------------+
| date                | date_sent             | person    |  body                         |
|------------------------------------------------------------------------------------------------------------------
| 2013-10-20 13:48:18 | 2013-10-20 13:48:16   |   User1   | Hello Christos! How are you?              |
| 2013-10-20 16:34:03 | 1970-01-01 02:00:00   |   User2   | Fine, thanks ! I configure the left MFD of a F-16 jet |
| 2013-10-20 16:40:02 | 2013-10-20 16:40:01   |   User3   | Awesome! I am throwing a party tomorrow at 21:45!     |
| 2013-10-20 17:15:15 | 1970-01-01 02:00:00   |   Userx   | Thanks! I will be there!                  |
+-----------------------------------------------------------------------------------------------------------------+

- (2个或更多表格)轻松选择所有表格

+-----------------------------------------------------------------------------------------------------------------+
| date                | date_sent             | person    |  body                         |
|------------------------------------------------------------------------------------------------------------------
| 2013-10-20 13:48:18 | 2013-10-20 13:48:16   |   User1   | Hello Christos! How are you?              |
| 2013-10-20 16:34:03 | 1970-01-01 02:00:00   |   User2   | Fine, thanks ! I configure the left MFD of a F-16 jet |
| 2013-10-20 16:40:02 | 2013-10-20 16:40:01   |   User1   | Awesome! I am throwing a party tomorrow at 21:45!     |
| 2013-10-20 17:15:15 | 1970-01-01 02:00:00   |   User2   | Thanks! I will be there!                  |
+-----------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------+
| date                | date_sent             | person    |  body                         |
|------------------------------------------------------------------------------------------------------------------
| 2013-10-20 13:48:18 | 2013-10-20 13:48:16   |   User1   | Hello Christos! How are you?              |
| 2013-10-20 16:34:03 | 1970-01-01 02:00:00   |   User3   | Fine, thanks ! I configure the left MFD of a F-16 jet |
| 2013-10-20 16:40:02 | 2013-10-20 16:40:01   |   User1   | Awesome! I am throwing a party tomorrow at 21:45!     |
| 2013-10-20 17:15:15 | 1970-01-01 02:00:00   |   User3   | Thanks! I will be there!                  |
+-----------------------------------------------------------------------------------------------------------------+

。 。 。

  • 我认为合适,创建多个表,我们不会有存储问题,所有这些都在一个表中。

  • 有人可以告诉我哪种方式最好?或者如果我错了概念

1 个答案:

答案 0 :(得分:0)

您在sqlite中为大小限制提供的链接都表明这不应该是一个问题。

如果你真的认为你会到达:

http://www.sqlite.org/limits.html

  

表中的理论最大行数为264   (18446744073709551616或约1.8e + 19)。此限制无法访问   因为最大数据库大小将达到140太字节   第一。一个140TB的数据库可以容纳不超过约   1e + 13行,然后仅当没有索引和每行时   包含的数据非常少。

在Android设备上...好吧我想也许你需要重新考虑一下这个话题。

下一个问题:

您是否应该动态创建/删除表格?这是一个非常糟糕的主意 - 它容易引起奇怪的问题。我不是说你不能这样做,但这不是做这种事情的正常方式。

个人 - 一个数据库。如果你真的觉得你需要分解它,那么粗略的做法可能就像:

MyDatabase:

  tables:               fields

      user         UserUuid,name,

      message      UserUuid,MessageId,MessageText,to, from, timestamp

      attachments  MessageId,AttacmentId,AttachmentContent

这将允许您创建新用户并将它们链接到消息和附件,同时保持组织比在一个表中更好地组织,并且可以避免您动态创建/销毁表。您可以找到一个更适合您特定需求的组织结构图,但这应该可以帮助您。