2012-05-15 103 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语句中。

而搜索响应时间,并且应该永远是重要的考虑因素,很多人似乎失去了事实数据库引擎是专为搜索,所以只要你在与你的数据库设计规范化规则,然后搜索对于要搜索的数据应始终运行良好。