我们正在构建基于crm的应用程序,我们正在使用PDO来访问数据库。我们有各种模块,如联系人,潜在客户,账户等。在模块中,我们允许用户添加他们的多个信息,如用户可以添加多个电话号码,电子邮件和地址以及电子邮件类型(工作,个人)。 所以为了保存这些多种信息,我们在数据库中使用序列化数组,例如:对于多个电子邮件,我们将序列化数组存储在数据库的“电子邮件”列中。
序列化格式:
a:2:{i:0;a:1:{s:5:"value";s:15:"test1@gmail.com";}i:1;a:1:{s:5:"value";s:15:"test2@gmail.com";}}
我们想确认这种方式可能在以后使用过滤等时不会产生问题所以任何人都可以建议我们这是将多种信息存储在数据库中的正确方法吗?
答案 0 :(得分:1)
我当然可以确认,这种方式稍后会在使用过滤等时产生很多问题。
通常,这种方法严重违背关系数据库架构。只要您将数据库视为愚蠢的键值存储,它就可以了,但如果您要将数据库用作数据库,则绝对不可接受。
数据库结构的主要规则应该是:每个实体都必须单独存储。通过这种方式,可以使用标准SQL机制访问它。
解决当前案例的一种可能方法是创建一个包含三列的表:
user_id, param_name, param_value