PHP电子商务类别结构解释

时间:2013-12-27 21:23:23

标签: php mysql

我正在使用PHP和mysql开发一个简单的在线商店。

我需要了解类别与产品的关系!

我在mysql数据库中创建了一个名为“categories”的表,该表中有两列名为“cat_id”和“cat_name”。

我还创建了一个包含产品及其名为“products”的表,以及两个名为“product_id”和“product_name”的列。

现在我需要知道如何将这两个表连接在一起?

有人可以请我为此澄清一下吗?

2 个答案:

答案 0 :(得分:1)

如果产品可以包含多个类别,则可以将类别分配给许多产品。这是一个ManyToMany关系,因此需要一个链接表。

我会创建一个包含product_category列和product_id

列的表category_id

如果产品只能有一个类别,您可以将其作为外键添加到产品表中,作为category_id等列。

答案 1 :(得分:0)

这取决于你的概念。产品一次可以驻留在多个类别中吗?如果是这样,您需要一个链接表。否则,您只需在products表中添加一列,其中包含它所在类别的ID。

前者更复杂,因为它涉及多对多关系,这是你应该避免作为规范化的一部分。您需要一个看起来像这样的链接表:

+------------+------------+----------+----------+
|   cat_id   |   prod_id  |  active  |   order  |
+------------+------------+----------+----------+
|     1      |     1      |    1     |     0    |
|     1      |     2      |    0     |     1    |
|     2      |     2      |    1     |     0    |
+------------+------------+----------+----------+

如您所见,我们有四列(您可能只需要两列):

  • cat_id是类别的ID(来自categories
  • prod_id是产品的ID(来自products
  • active是一个布尔值,表示该产品当前是否在此类别中有效
  • order定义此产品对给定类别的排序顺序

在上面的示例数据中,产品ID 1和2都出现在类别1中。但是,产品ID 2未激活。产品ID 2也是第2类中唯一的产品。