将作者真实姓名与数据库中的笔名相关联

时间:2011-02-18 05:54:24

标签: mysql database sqlite relationship

我正在为了学习目的而在一个小型数据库项目(sqlite或mysql)中徘徊......我想我会编写一些书籍中的一些;)

我以为我已经完成了大部分表格和关系,直到我开始编写并填充特定书籍系列中的一些示例数据。其中一位作者在这个系列/流派中以笔名写作,但在另一种类型的名称下完全不同,他的“实际”名称完全不同。增加乐趣,有时读者(我)可能不知道封面上的作者姓名是笔名。

关于如何在实践中处理此类事情的任何想法或建议?

TIA,

3 个答案:

答案 0 :(得分:1)

来自@Adam和@mellamokb的答案没有考虑到其他一些并发症:

  1. 笔名可由作者使用
  2. 作者可能拥有零笔名称
  3. 笔名可以属于作者
  4. 笔名可以是房子(出版商)笔名,由零多位作者使用
  5. 当作者开始与一位或多位其他作者合作时,通常会采用笔名进行协作。
  6. 正如你所说,名称是笔名并不总是显而易见的,所以你必须假设名称是真实的,除非你不知道。
  7. 显然,处理所有这些案件只是值得,如果书籍数量很大 - 在我处理我的书籍收藏(约15,000)之前,我正在考虑转向这种解决方案,因为笔名,由于编辑的选集和文章系列。

    如果你想沿着这条路走下去,一个好的起点是Martin Fowler's Analysis Patterns或IEEE标准的作者描述自己的出版物。

答案 1 :(得分:0)

许多可能的解决方案之一:

  • tblAuthors包含作者(仅限实名)。
  • tblPenNames包含笔名并与tblAuthors相关。
  • tblBooks有一个链接到tblAuthors的AuthorID和一个链接到tblPenNames的可选PenNameID。

另一种解决方案

  • tblAuthors包含作者或笔名。
  • tblAuthors有一个可选的PenNameForAuthorID链接到另一位作者。
  • tblBooks有一个链接到tblAuthors的AuthorID。

答案 2 :(得分:0)

我会在authors表中创建三个与名称相关的列,例如:

authors
-------
author_id
author_name
author_alt_name
author_pseudonym

并假设books表具有authors的外键,例如:

books
-----
book_id
book_title
...
author_id

...然后您可以使用author_id查询该作者的书籍,从而独立于他/她使用的各种名称。