【发布时间】:2026-01-24 08:15:01
【问题描述】:
我正在尝试为以下情况提出一个合理的 SQLite 数据库架构。
我有一个包含出版物的数据库。这些出版物中的每一个都有许多作者,并且这些作者中的每一个都可以属于许多不同的机构。然而,多个作者共享一个研究所是可能的。例如,出版物的作者是 Anne、Bert 和 Carl。 Anne 属于 A 和 B 学院,Bert 属于 B 和 C 学院,Carl 属于 C、D 和 E 学院。
每份出版物的作者数量应该是可变的,任何特定作者可以属于的机构数量也应该是可变的。不过,机构应该只代表一次。
现在,我正在考虑以下架构:
create table publications (
id integer primary key autoincrement,
...
)
create table publication_institutes (
id integer primary key autoincrement,
publication_id integer references publications(id),
...
)
create table publication_authors (
id integer primary key autoincrement,
publication_id integer references publications(id),
...
)
create table publication_author_institute (
id integer primary key autoincrement,
institude_id integer references publication_institutes(id),
author_id integer references publication_authors(id)
)
但这似乎不是最理想的。 publication_author_institute 不再引用 publications 中的 id,但将其显式放在那里似乎也关闭了。
这种情况有明确的解决办法吗?
提前致谢!
【问题讨论】:
-
您想知道作者曾经属于哪些机构,或者他在出版特定出版物时属于哪个机构?
-
我需要知道哪些作者属于某个特定的出版物,以及他们在出版该出版物时属于哪个机构。对于给定的出版物,多个作者可能属于同一研究所。
标签: sqlite many-to-many one-to-many foreign-key-relationship