【问题标题】:How to organize the SQLite DB in my app如何在我的应用程序中组织 SQLite DB
【发布时间】:2013-10-23 05:40:47
【问题描述】:

此时我有一个用户表,其中包含以下字段" id、姓名、电子邮件、性别、密码和头像。

现在,这些用户将拥有物品、去地方、交朋友并执行一些操作。会有关于他们活动的统计数据。

我应该存储这些操作的引用(以及相应的统计信息)并将这些操作本身存储在其他表中,还是应该只在此表中添加更多字段?

例如, 签到、关注、朋友——这些应该在另一个表中吗?

活动怎么样?

某人与另一个人成为朋友。 有人跟随另一个人。 某人现在有某种状态。

是否应该将这些与它们的时间戳以及与之相关的相应操作存储在一个表中(有人喜欢这篇文章,cmets 等等)

【问题讨论】:

  • 你可以创建另一个表并使用join。
  • 但哪种方法更好?我应该坚持使用较小的表还是将与用户相关的所有内容都放在一个用户表中?事件表怎么样 - 我应该将事件放在表中吗?
  • 我认为 RDBMS 的概念很好而且很清晰,所以我们应该使用它!
  • 所以我应该谷歌 RDBMS 并阅读一些文章?
  • 如何为一个用户存储多个事件?多条记录?一列中的事件列表?阅读ER modellingnormalization

标签: android mysql sql sqlite


【解决方案1】:

经过一番阅读和询问,我得出的结论是:

每种类型的对象都有一个表: 用户 项目 地点

每个对象的附加数据的表: 用户信息、操作 项目信息 地点信息

每种类型的动作或事件都有一个表格 喜欢 以下是 友谊

事件表

event_id、event_type、parameter1、parameter 2、parameter 3、parameter 4*(*查看下方注释)*

事件喜欢的表 event_id、person_id

事件 cmets 表 event_id、person_id、comment_text

如果用户的邮箱中有 13 条消息,其中 8 条已被阅读,则在消息表中这将是一个布尔值“已读”。

目前看起来还可以吗?

如果我想要统计信息,我不会将它们存储在记录中,我会计算某些查询的结果数,例如:

用户 Kylie 有 14 个关注者,因为这是为该用户查询表后返回的行数

注意:唯一困扰我的是事件表,因为不同类型的事件需要不同的参数,例如

事件类型的友谊需要两个用户的 id。 事件类型购买需要一个用户和一个产品 ID。

我可以将所有事件存储在一个表中还是应该为每种事件类型创建多个表?

PS:我使用 umlet 来布局设计和表格之间的关系,然后再开始实施它们

【讨论】:

  • 答案不是提问的合适地方。至于事件,这些通常会通过 OO 语言中的继承来实现。有关如何在数据库中对此进行建模,请参阅this answer
猜你喜欢
  • 2013-03-01
  • 1970-01-01
  • 2017-12-03
  • 2019-09-04
  • 1970-01-01
  • 2011-05-19
  • 2011-06-12
  • 2012-03-09
  • 2012-02-10
相关资源
最近更新 更多