2013-03-07 26 views
0

我希望它可以在這裏問更多的理論問題。我已經回顧了一些問題,但認爲特定於我的主題的東西可以幫助我擺脫困境。dynamicaly創建表或不

我有一個應用程序,可以根據幾種不同的公式和數百種不同的材料類型計算定價。

用戶A可以使用式A和材料A,B,C

用戶B使用式A和材料A,B,C,+他們要添加,沒有其他人使用的材料一 材料unique_A

當用戶A在應用上時,他不想看到用戶B的獨特材料。

我正在考慮爲每個用戶使用一個獨特的材料表,以便它「更快?更有效率?抓取材料清單,而不是嘗試設置某種關閉,功能只有抓住用戶想要的材料從一個全局表。

哪種方式更好?一個表或爲每個用戶一個唯一的表?

回答

2

你可以擁有所有材料的表。

materials = (id, name, other attributes...) 

和一張用戶列表:

myusers = (id, name, etc....) 

那麼你可以有,基本上代表了許多在這兩個之間的許多關係的表:

user_materials = (user_id, material_id) 

然後,您可以選擇通過連接這些表由用戶使用的具體材料。在應用方面,這種安排比爲每個用戶創建表格要好。查詢將變得困難。這樣您也可以回答以下問題:哪些用戶正在使用材料A?

+0

謝謝文森特。拋出關係表並不是我想過的。這真的幫助我前進! – 2013-03-07 17:48:06

0

除非你有很少的用戶,每個用戶都有自己穩定的不變項目, 我沒有看到這樣做的任何意義。 另外,如果您正在討論用戶和材料的域,很可能您不會遇到性能問題 。 這不是說有數以百萬計,對吧?

0

數據庫的一個「最佳實踐」是減少信息的重複性。實際上,對於任何理論領域而言,這種變化都存在。

然而,這意味着你的每個用戶的獨特表的方法不是一個好主意。 不僅會重複數據,而且隨着用戶數量的增加,維護這樣的數據庫將變成一項巨大的任務。

我希望有一個材料的全球表,用戶的表和用戶想要哪些材料的表。

'單表法'可以被認爲更好,因爲它可以降低數據庫和應該訪問數據庫的代碼的複雜性,並且可以複製信息。