【问题标题】:Best way to store information on server在服务器上存储信息的最佳方式
【发布时间】:2014-05-16 06:41:47
【问题描述】:

我正在制作一个有趣的网络应用程序。有“用户”,每个用户都有不相交的数据。

每个用户都有许多“例程”。 (同样,这些对每个用户来说都是独一无二的)。

每个“例程”都有许多“步骤”(对于例程来说完全独特),每个“步骤”都有一些“子步骤”(同样,对于步骤来说完全是唯一的)。

我目前将此信息存储在直接 SQL 表中。所以有一个用户表、一个例程表、一个步骤表和一个子步骤表。这很好,因为当我点击一个步骤时,只有与该步骤相关的子步骤被加载(和缓存)。

但是,不同的 php 文件开始出现大量的数据,因为每个表都有其独有的属性。我应该将其以 XML 格式存储在 SQL 表中吗?你会怎么做?

【问题讨论】:

  • 就您所描述的程度而言,您的表结构听起来很合理,但这如何导致“大量不同的 php 文件”? PHP 文件和数据库表之间没有内在的关联。
  • 为什么需要单独的 PHP 文件来访问不同的表?你不能在你的 PHP 中添加逻辑来确定你需要访问哪个 SQL 表吗?
  • 是的。你俩都是对的。谢谢。 #imdumb
  • 我应该删除这个问题吗?

标签: sql xml


【解决方案1】:

在面向对象的方法中,您可能有一个 PHP 文件来表示对象模型中的每个类 - User.php、Routine.php、Step.php、Substep.php - 并将它们导入到PHP 类,代表您的主要 Web 应用程序控制器。您还可以将这些对象进出数据库的持久性分解为一个附加文件,或每个对象类型一个文件 - 这不是面向对象程序中的文件数量,而且比将所有内容都放入其中要好得多一个大文件。

【讨论】:

    【解决方案2】:

    考虑使用自引用表 - 包含父步骤(“例程”)的单个表,然后是每个子步骤。例如:

    tbl_routine
    ID | ParentID | Title
    1  | <null>   | Wash the Car
    2  | 1        | ..Fill the bucket
    3  | 2        | ....Add 1oz Soap
    4  | 2        | ....Add 4ltr Water
    5  | 1        | ..Put the nozzel on the hose
    ...
    

    然后使用 CTE / 递归查询来提取例程及其所有步骤和子步骤。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 2011-12-09
      • 2021-11-27
      • 1970-01-01
      相关资源
      最近更新 更多