【问题标题】:Should the schema of my database in mobile and web app be the same?我的数据库在移动和网络应用程序中的架构是否应该相同?
【发布时间】:2015-07-12 21:05:16
【问题描述】:

我以这种方式设计了我的 django 网站数据库的架构。

人:

  1. 姓名
  2. 年龄
  3. 性别等

汽车:

  1. 人的外键
  2. 车名
  3. 汽车颜色 等等。

自行车:

  1. Person 的外键
  2. 自行车颜色等。

我也使用 django-tastypie 将其转换为 API。我想为此使用 xamarin 构建一个移动应用程序。该应用程序将有一个用于存储这些值的数据库。但是,我用于存储这些值的 Java/C# 方法类似于

class person{

String name;
int age;  
String gender;
List<Car> listofcars;
List<Bike> listofbikes;

}

这与数据库的结构不同。

在这种情况下,有效的方法是什么?

1.) 我的应用程序数据库架构是否应该与我的服务器数据库架构完全相同?这种方式在服务器和客户端之间同步值很容易。但是要获得自行车或汽车的列表,我需要执行多个查询。

2.) 或者我应该为我的应用程序开发一个不同的架构,这样我就可以轻松地开发应用程序。唯一的缺点是同步并不容易。

【问题讨论】:

  • 不,它们不必相同 - 它需要与 API 同步,以尽量减少序列化等。

标签: mysql django mobile xamarin


【解决方案1】:

是的... 有点

A database schema is just an abstract formal description of how you are storing your data.。 Django 模型或 MySQL DDL 定义只是具体表达这个抽象概念的方式。

例如,您的 django 模型和 C# 代码都描述了这个抽象概念:

一个person 有一个name、age、gender,并且可以有一个bikes 和cars 的集合。

最终,如果您的移动应用、API 和 django web 应用能够通信,它们必须包含并共享完全相同的信息。否则,您的系统将在传输之间丢失信息 - 例如,如果应用省略了年龄,而 django 省略了性别,在几次调用之后,您的数据库都不会有任何信息。

您的移动应用程序和 django 应用程序是否必须有一个来自完全相同的地方的架构,也许,但这肯定会因为很少的回报而变得更加困难。例如,作为构建策略的一部分,您可以让 django 生成用于构建表的 DDL,然后将其传递给应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多