我在设计某些表时需要帮助,并且想知道这是否是正确的方法。
考虑一下,我有一个名为categories
的主表,用于存储产品类别列表。
另一个表product_categories
已将FK与product
表一起存储。我们还应该有类别的FK吗?这有什么好处和坏处。这里需要数据库专业知识。
create table product (
id int,
name varchar(255)
);
create table categories (
id int,
category varchar(255)
);
create table product_categories(
id int,
product_id int,
category varchar(255)
FOREIGN KEY (product_id) REFERENCES product (id)
);
我们是否需要使用@ElementCollection
或@OneToMany
关系?
答案 0 :(得分:1)
是的,您应该用类别表的外键替换category varchar(255)
的{{1}}列。否则,您将在两个不同的位置结束存储类别名称,从而导致不一致。
我们需要使用@ElementCollection或@OneToMany关系吗?
ElementCollection用于简单或嵌入式类型的集合。不适用于实体之间的关联。
OneToMany用于...一对多关联。但是您很可能在这里有一个多对多关联:一个产品属于多个类别,一个类别包含多个产品。因此,您需要... ManyToMany。
如果您确实有一对多关联(即一个产品属于一个类别,并且一个类别包含多个产品),那么您可能不希望该联接表:该产品应该知道该类别属于,因此您应该在产品表中具有类别ID外键(以及双向一对多关联)。