2013-10-16 290 views
0

我正在考慮存儲數據的最有效方式,優先級是快速檢索數據。我有一組數據。以Pokemon卡爲例數據庫數據庫結構

想象一下,在這個世界上,每張卡片都有自己的唯一ID,但每張卡片可能有重複的屬性。

我想創建2表來存儲存在於這個世界上有一個唯一的ID

第二臺

這樣的數據

1表

每張卡的性質

對於每個ID,它可以包含世界上所有卡的多行唯一ID。

綜上所述,我想擁有1張表來存儲屬性,另一張表用來存儲擁有該屬性的卡片。

有沒有更好的方法來存儲和檢索數據。計劃使用MySQL。讓我們把它作爲最多隻能有1億個獨特卡片

回答

3

所以你有卡片。卡片具有屬性。有些卡具有相同的屬性,我假設屬性是複雜的實體,它們也有一些屬性。

這將是最有意義的有3個表:一個卡和誰擁有它們。一個用於所有獨特的屬性,然後是卡片和屬性之間的多對多表格。

您選擇的查詢有雙JOIN。如果您將索引添加到所有表的主鍵,它應該超快。

Cards 
    id 
    owner 
    name 

Properties 
    id 
    value 
    foo 
    bar 

Cards2Properties 
    card_id [fk] 
    property_id [fk] 
+0

這個建議的好處是,您還可以在不更改模型的情況下添加新屬性。 –