我有一个关于我正在尝试创建的数据库的新手问题。我有一份出版物 list ,一般顺序如下:
UID、作者、URL、标题、出版物、起始页、结束页、卷、年
然后我意识到有多个作者,我开始尝试为多个作者规范化数据库。然后我意识到作者的顺序很重要,一篇期刊文章也可以有很多作者,从 1 到几十,甚至更多。
我应该只创建一个包含多个作者(空列)(例如 12 或其他)的表吗?或者有没有一种方法可以根据作者的数量来设置可变数量的列?
最佳答案
数据库模型
您基本上需要作者和出版物之间的多对多
关系,因为一位作者可以撰写多篇出版物,而一篇出版物可以由不止一位作者撰写。
这要求您有 3 个表。
- 作者 - 关于每个作者的一般信息(没有 publications_id)
- 出版物 - 关于每个出版物的一般信息(没有 author_id)
- AuthorPublication - 列
author_id
和publication_id
是对表Author
和Publication
的引用。
这样您就不会将特定作者绑定(bind)到出版物,但您可以拥有更多作者,反之亦然。
附加说明
如果您想区分作者在特定出版物中的角色,您还可以添加一些像 id_role
这样的列,它是对字典表的引用,其中列出了作者的所有可能角色。这样您就可以区分主要作者、合著者等。这样您还可以存储有关处理书籍翻译的人员的信息,但也许您应该将 Author
的命名更改为不太具体的名称.
出现顺序
您可以通过在 AuthorPublication
中添加一列来确保作者的正确排序,您可以为每个 Publication
单独增加该列。这样您就可以根据需要保留顺序。
关于mysql - 具有可变列数的 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568563/