java - MySQL JDBC 插入多对多对象而不添加重复项

标签 java mysql database-design

在 MySql 数据库中添加多对多对象但不在多对多连接的任一侧添加重复实体的最佳方法是什么。

例如,如果我想将书籍添加到书籍数据库中,并且作者和书籍之间存在多对多的联系。如果作者表中已经存在,我不想添加已经存在的作者,而是想找到他/她的作者 ID 并建立与书籍的连接。使用 JDBC 执行此操作的最佳方法是什么?

下面是对该问题的更详细解释。我有 3 个表 Book、Author 和 AuthorBook。下表代表了这些之间的结合。

Book Title |      Book Author
------------------------------------
Book 1     |      Book Author 1
Book 2     |      Book Author 2

如果我想添加另一本书“Book 3”,其作者已存在于数据库“Author 2”中。我不想再次添加“Author 2”,而是获取“author 2”id 并将其用于 BookAuthor 表。

最佳答案

This描述了最优的多对多关系表。

请注意,主键涵盖两者(在您的情况下是书籍和作者),这样可以防止重复。

为了简单起见,您也可以通过表格发送所有引用文献,而不是对单一作者的书籍进行特殊处理。

关于java - MySQL JDBC 插入多对多对象而不添加重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41126890/

相关文章:

mysql - 将记录分布在不同的 MySQL 数据库上 - MySQL Proxy 替代方案

database-design - 将货币值(value)存储为美分/小单位有什么缺点?

java - 触摸时移动物体

java - 如何在 Selenium Java Webdriver 中验证图像的尺寸?

php - 插入循环导致列数不匹配

php - 成功查询时出现 fetch_object() 错误

java - 如何将 Spring MVC 重定向到类似 url 的 {...}

java - 为什么我们总是要抛出新的异常?我们可以不将该异常存储为实例变量并每次都抛出相同的实例吗?

php - 我想在 sql 中选择客户和日期过滤器

数据库约束