2013-03-22 75 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