Php MySQL连接用例

Php MySQL连接用例,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,假设我有一个表users,其中包含以下字段: id username email hobbies 我有另一个名为嗜好的表,用于存储关于每个嗜好的特定信息: name | unique created type summary 现在,通常有人会通过创建多对多关系和联接表来解决这个问题,称之为user\u hobby: user_id hobby_name 我尝试做的不同之处是使用user表下的嗜好字段来存储嗜好名称的序列化数组 因此,当我想获取用户的兴趣列表时,我会选择加入,而不是加入 $a

假设我有一个表users,其中包含以下字段:

id
username
email
hobbies
我有另一个名为嗜好的表,用于存储关于每个嗜好的特定信息:

name | unique
created
type
summary
现在,通常有人会通过创建多对多关系和联接表来解决这个问题,称之为user\u hobby

user_id
hobby_name
我尝试做的不同之处是使用user表下的嗜好字段来存储嗜好名称的序列化数组

因此,当我想获取用户的兴趣列表时,我会选择加入,而不是加入

$array = $user->fetchHobbies()->toArray();
$hobbies = Hobbies::findByNames($array);

性能方面,哪一个更好?

性能方面,最好将其保留在规范化的数据库结构中,并使用正确的索引


原因是,如果你想说查找所有有“足球”爱好的用户,你要么需要选择每个用户并取消其爱好数据的序列化,要么在列上运行通配符
,如
匹配,无论哪种方式,大数据的速度都会很慢。

这是有道理的。我的教授向我提到,在大型应用程序中,关系数据库结构将崩溃。从那时起,我的团队一直在尝试设计一个模式,在这个模式中,这些实体将位于一个表中。当处理大型应用程序时,有很多选择,将数据序列化到字段中并不是其中之一。然而,你应该考虑非规范化、聚类、高性能硬件和/或面向文档的数据库。