【问题标题】:What would be the relationship between a user table, rating table, and location table?用户表、评级表和位置表之间的关系是什么?
【发布时间】:2018-04-02 13:01:58
【问题描述】:

我正在开发一个小型 Android 应用程序,该应用程序允许用户创建帐户、查看显示的地点并对其进行评分,以及保存供以后查看的地点(这就是我让他们创建帐户的原因)。我正在使用 SQLite 数据库,想知道我的 User 表和 Location/Place 表之间的关系是什么。我最初的想法是与作为交集表的评级表建立多对多关系。例如,评分表将存储用户和地点的 ID,但也有自己的评分 ID。

【问题讨论】:

  • 所以该应用程序将只有一个用户?还是很多?如果应用程序有很多用户,那么关系将是多对多的,那么您应该创建第三个表来保存位置和用户的外键。
  • @ArisPanayiotou 这个应用会有很多用户。该应用程序的全部目的是为人们提供评价不同地点的机会,因此需要大量用户。我喜欢拥有一个用户帐户 people 的想法,它允许我为应用程序的每个用户保存位置。

标签: java android sqlite database-design android-sqlite


【解决方案1】:

这是我认为应该是您的数据库设计的ER 表示:

我还在UserRating 中添加了一些额外的信息,以使ER 图表更加逼真...

根据这种设计,您的表格应如下所示:

  • 用户(id, name, age) -> key( id)
  • 地点(id) -> (id)
  • 评分User_idPlace_id评分时间日期) -> key(User_id, Place_id)
  • 保存次数User_idPlace_idrate时间日期) -> key(User_id, Place_id)
  • 注意:由于Rating 是一个弱实体(它依赖于用户和地点),我们可以从Rates 关系中提取它,因为没有@987654329 @ 没有 UserPlace 参与其中。

希望对您有所帮助。

【讨论】:

  • 我对保存表的想法有点困惑。为什么需要存储汇率?我可能解释得不够清楚,但我的想法是让用户有机会标记某些位置。然后,这些位置将在单独的区域中可见,因此用户不必再次去找它们。我需要一个单独的表吗?或者这可以是用户表中的一个字段吗?
  • 你不能这样做......假设你的用户表有一个名为“Places To Watch”的字段,它存储每个用户想要访问的地点ID......现在如果一些用户想要访问2或者更多的地方你不能把它们添加到你的桌子上,因为你最终会得到重复的 ID……我希望你明白我的意思……顺便说一句,对不起我的英语不好
  • 这完全有道理。 cmets 不应该是为了表示感谢,而是感谢您的时间和帮助!
【解决方案2】:

表格应该类似于
User-> Id,Name,Username,Password
Ratings-> Id,User_id,Location_id,Rating
Location->Id,Name
SavedLocations->Id,User_id,Location_id


【讨论】:

    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 2014-08-02
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多