对ER建模中关系的困惑

时间:2012-12-10 22:31:40

标签: sqlite entity-relationship

我有一个问题。基本上我正在模拟出版商的数据库,其中充满了作者信息。所以为此我有一个名为“作者”的实体 - 作者有一个自动增量计数器的主键,以及一个“名称”和出生年份。

除此之外,我还有“book”的实体 - 再次 - 一个名称,发布年份,它自己识别一个自动递增计数器的主键。它还有两个外键 - 一个引用主作者的字段(需要),以及一个指定二级作者的可选字段。

我的问题是,作者和书之间的关系显然是“一”到“零或更多”。但是,我被困的地方是次要作者的“选择性”。我认为它应该是“零或一”与“零或更多”的关系,但我不确定我是否正确地翻译逻辑 - 我的想法是有可能很多书都没有第二作者。

同样,在sqlite3中实现此功能时,最好是将此字段设为“必需”还是“可选”?我假设如果我要求它可以保持休眠作为'NULL'值,除非需要。

您将获得任何帮助。

1 个答案:

答案 0 :(得分:0)

您正在寻找的关系是多对多的关系。

  • 一本书有一个或多个作者
  • 一个人写(作者)一本或多本书

这意味着您需要3个数据库表:

书籍,人作者

  • 书籍:id,title
  • 作者:book_id,person_id,位置(例如,第一作者为1,第二作者为2)
  • 人:id,姓名

一旦有了这三个表,就可以使用JOIN查询关系。可以在youtube video中找到初学者加入的介绍,你想要的JOIN类型是在4:50左右。

可以在此处找到stackoverflow答案和示例:sqlite LEFT OUTER JOIN multiple tables