2014-02-22 29 views
3

我目前正在开发应用程序后端(业务目录)。主要的“演员”是一个“入口”,它将具有:OO中的后端应用程序PHP:有效地构建类/表格

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

我很新的面向对象,但我仍然想在这里使用它。数据库是MySql,我将使用PDO。

为了试图找出为支持上述条目分类而应该使用哪种数据库表结构,我在考虑Wordpress使用的解决方案 - 通过几种方法在条目和cats/subcats/tags之间建立关系表格(术语,分类法,关系)。目前让我从这个解决方案中脱颖而出的事实是,任何类型的每个关系都由关系表中的一行表示。如果有50,000个条目,我会附加到一个特定的条目:主猫,子猫和多达15个标签可能会减慢应用程序(或者我错了)?

然后,我学到了一点关于Table Data Gateway的看起来很好的解决方案,因为我喜欢每个类有一个表的想法,但是后来我读到,实际上没有办法成功地解决OOP和关系之间的阻碍错配-mapping。

有没有其他方法可以适合这种情况?我想我将与打算:

  • tblentry
  • tblcategory
  • tblsubcategory
  • tbltag

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

回答

1

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

,因为每个条目必须代表两个实体(子类别主入口,标签子类),则至少需要(和很大部分)三个字段之间的不同的链接类型:

  • ID1(或第一实体的唯一ID)
  • 的linkID(链接到其中,每个链路被描述的第四个表)
  • ID2(或第二实体的唯一ID)

那些三个场s可以并且应该被索引。

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

是第四个表(参考)看起来是这样的:

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

表1场告诉你的第一个ID是指哪个表,同样与表2

的ID是间数你的关系表中有两个字段。只有id字段应该被索引。自然界对于读者来说更加适合于加入表格或组织数据

相关问题