2017-10-21 46 views
1

我正在研究一个小型的Android应用程序,它将允许用户创建一个帐户,查看和评分显示的地点,并保存待观看的地点(这就是为什么我让他们创建一个帐户)。我正在使用SQLite数据库,并想知道我的用户表和位置/位置表之间的关系是什么。我最初的想法是与作为交叉表的评分表进行多对多的关系。例如,评级表将存储用户和地点的ID,但也有其自己的评级ID。用户表,评分表和位置表之间的关系是什么?

+0

因此应用程序将只有一个用户?或者有多少?如果应用程序将有许多用户,那么这种关系将是多对多的,然后您应该创建第三个表来保存位置和用户的外键。 –

+0

@ArisPanayiotou该应用将有许多用户。该应用程序的全部目的是为人们提供评价不同地点的机会,并需要这么多的用户。我喜欢有一个用户帐户的人的想法,这将允许我为应用程序的每个用户保存位置。 –

回答

0

这里是什么,我觉得应该是你的数据库设计ER表示:

ER diagram

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

根据这种设计,你的桌子应该是这样的:

  • 用户ID岁) - >ID
  • 广场ID) - >ID
  • 评分User_idPlace_id时间日期) - >USER_IDPlace_id
  • 保存USER_IDPlace_id时间,日期) - >USER_IDPlace_id
  • :因为Rating是一个弱实体(它依赖无论在用户和地点),我们可以从Rates关系提取它,因为就没有Rating没有UserPlace涉及它。

希望你觉得它有帮助。

+0

我对保存表的想法有些困惑。为什么需要存储费率?我可能没有足够清楚地解释它,但想法是给用户一个标记某些位置的机会。这些位置将在一个单独的区域中可见,以便用户不必再次找到它们。我需要一个单独的表格吗?或者这可能是用户表格中的一个字段? –

+0

你不能这样做...让我们假设你的用户表有一个名为“Places To Watch”的字段,它存储了每个用户想要访问的地点ID ...现在,如果某个用户想要访问2个或更多的地方,你不能添加它们到你的桌子因为你最终会得到重复的ID ...我希望你明白我的意思... btw对不起我的可怜的英语 –

+0

这是完全有道理的。评论不应该是为了表示谢意,而是感谢您的时间和帮助! –

0

的表应该像
User-> Id,Name,Username,Password
Ratings-> Id,User_id,Location_id,Rating
Location->Id,Name
SavedLocations->Id,User_id,Location_id


相关问题