我创建了一个包含3个表格的数据库:“产品”,“品牌”和“类别”。
产品表格包含product_id
,brand_id
,category_id
等。因此,通过使用其他表格中的category_id
和brand_id
,我可以选择并展示产品表中的不同数据。
但是,我想要一个解决方案,例如,如果产品属于两个或更多类别会怎么样?数据库模型应该是什么以及我需要在数据库中执行哪些更改表?
我的表格结构如下:
答案 0 :(得分:1)
产品和类别表之间的基数映射是多对多的。因此,您必须根据数据库规范化创建新表以保持记录产品和类别关系。因此,从产品表中删除category_id并创建如下所示的表。例如
create table productCategory(
product_id integer references product_table(product_id),
category_id interger references category_table(category_id),
primary key (product_id,category_id)
);
答案 1 :(得分:0)
我的逻辑有两个解决方案:
从产品表中删除列cat_id,添加另一个表以将产品映射到cat_id,示例方案:
CREATE TABLE product_mapping
(
id
INT(11)NOT NULL AUTO_INCREMENT,
product_id
INT(11)NOT NULL,
cat_id
INT(11)NOT NULL,
主要关键(id
)
)
所以..你可以通过加入3表来查询产品信息,例如查询如下:
SELECT pm.cat_id AS m_cat_id, pm.product_id AS m_product_id, p.*, c.*
FROM product_mapping AS pm
INNER JOIN products AS p ON p.id = pm.product_id
LEFT JOIN categories AS c ON c.cat_id = pm.cat_id
WHERE pm.product_id = :produc_id