【问题标题】:Backend app in OO PHP: Structuring classes/tables efficientlyOO PHP 中的后端应用程序:有效地构建类/表
【发布时间】:2014-03-24 08:54:08
【问题描述】:

我目前正在开发应用程序后端(业务目录)。主要“演员”是一个“条目”,它将具有:

- main category
    - subcategory
        - tags (instead of unlimited sub-levels of division)

我对 OOP 还很陌生,但我仍然想在这里使用它。数据库是 MySql,我将使用 PDO。

为了弄清楚我应该使用什么数据库表结构来支持上述条目分类,我正在考虑 Wordpress 使用的一种解决方案 - 通过几个表在条目和猫/子猫/标签之间建立关系(术语、分类法、关系)。目前使我无法使用此解决方案的原因是,任何类型的每种关系都由关系表中的一行表示。鉴于我将拥有 50,000 个条目,附加到特定条目:主猫、子猫和多达 15 个标签可能会减慢应用程序的速度(或者我错了)?

然后我了解了一些关于表数据网关的知识,这似乎是一个很好的解决方案,因为我喜欢每个班级有一个表的想法,但后来我读到几乎没有办法成功解决 OOP 和关系之间的阻抗不匹配问题——映射。

还有其他您认为适合这种情况的方法吗?我想我会选择:

  • 混合酒
  • tbl 类别
  • tbl 子类别
  • tbltag

结构。关系将基于父 ID,但我想知道这是否足够?我可以在这里使用外键和级联删除选项吗(这是我不太熟悉的东西,在我看来这是一种更直观的在表中的元素之间建立关系的方式)?

【问题讨论】:

    标签: php oop orm pdo datamapper


    【解决方案1】:

    有一个表来存储你的表之间的关系一个好主意,并且通过索引和仔细的思考你可以得到非常快的结果。

    由于每个条目必须代表两个实体之间的不同类型的链接(子类别到主条目,标签到子类别),您至少需要(并且最多)三个字段:

    • id1(或第一个实体的唯一ID)
    • linkid(链接到描述每个链接的第四个表)
    • id2(或第二个实体的唯一ID)

    这三个字段可以而且应该被索引。

    现在实现这种多对多关系的第四个表将描述链接的性质。由于表中将存在许多不同类型的关系,因此您不能将类型(子对象、标记、父对象)保留在同一个表中。

    第四个表(参考)可能如下所示:

    id     nature     table1    table2
    1      parent of  entry     tags
    2      tag of     tags      entry
    

    table 1 字段告诉您第一个 id 指的是哪个表,table2 也是如此

    id 是关系表中两个字段之间的数字。只有 id 字段应该被索引。自然字段更适合人类读者,而不是用于连接表格或组织数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      相关资源
      最近更新 更多