2013-03-22 73 views
0

我的数据库中有三张表:Book,Series,Author。数据库 - 改变这个数据库架构还是离开它更好?

这些都有相互之间的许多一对多的关系。

Book - Series: many-to-many 
Book - Author: many-to-many 
Author - Series: many-to-many 

因此,这意味着我必须在我的数据库添加三个表:

1. tableBookSeries, which will have id, idBook, idSeries 
2. tableBookAuthor, which will have id, idBook, idAuthor 
3. tableAuthorSeries, which will have id, idAuthor, idSeries 

这意味着我必须在我的数据库6张桌子。

是否有这个数据库的优化方法还是不错的吧?我可以缩短桌子的数量吗?它会对我有好处吗?

回答

0

在我看来,是作者没有直接关系 - 系列。 一位作者只写了一本书,而这本书恰好是部分或不是系列的一部分。

在DB会是这样的(使用5台,而不是6):

  1. 书 - 系列:许多一对多 - 正确
  2. 书 - 作者:许多一对多 - 正确
  3. 作者 - 系列:许多一对多 - 错误(不这样做)

额外的表:

  1. tableBookSeries,这将有ID,idBook,idSeries - 正确
  2. tableBookAuthor,这将有ID,idBook,idAuthor - 正确
  3. tableAuthorSeries,这将有ID,idAuthor,idSeries - 错误(不要这样做作者和系列之间)

避免连接。如果你需要知道哪一个系列与作者有关​​,你仍然可以通过搜索他的书来知道。 同样,要知道是谁写了一个意甲,您可以使用相关书籍获得作者名单。

希望我有帮助

+0

如果我有体裁而不是系列?还有5张桌子,还是6桌子最好? – 2013-03-22 11:20:57

+0

我相信它会是一样的(5张桌子)。包含由作者撰写的适用于书籍的流派列表的流派表。 – 2013-03-22 11:26:21

+0

但是,如果我直接搜索作者系列而不是作者书系列,查询会更加简单。 – 2013-03-22 11:30:51