我有三个表(MySQL):families
在其中定义产品的类别products
我定义产品的地方
与家人和产品相关的families_products
------------------- -------------------- ------------------------
| familyID | code | | productID | code | | familyID | productID |
|----------|------| |-----------|------| |----------|-----------|
| 1 | p | | 1 | p3 | | 1 | 1 |
| 2 | a | | 2 | a5 | | 1 | 3 |
| 3 | e | | 3 | p1 | | 1 | 6 |
------------------- | 4 | e7 | | 2 | 2 |
| 5 | a2 | | 2 | 5 |
| 6 | p4 | | 3 | 4 |
-------------------- ------------------------
我有两个问题:
这种设计方便吗?还是最好删除
families_products
表,将familyID
关系直接放入表products
中?对于这样的设计,如果我有
familyID
,如何获取products->code
?我写了这个查询,但是如果像我之前所说的那样,如果将family_products表直接放入familyID关系到表产品中,而不是在第三个关系表中,则这样的查询结构将起作用。'SELECT productID, code, img
FROM products AS a
INNER JOIN families_products AS b
ON b.productID=a.productID
WHERE b.familyID=' . $families[$key]["familyID"]
最佳答案
您的数据结构很好。
如果每个产品最多有一个familyID
,则应将该系列放在products
表中。如果产品可以属于多个系列,则应使用连接表(您的结构)。
至于您的查询,这很好。我会使用更好的表别名:
SELECT p.productID, p.code, ??.img
FROM products p INNER JOIN
families_products fp
ON f.productID = fp.productID
WHERE fp.familyID = ' . $families[$key]["familyID"]