通常id有一个包含承包商列的大表(包含所有产品)。我最喜欢的产品表,我可以很容易地与产品相关。但在这里我需要将产品保存在单独的表中。那么最好的方法是将我最喜欢的产品表与承包商表中的产品联系起来吗?
谢谢:)
答案 0 :(得分:1)
我会创建一个承包商表,一个产品表,然后是产品的多对多链接表承包商。此外,我还会创建一个最喜欢的产品表,在这个表中,您还可以拥有多对多的承包商产品链接,以用于产品可能来自多个承包商的情况
答案 1 :(得分:1)
这不是最好的设计。
您应该UNION
所有承包商表格和JOIN
结果:
SELECT *
FROM (
SELECT product
FROM contractor1
UNION ALL
SELECT product
FROM contractor2
UNION ALL
…
) c
JOIN favorite f
ON f.product = c.product
您最好为contractor
作为字段的产品保留一个表格。
查询和管理会更容易。
答案 2 :(得分:0)
因此,您将拥有Contractor,Product和Contractor_Product表。像(在psuedo-sql中)的东西:
create table Contractor {
id int primary key,
name varchar(50) not null,
...
}
create table Product {
id int primary key,
name varchar(50) not null,
...
}
create table Contractor_Product {
contractorid int references Contractor(id),
productid int references Product(id),
...,
primary key contractorid, productid
}
现在,我不是100%肯定你想从“收藏夹”表中得到什么。它可能不是表,而是查询。或者,您可能想要一张类似于Contractor_Product表的表格?或者只是Contractor_Product表上的另一个“isfavorite bool default = false”列?
希望有所帮助!