选择并浏览存储在单独表格中的类别和子类别

时间:2011-01-19 19:06:22

标签: php mysql database-design mod-rewrite categories

当您将类别级别存储在单独的表格中时,我正在寻找列出和浏览类别和子类别及其记录(分类广告)的解决方案。在过去,我曾使用邻接模型,但我现在必须坚持这个数据库设置,这对我来说是新的。我正在使用php和mysql。

该网站是一个以常见方式构建的分类广告网站:它在其主页上有主要类别列表,当您点击其中一个类别链接时,只会列出其子类别以及属于此类别的广告,因此在各个层面上。

我在以下方面有点困惑:

  1. 你是如何构建的 浏览时的类别链接 类别,以便脚本知道它应该从哪个表中选择类别,如果我考虑下面的 mysql结构?我需要分开吗? 我访问的每个类别级别的参数 例如:“mysite.com/?cat2=4”时 访问cat2中的类别“4” 表和“mysite.com/?cat3=9”时 访问cat3表中的类别“9” 为了识别类别 水平?如果单独的参数不 需要的话,php和mysql怎么样? 告诉您必须选择哪个表格 来自?

  2. 的类别
  3. 大多数人 重要的是在这种情况下,是什么 构建SEO的最佳方式 友情链接? mysql将如何知道 哪个表选择类别 从?我想用得最多 最简单的解决方案是可能的 喜欢: mysite.com/electronics/television/sony。 据我所知,我必须包括 至少是cat_id 在链接的某个地方......我把它放在哪里?我是否还必须包括级别数?至 更复杂的是类别 姓名是外语的 重音人物(虽然我 创造了一个改变的功能 重音人物加入拉丁文 在生成类别时动态 链接)所以我认为最好 按他们的ID选择它们。

  4. 示例mysql如何选择外观 就像选择孩子一样 某类别的类别?

  5. 如何构建面包屑 导航

  6. MYSQL结构:

    • 表“cat1”(主要类别):

      cat1_id | cat1_name

    • 表“cat2”(子类别):

      cat2_id | cat1_id | cat2_name

    • 表“cat3”(subsubcategory):

      cat3_id | cat2_id | cat3_name

    • 表“广告”:

      ad_id | cat1_id | cat2_id | cat3_id | ad_title | ad_description

    感谢并感谢抱歉。

1 个答案:

答案 0 :(得分:1)

我最喜欢的类别(和标记)网址模式:

http://mysite.com/articles/brains+zombies+legs+frogs

+符号适用于标签,对蜘蛛(和SEO)友好。使用类别的文本对于蜘蛛和人类都很重要,因为它是有意义的。

至于SQL,我建议2个表用于任何带有类别或标签的表:

Categories (id, name, description)

CategoryRelationships (catID, thingID)

对于任何给定的事物,您通过CategoryRelationships加入类别到事物。例如:

SELECT * FROM Things t
JOIN CategoryRelationships ON thingID = t.ID
JOIN Categories c ON catID = c.CatID

结果将是一个事物及其类别的列表,其中每个类别只有一个定义,以及通过关系表的一组链接。

至于面包屑,它们的问题略有不同。面包屑要么:

  • 提供您网站层次结构的导航,或
  • 帮助用户追溯他们的步骤

根据您所针对的面包屑的类型,您采取不同的方法。对于简单的网站层次结构集合,您可以简单地解析网址并foreach对这些网段进行分析:

http://mysite.com/people/zombies/brains/brains

解析URI将导致:

people, zombies, brains, brains

您将为其生成指向每个细分的链接。