规范化序列化表

时间:2012-05-15 22:08:35

标签: php mysql normalization

我有以下表格,用于向公司的供应商发送有关产品的消息:

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

现在,如果将消息发送给多个接收者,并且如果它有多个附件,则将它们放入序列化的消息表中。我并不熟悉这种方法,并且想要对表进行规范化,以便在一行上有一个接收器和一个附件,但我没有看到如何这样做。

我的问题是,让它序列化是否有好处?作为一个新手,我不确定我是否错过了一个好处,如果正常化是关键,你可以给我一个暗示如何这样做吗?

1 个答案:

答案 0 :(得分:0)

恕我直言,规范化始终是第一个假设。序列化非常适合程序化使用,但对于MySQL可能涉及的任何内容都是完全适得其反。我的一般方法是序列化诸如用户设置之类的东西,可能是一些事务历史,以及类似的东西 - 我知道的东西永远不会包含在SQL语句中。

虽然搜索响应时间是并且应该始终是重要的考虑因素,但许多人似乎都错过了数据库引擎设计用于搜索的事实,因此只要您按照数据库设计遵循规范化规则,搜索可搜索的数据应始终正常运行。