2012-05-15 144 views
0

我有用於從公司發送有關產品信息給供應商下表:規範化序列化表

Table Messages: 
INT PK Message_ID 
TEXT Message 
INT FK Company_ID 
INT FK Product_ID 
DATE Date 
TEXT Message_Receivers 
TEXT Email_Attachments 
TINYINT Status 

Table Email_addresses: 
INT PK Company_Email_ID 
INT FK Company_ID 
VARCHAR Email_Name 
VARCHAR Email_Address 

Table Attachments: 
INT PK attachment_id 
INT FK image_id 
INT FK product_id 
DATE Upload_date 
VARCHAR Category 

眼下,如果消息被髮送給多個recievers,如果它有多個附件,它們被放進入消息表序列化。我對這種方法並不熟悉,希望對錶格進行規範化處理,以便在一行中有一個接收者和一個附件,但我沒有看到如何去做。

我的問題是,讓它序列化是否有好處?作爲一個新手,我不確定我是否缺少了一個好處,如果正常化是關鍵,你能給我一個關於如何這樣做的提示嗎?

+0

好的,繼續我的搜索,我發現這篇文章讓我相信,當你想到正常化時,序列化通常不是一種方法。 [規範化與序列化](http://tech.fireflake.com/2009/04/30/php-serialize-vs-database-normalization/) –

+0

我想這個決定因素實際上就是你將要進行的操作這個數據... – eggyal

回答

0

恕我直言,規範化總是第一個假設。序列化非常適合程序化使用,但對於MySQL可能涉及的任何事情都是完全相反的。我的一般方法是序列化諸如用戶設置之類的東西,也許是一些事務歷史記錄,以及類似的東西 - 我知道的東西將永遠不會包含在SQL語句中。

而搜索響應時間,並且應該永遠是重要的考慮因素,很多人似乎失去了事實數據庫引擎是專爲搜索,所以只要你在與你的數據庫設計規範化規則,然後搜索對於要搜索的數據應始終運行良好。