我需要帮助设计某些表,并想知道这是否是正确的方法。
假设我有一个名为 categories
,存储产品类别列表。
还有一张table product_categories
已将fk存储在 product
table。我们是否也应该为类别设置fk?这有什么好处和坏处。这里需要db的专业知识。
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
关系?
1条答案
按热度按时间zf2sa74q1#
是的,你应该换个柱子
category varchar(255)
的product_categories
通过类别表的外键。否则,您将得到存储类别名称的两个不同位置,从而导致不一致。我们需要使用@elementcollection还是@onetomany关系?
elementcollection用于简单或嵌入式类型的集合。不适用于实体之间的关联。
一个女人是为了。。。一对多关联。但这里很可能有多对多的关联:一个产品属于多个类别,而一个类别包含多个产品。所以你需要。。。很多很多。
如果你真的有一个一对多的关联(即一个产品属于一个类别,而一个类别包含多个产品),那么你可能不想要这个连接表:产品应该知道它所属的类别,因此,在产品表中应该有一个category id外键(和一个双向的一对多关联)。