2017-05-31 74 views
1

這是一個關於SQL或SQLite模型設計的問題。SQL:數據庫設計的好卡?

假設你有一些紙牌遊戲,有許多可重複使用的卡和玩家做甲板掉那些卡(如MTG)

當然你不想做的卡片新實例爲每個甲板用戶可能會創建。這會有很多冗餘。

因此,應該有一個「主」卡(及其所有相關信息)。

那麼我的問題是,如何最好地將卡片(和數量)整合到指定卡片中?

(我實際上並沒有製作這個數據庫,它只是強調了讓一個用戶擁有多個來自一些普通股票的不同數量的多個項目的數量集合的設計)。

回答

1

有三個表:一個表具有卡上的數據(名稱,成本等)。另一張桌子有甲板(甲板名稱,創作者等)。另一張牌桌上有牌(deck_cards)(將card_id與數量上的deck_id連接起來)。

編輯:附錄:這與在所有數據庫設計引用中使用的經典前導示例(產品,訂單和訂單項)都是相同的設置(和基本原理)。唯一缺少的是「客戶」(如果你想將甲板鏈接給玩家或甲板製造商,可以添加這些「客戶」)。

+0

雖然有效,但我仍然覺得它並不理想,因爲表'deck_cards'只添加了一個字段,而從管理員的角度來看,必須首先確保卡片在表格中卡片「,然後製作卡片和描述,最後在」deck_cards「中填充卡片。我實際上並沒有製作這個數據庫,這只是一個我認爲強調我遇到的問題的例子 – SumNeuron

+0

如果你使用的是SQL,那麼你問的是有人在做數據庫,即使它不是你。所以答案自然就會假設建立一個數據庫。 這個範例(三個表格)肯定比不使用deck_cards表格更理想。除非你不需要任何有關甲板的信息,除非他們的卡片,在這種情況下,你可以省略甲板表並重新命名deck_cards作爲甲板(我懷疑這是一個好主意,因爲你最終會想參考甲板由甲板以外的東西)。 –

0

我猜想是這樣的:

卡 - 含表卡細節

Card_ID Card_Name Card_Dmg Card_Attribute Card_Health 
    123  Fire Mage  20   Fire    100 
    345  Water Man  6   Water   200 
    037  Earth Dwarf 10   Earth   150 

球員 - 表包含玩家詳細

Player_ID  Player_ForeName  Player_Surname 
    1    Fred    Smith 

Player_Cards - 表詳細介紹了球員的甲板,用他們擁有的每張卡都有新的行,例如:

Player_ID  Card_ID 
    1   123 
    1   345 
    1   037 
+0

如果保存特定的卡座信息非常重要,請根據其他答案添加卡座表格。 – Dekks