我有以下表格,用于向公司的供应商发送有关产品的消息:
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
现在,如果将消息发送给多个接收者,并且如果它有多个附件,则将它们放入序列化的消息表中。我并不熟悉这种方法,并且想要对表进行规范化,以便在一行上有一个接收器和一个附件,但我没有看到如何这样做。
我的问题是,让它序列化是否有好处?作为一个新手,我不确定我是否错过了一个好处,如果正常化是关键,你可以给我一个暗示如何这样做吗?
答案 0 :(得分:0)
恕我直言,规范化始终是第一个假设。序列化非常适合程序化使用,但对于MySQL可能涉及的任何内容都是完全适得其反。我的一般方法是序列化诸如用户设置之类的东西,可能是一些事务历史,以及类似的东西 - 我知道的东西永远不会包含在SQL语句中。
虽然搜索响应时间是并且应该始终是重要的考虑因素,但许多人似乎都错过了数据库引擎设计用于搜索的事实,因此只要您按照数据库设计遵循规范化规则,搜索可搜索的数据应始终正常运行。