多对多关系 SQLite (studio or sql)

Many to many relationship SQLite (studio or sql)

你好。在我看来,我只是不了解数据库中很明显的东西。

所以,我们有一位写书的作者,并且自己也有书。一个作者可以写很多书,一本书可以由很多作者写。

因此,我们有两个 tables 'Books' 和 'Authors'。

在'Authors'中我有一个'ID'(主键)和'Name',例如:

1 - L.Carrol

2 - D.Brown

在 'Books' - 'ID' (pr.key), 'Name' 和 'Authors'(并且此列是 'Authors' 的外键table身份证号)

1 - Some_name - 2 (L.Carol)

2 - Another_name - 2,1 (D.Brown, L.Carol)

这是我的绊脚石,因为我不明白如何提供从 'Authors' table 中选择多个值到 'Books' [=65] 中的一列的可能性=] 这一定很简单,不是吗? 我对多对多关系很感兴趣,看到很多例子都添加了额外的 table 来实现它,但仍然不明白如何将一个 table 的多个值存储在另一个 table 列。请解释一下逻辑,我应该怎么做?我使用 SQLiteStudio 但 clear sql 也是合适的。帮忙^(

你应该有第三个中间体 table 它将有以下列:

  • id(主要)
  • 作者 ID(来自作者 table)
  • 图书 ID(来自图书 table)

这样您就可以创建一条记录,将 1 位作者映射到 1 本书。所以你可以有以下记录:

  • 1 ... Author1ID ... Book1ID
  • 2 ... Author1ID ... Book2ID
  • 3 ... Author2ID ... Book2ID

AuthorXIDBookXID - 来自相应 tables.

的外键

所以 Book2 有 2 位作者,Author1 有 2 本书。

此外,书籍和作者的 table 不需要包含除自身以外的任何信息。

作者 .. 1---许多 .. BOOKSFORAUTHORS .. 许多 ---1 .. 书籍