2013-01-05 23 views
1

我目前正在重構一個項目,其中有很多數據保存爲代碼中的常量和數組。還有很多冗餘。現在我想將所有數據移入數據庫,但我不知道如何執行映射。數據很少根據用戶輸入動態選擇,而是在代碼中特別選擇。它在應用程序的核心層使用,但實際上並不是核心。另外一個數據庫已經被使用,所以不會有額外的努力。硬編碼數據庫選擇。 ID與名稱vs其他東西?

我的想法是使用一個映射類中,我有指向各行的ID常量。這是一個好主意嗎?

另一個想法是建立索引的名字排而直接查詢名稱。

該數據庫將可能有以下幾列:ID,姓名,多項式,而params。因此,基本上我們正在談論數學數據。例如:1,「價格近似」,20x^3 - 5x^2 + 11x「,」非累積「。

我認爲這個問題是語言不可知的,但由於可能存在語言特定即使框架專用)的最佳實踐,這裏是我使用方法:使用PHP5 Yii框架

+1

你可以舉一個你正在談論的數據的例子嗎?你需要找到速度,可維護性和簡單的訪問之間的平衡 –

+1

可能考慮配置文件作爲另一種選擇...... http://stackoverflow.com/search?q=config+files+vs+database –

+0

我沒有真正考慮配置這種方式。數據不會在運行時更新。至少不在代碼之外。 最好的解決方案可能只是使配置更少冗餘。謝謝! –

回答

3

我沒有用PHP也不Yii的許多經驗,但這裏是我的2美分...

如果這些常數和技術上定義您的應用程序(應用程序架構常量)常量的集合,但最終用戶不應該控制,我會把它們放在配置文件,而不是你的數據庫,除非你已經建立了一個模塊輕鬆訪問和修改它們。無論你是實現一個映射類(或配置類)來檢索它們都不重要,但在你如何檢索它們方面是一致的。如果您有太多的配置文件需要管理,那麼將它們存儲在數據庫中將是適當的,但確保您提供了一種簡單的方法來修改它們。爲了讓你的源代碼可讀,我會使用人類可以理解的描述符,並像描述的那樣將這些描述符映射到相應的行。

如果這是用戶定義的常量,那麼你一定要提供一個接口。但保持與應用程序體系結構常量相同的體系結構。

在一個完善的程序/應用(甚至更好 - 一個應用框架),什麼是硬編碼的,一切由常數(開關)控制。如果您能夠在不需要維護源代碼的情況下取得成功,您將獲得諾貝爾和平獎。

+0

謝謝,Yii有ORM,因此訪問和修改它不會是一個問題。現在我認爲配置文件的數據太多了。此外,它不是真正的應用程序核心,而是它在覈心層面的數據處理(我希望你能抓住我的偏見:p)。 –

+0

+1 - 這是數據庫濫用。配置文件是要走的路。 –