Android 安卓应用程序&x2B;MySQL数据库结构与设计

Android 安卓应用程序&x2B;MySQL数据库结构与设计,android,mysql,database,Android,Mysql,Database,简介:让我先介绍一下我的android应用程序。 这是一个食品评论应用程序,用户可以对餐厅的特定食品进行评论 应用程序的流程: 1.用户启动应用程序。 2.一张附近餐馆的名单弹出。 3.用户选择一家餐馆。 4.将显示所选餐厅的菜单列表。 5.用户选择他/她希望对其进行审查/查看评级的食品 到目前为止的进展:我使用GooglePlaceAPI获取附近餐馆的列表。但API并没有提供餐厅食物(菜单)的可搜索列表 问题:菜单和餐厅必须与菜肴评论一起存储在数据库中。如果我为餐厅制作一张桌子,为餐厅的菜单制

简介:让我先介绍一下我的android应用程序。 这是一个食品评论应用程序,用户可以对餐厅的特定食品进行评论

应用程序的流程: 1.用户启动应用程序。 2.一张附近餐馆的名单弹出。 3.用户选择一家餐馆。 4.将显示所选餐厅的菜单列表。 5.用户选择他/她希望对其进行审查/查看评级的食品

到目前为止的进展:我使用GooglePlaceAPI获取附近餐馆的列表。但API并没有提供餐厅食物(菜单)的可搜索列表

问题:菜单和餐厅必须与菜肴评论一起存储在数据库中。如果我为餐厅制作一张桌子,为餐厅的菜单制作另一张桌子,那么搜索和检索时间将变得非常巨大

需要:你能告诉我,我应该如何设计我的数据库,使检索时间少于微秒。我是否需要使用第三方应用程序在尽可能短的时间内检索记录


请尽快回复。

Android应用程序不使用MySQL——开销将是巨大的。如果他们使用SQL,他们就使用SQLite


有关通过内置API提供的数据存储选项的更多信息,请参阅

Android应用程序不使用MySQL——开销将是巨大的。如果他们使用SQL,他们就使用SQLite


有关通过内置API提供的数据存储选项的更多信息,请参阅

首先,我不会直接从你的应用程序连接到数据库。应用程序可以被破解,用户可以自由支配你的数据库。我将构建一个RESTful服务,您的应用程序将与之交互。然后,可以通过缓存层和数据库持久性层的组合对RESTful服务进行回溯

就DB持久层的设计而言。我个人可能会选择NoSQL方法,这样您就可以简单地检索每个餐厅的一个对象,然后访问该餐厅的菜单数据,因为这样可以在需要时为每个餐厅提供不同的数据结构

但是,如果您认为每个餐厅的菜单结构都是可规范化的,这样就可以使用关系数据库,那么您可以随意使用这种方法。一个设计良好的数据库模式应该非常符合您的需求,即使您要跨多个表进行查询。尤其是在数据库前面使用数据缓存(memcached或类似的)


事实上,内存缓存将成为您获得最佳总体响应时间的最大资产。

首先,我不会直接从您的应用程序连接到数据库。应用程序可以被破解,用户可以自由支配你的数据库。我将构建一个RESTful服务,您的应用程序将与之交互。然后,可以通过缓存层和数据库持久性层的组合对RESTful服务进行回溯

就DB持久层的设计而言。我个人可能会选择NoSQL方法,这样您就可以简单地检索每个餐厅的一个对象,然后访问该餐厅的菜单数据,因为这样可以在需要时为每个餐厅提供不同的数据结构

但是,如果您认为每个餐厅的菜单结构都是可规范化的,这样就可以使用关系数据库,那么您可以随意使用这种方法。一个设计良好的数据库模式应该非常符合您的需求,即使您要跨多个表进行查询。尤其是在数据库前面使用数据缓存(memcached或类似的)


事实上,内存缓存将成为您获得最佳总体响应时间的最大资产。

但是所有关于餐厅和菜单的数据都必须存储在MySQL中。我认为存储在SQLite中不是一个选项。@ChanchalKumari MySQL可以为SQLite无法做到的android应用程序提供什么?但是所有关于餐厅和菜单的数据都必须存储在MySQL中。我认为在SQLite中存储不是一个选项。@ChanchalKumari MySQL能为SQLite做不到的android应用程序提供什么?哪一个将是最好的选项:1。从mysql中检索数据并将其添加到手机的sqlite数据库中。或2。如您所述,将数据存储在缓存中。我认为,如果您希望将手机上的数据缓存在sqlite中,这也是一种很好的方法,因为您的响应时间不受internet连接质量的影响。但是,同样,如果数据不存在于本地sqlite缓存中,您可以通过API(而不是直接从MySQL)获取数据,这将是最好的选择:1。从mysql中检索数据并将其添加到手机的sqlite数据库中。或2。如您所述,将数据存储在缓存中。我认为,如果您希望将手机上的数据缓存在sqlite中,这也是一种很好的方法,因为您的响应时间不受internet连接质量的影响。但同样,如果数据不存在于本地sqlite缓存中,则可以通过API(而不是直接从MySQL)获取数据