2010-03-15 58 views
2

有點卡在這裏...我有一個應用程序可以讓每個用戶說5000行數據,並想知道這樣做是對還是錯:正確模型的數據庫與每個用戶的表

用戶帳戶創建一個新的表創建(UserData_ [用戶名])

,或者我應該只是對用戶數據1臺,並在那裏擁有一切與用戶ID列?

我被困在這一刻的原因是,看起來NHibernate不能被映射到動態表名稱而不創建另一個ISessionFactory,它有很多開銷AFAIK。

任何幫助將不勝感激。

謝謝。

回答

10

親愛的神NO,這是錯誤的方式。不要爲每個用戶創建一個表。

要知道究竟該做什麼,我們需要知道5000條記錄中的內容。

例如,如果每個用戶有5000個小部件,請將用戶名和用戶ID放在一個表中,並將所有小部件(每個都帶有一個用戶ID)放在另一個表中。

+0

只是確保你在UserId + TableId上放置一個索引以避免表掃描 – 2010-03-15 15:42:44

+1

@Steve:讓我們不要壓倒這個人,他顯然是新的。 – egrunin 2010-03-15 15:49:12

+0

謝謝,只是想知道一般的做法是什麼..我不做很多的數據庫創建,我通常與DAL一起呈現,並與之合作。 @Steve:這是你指的是什麼(使用流利-Nhibernate)? 參考文獻(c => c.Customer).Not.Nullable()。Index(「idx__customer」); – BAH 2010-03-15 15:55:53

1

一個實體類型,一個表。

因此,對於具有userid列的所有用戶使用一張表,除非您在應用程序中的其他位置有不尋常的要求。

4

一張桌子就夠了。每個用戶5000行,100.000個用戶將只有500.000.000行 - 這是SQL標準沒有太多;)

一般來說,數據庫模式應儘可能靜態。

1

請勿爲一種實體類型使用不同的表格。爲所有用戶使用一張表,然後您甚至不會遇到動態創建表的問題。 嘗試想象如何查詢您的數據,以及如何查詢5000個表以獲取所有用戶是多麼的不合邏輯。

相關問題