2012-04-07 159 views
0

我有問題,我正在創建相當複雜的表單。表格的某些部分是動態創建的。比方說,如果您從下拉列表中選擇某個選項,額外的字段會被注入到表單中。將動態表單數據插入數據庫。 PHP

哪種方法最適合存儲該數據?我想嘗試一下,不用多個表。因爲我讓整個應用程序變得更加複雜。

我想在我的模型中初始化所有可能的值爲「0」。然後用後期數據覆蓋它們,並將整個數組存儲在表中。任何人看到這種方法的任何問題?

回答

0

很大程度上取決於您想要如何處理表單數據以及多久。

序列化的單場

在最簡單的用例,你可以BASE64_ENCODE(連載($數據))中的所有數據並將它放入數據庫中的一列。

  • 簡單
  • 快速插入
  • 輕鬆添加/更改輸入字段
  • 困難和緩慢,以搜索值(尤其是在規模)
  • 很難編程方式更新,如果您需要做對數據進行系統更改
  • 如果您始終將所有數據從數據庫中提取出來,並且絕不會通過序列化字符串中的數據縮小sql查詢的範圍,

元數據表

添加第二個元數據表可以提供多一點靈活性。第二個表格將具有對主要表單提交的外鍵引用,元數據名稱和值。這可以實現非常靈活的多對一關係,您可以輕鬆存儲,搜索和操作。你可以在wordpress中看到這個例子。

  • 2個表,但還是簡單
  • 輕鬆添加/更改輸入字段
  • 好多了通過SQL搜索
  • 更容易更新系統
  • 完美的,如果你並不總是得到所有該數據或必須通過表單數據搜索範圍縮小

而且還有一個不同的方向 - 您也可以考慮查看基於文檔的數據庫li ke MongoDB或CouchDB,如果你發現自己處理很多這種類型的數據。

2

在您的模型中使用多個表的必要性並不取決於您必須存儲多少數據(多少個字段) - 這取決於您的模型的邏輯。因此,如果在你的模型中使用關係是合乎邏輯的理由(f.e.1:n,n:m),那就只好做!

如果你不會遵循創建你的模型的基本規則,並會嘗試f.e.將所有數據存儲在一張表中,雖然它應該分成很多表格,但您很快就會後悔。將來你的代碼的任何變化都將花費你更多的工作,並且在某些時候你不會理解你自己的代碼,並且將不得不重新編寫它,這次遵循規則;)

並且不要擔心if開發合適的模型花費了大量的工作(最近我花了兩週的時間開發我的模型) - 這是非常有意義的,因爲之後您可以使用完善的計劃模型更快更有效地工作。

另一方面,有些情況下,在一個表中存儲超過100個和更多的字段是有意義的 - 這取決於邏輯。所以,如果你會提供一些例子,也許可以說你是否應該使用一個或多個表。