我正在使用PHP和mysql开发一个简单的在线商店。
我需要了解类别与产品的关系!
我在mysql数据库中创建了一个名为“categories”的表,该表中有两列名为“cat_id
”和“cat_name
”。
我还创建了一个包含产品及其名为“products
”的表,以及两个名为“product_id
”和“product_name
”的列。
现在我需要知道如何将这两个表连接在一起?
有人可以请我为此澄清一下吗?
答案 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类中唯一的产品。