2012-05-18 16 views
0

如何最好地爲(mysql)數據庫中的varchar/text/...列選擇大小(讓我們假設用戶可以鍵入文本區域的文本應該是最多500個字符),考慮到用戶也可能使用格式(HTML/BB代碼/ ...),這是不可見的用戶,不應該影響最大500字符文本大小...?在理論上,爲了防止出現任何錯誤,如果用戶(例如,用戶)使用20個這樣的鏈接(http:// [巨量字符])或其他... - 或不是?存儲文本分貝:如何選擇varchar大小(考慮格式),分別存儲格式?

2)您應該/能否將格式保存在單獨的列中,例如不給索引(如FULLTEXT)錯誤的值(包含在格式中但不包含在真實文本中的詞)?

如果是的話,如何最好地做到這一點?你還記得使用格式的時候,保存這一點和格式,並在輸出時把這些信息放在一起嗎?

(的PHP/MySQL,Java腳本,jQuery的)

非常感謝你提前!

+2

這可能是錯誤的,但根據我的經驗,當存儲任何您知道「可能」長於您想要施加的限制的內容時,將其設置爲「文本」。 – Gavin

+0

@Gavin:thx,只是我讀了'text'作爲'varchar'變慢了,至於文本mysql必須執行行讀取(參見[forums.mysql.com](http://forums.mysql.com/read .php?24,105964,105984#msg-105984)) – Chris

+0

如果是這種情況,那麼您必須依靠第三方解決方案來防止用戶使用超過xx個字符。爲了全文搜索的目的,我能想到的唯一解決方案是將常規內容存儲在一列中,並將文本存儲在另一列中而不用任何格式。 – Gavin

回答

0

一個好的解決方案是考慮格式化字符的數量。

如果您不這樣做,爲避免數據丟失,您需要在數據庫上使用更多空間存儲文本,並在保存或使用全文前檢查先前記錄的長度。

在一張表中保留相同的數據兩次並不是一個好的解決方案,這一切都取決於你的項目,但通常更好的是它過濾器在PHP上格式化。

+0

是啊,謝謝ShaaD。限制格式化字符的數量是一個好主意。你有什麼想法如何最好地把這個實踐?我只需要非常基本的功能(比如'a href','bold','italic'),所以我不知道使用第三方所見即所得的編輯器,因爲它只會增加很多複雜性和不可預見的問題,可能需要定期更新等。你會建議如何解決這個問題? – Chris

+0

你可以使用BBcode,PHP有一個很好的類與他們合作。在客戶端足以讓按鈕將選定的文本包裝成標籤。 – ShaaD