假设名为authors
的表中的名称列表。每个作者在他的一生中都写过一些书。重要提示:您不知道图书发布时的明确日期。(如果我现在确切的日期,我可以按每个查询中的顺序排序,我会很好。)你只有知道书籍出版的顺序。这些书籍存储在表格books
中。我们在authors
和books
之间存在多对多关系。
问题:您如何存储每位作者的出版历史顺序?
示例:
Luc - title_1
Luc - title_2
Luc - title_10
Luc - title_234
Peter - title_1
Peter - title_5
Peter - title_10
Peter - title_987
John - title_2
John - title_5
John - title_9
...
目前,我正在为每个作者存储一串逗号分隔的值(书籍的主键),以便记住某个作者在books_order
列中的出版物的顺序。
id name publication_order
...
4 john (2, 5, 9)
...
但这肯定是错误的方式。如何规范化?
答案 0 :(得分:1)
我会添加一个名为sortorder
的额外列或类似的列。第一本书获得1
,第二本获得2
...等等。然后,您可以使用ORDER BY author, sortorder
获取按作者和出版顺序排序的书籍列表。< / p>