2013-08-16 53 views
2

我正在創建一個數據庫來存儲Magic the Gathering卡。
的設計,我想我應該用情況如下:MySQL檢查數據庫是否規範化和功能化

Database Schema

完全IMG:http://portolivre.net.br/imgs/MTGdb.png

爲了幫助你們瞭解什麼是需要在這個數據庫:

  • 每卡可以出現在多個版本中,當它改變版本時可以改變:每個版本中的稀有性,藝術家和卡號。

  • 每張卡片可以有一種或多種類型。

  • 每張卡都可以有子類型(不是必需的)。

  • 馬克也依賴卡和版本。

現在,我懷疑我的東西:

  • 這是正確歸?

  • 可以保留一些沒有任何主鍵的表嗎? (cardSets,cardType和cardSub)

  • 考慮到當我需要卡信息時,我需要檢查每張表,我應該學習哪些視圖並使用它們?

也有基本的土地,女巫會出現不止一次在同一個版本,即任何版本可以有4個不同的森林,他們將擁有一切完全相同(包括卡號),只有在藝術家不同。

我應該創建一個地表並用它代替卡表來處理這種情況,還是應該在卡表中添加4次Forest?

謝謝大家=)

+0

如果您使用innodb作爲存儲,您應該創建一個PRIMARY鍵或UNIQUE鍵。如果你在innodb中沒有創建PRIMARY鍵或UNIQUE鍵,那麼我在mysql中發現了一些麻煩的代碼。檢查這個http://dba.stackexchange.com/questions/48072/why-does-mysql-ignore-the -index偶數上力換此階由/ 48184#48184 –

回答

0

這是一個良好的開始正常化。添加數據然後嘗試在它之上構建一些東西是瞭解需求的一種好方法。還要說明每個連接的所有關係(正如您之前所做的那樣)是驗證設計的好方法。

根據你要使用的數據模型,我會主張在所有表中添加pk - 如果使用ORM或其他代碼生成工具,它們可能是必需的。視圖確實可以幫助簡化對數據的訪問,但它們只是作爲sql文本存儲在數據庫中的查詢,因此不是嚴格要求的。