小编典典

SQL数据库具有可变的列数

sql

我有一个关于我要创建的数据库的新手问题。我有一份出版物列表,其顺序如下:

UID,作者,URL,标题,出版物,起始页,结束页,数量,年份

然后我意识到有多个作者,因此我开始尝试规范化多个作者的数据库。然后我意识到作者的顺序很重要,而且期刊文章中也可能有许多作者,人数在1到数十名之间,甚至可能更多。

我应该只创建一个包含多个Authors(空列)的表(如12或类似的东西)吗?还是有一种方法可以根据作者数量来改变列数?


阅读 172

收藏
2021-04-14

共1个答案

小编典典

数据库模型

基本上,您需要many-to-many作者与出版物之间的关系,因为一个作者可以撰写许多出版物,而一个出版物可以由多个作者撰写。

这需要您有3张桌子。

  • 作者-有关每位作者的一般信息(无publications_id)
  • 发布-有关每个发布的一般信息(无author_id)
  • AuthorPublication -列author_idpublication_id那些对表的引用AuthorPublication

这样,您就不会将特定作者绑定到出版物,但是您可以拥有更多的作者,反之亦然。

附加条款

如果您想区分作者在特定出版物中的角色,则还可以添加一些列,例如id_role对字典表的引用,该表说明了作者的所有可能角色。这样,您可以在主要作者,合著者等之间有所不同。这样,您还可以存储有关处理本书翻译的人员的信息,但是也许您应该将其命名更改为Author不太具体的名称。

出现顺序

您可以通过添加一列来确保作者的正确排序,在AuthorPublication该列中您将为每一个单独增加Publication。这样,您将能够保留所需的顺序。

2021-04-14