0

我正在做我自己的项目,并且有一些东西要存储在 mysql 数据库中。在考虑什么应该是最好的解决方案后,不要在数据库中重复相同的值,我没有找到答案。

举个例子,

Cars带有行Cars_ID和的表Cars_VALUE

-=JoinTable between Cars and Cars_CreationDate=-

Cars_CreationDate带有行Cars_CreationDate_ID和的表Cars_CreationDate_VALUE

-=JoinTable between Cars_CreationDate and Cars_Description=-

Cars_Description带有行Cars_Description_ID和的表Cars_Description_VALUE

在休眠实体中,我会有这样的关系:

在 EntityCars_CreationDateCars@ManyToMany 之间,关系的所有者是Cars_CreationDate. 因为Cars一个日期可以制造很多,一个日期可以有很多汽车。

在EntityCars_DescriptionCars@ManyToOne之间,关系的所有者是Cars实体,实体Cars_Description属于Cars。实体Cars_Description每次都使用Cars.fetchType=EAGER

现在让我们看看我们是否在数据库Cars中已经制作了一些,我想为这辆车添加新日期我会说: Cars cars = (Cars)session.get(Cars.class, int idindatabase);//如果我们为不同的汽车多做几次,我们将有相同的 Cars_Description_VALUE对应于不同的汽车所以它看起来像这样

2013-07-03 到 CarOne

2013-07-03 到 CarTwo

2013-07-03 到 CarTree

等等。所以我不需要每次都重复这个日期。

怎么不让这个问题出现???谢谢

4

1 回答 1

0

我认为使用单独的实体/表来存储单个值以避免必须写出它们没有多大价值——汽车有日期或汽车有日期的引用。我会把日期放在 Car 中并完成它。但理论上,您想要的是 Car 中的外键来引用您的日期。每辆车都有一个日期 ID,用于查找日期行/实体。然后,您的日期对象可以返回 1:M 关系,因此它们可以拥有汽车集合。
在汽车实体中:

  @ManyToOne
  @JoinColumn(name="CREATIONDATE_ID"
  DateEntity creationDate;

在 DateEntity 中:

  @OneToMany(mappedby="creationDate")
  Collection<CarEntity> cars;
于 2013-07-03T17:46:31.790 回答