Java 在MySQL中设计两个表以用于JPA

Java 在MySQL中设计两个表以用于JPA,java,mysql,jpa,orm,relational-database,Java,Mysql,Jpa,Orm,Relational Database,我想设计两个表如下,我的问题是,如果这个设计是正确的 表tweet:tweet_id,。。。 tweet表需要0..*hashtags->table hashtags:hashtag\u id,tweet\u id,hashtag 我想在JPA中使用它们,所以我认为这两个表都需要主键 提前谢谢你是的,这是正确的:tweet和hashtags之间存在一对多关系。实际上,如果你想要一个完全规范化的模式,你不应该让hashtag的文本在许多tweet上重复多次 换句话说,您应该有3个表: Tweet

我想设计两个表如下,我的问题是,如果这个设计是正确的

表tweet:tweet_id,。。。 tweet表需要0..*hashtags->table hashtags:hashtag\u id,tweet\u id,hashtag

我想在JPA中使用它们,所以我认为这两个表都需要主键


提前谢谢你

是的,这是正确的:tweet和hashtags之间存在一对多关系。

实际上,如果你想要一个完全规范化的模式,你不应该让hashtag的文本在许多tweet上重复多次

换句话说,您应该有3个表:

Tweet table
    tweet_id
    tweet_text

Tweet_Hashtag table (this is purely a join table)
    tweet_id
    hashtag_id

Hashtag table
    hashtag_id
    hashtag_text
所以一条tweet有很多tweet\u标签,而一个标签有很多tweet\u标签

tweet和hashtag之间存在多对多关系

然而,在现实世界中,不太可能创建单独的hashtag表,因为它们在Twitter中的使用仅限于139个字符,并且创建(全局)唯一的ID系统将是困难的。所以一个标签的文本很可能被用作它的唯一键