PHP/MYSQL将变量存储在数组或单独的字段中

PHP/MYSQL将变量存储在数组或单独的字段中,php,mysql,arrays,normalization,Php,Mysql,Arrays,Normalization,过早优化是万恶之源…但是。。。 我允许用户在类别内输入数据,如喜爱的球员、喜爱的球队等。然后,他们可以使用这些选择来过滤结果。我让他们输入用逗号分隔的列表,这样在分解数据后,我就把它放在了一个数组中。那么如何储存呢 方法1:我可以创建一个用户表,每个用户一行,带有类别,如球员、团队字段,并将每个用户的选择保存为相应字段中的数组。(userid将链接到基本用户表。) 方法2。或者我可以为每件事、玩家、团队等创建单独的表,并有固定数量的字段,比如10,将数组分解为每个单独的值,存储并放置在自己的字段

过早优化是万恶之源…但是。。。 我允许用户在类别内输入数据,如喜爱的球员、喜爱的球队等。然后,他们可以使用这些选择来过滤结果。我让他们输入用逗号分隔的列表,这样在分解数据后,我就把它放在了一个数组中。那么如何储存呢

方法1:我可以创建一个用户表,每个用户一行,带有类别,如球员、团队字段,并将每个用户的选择保存为相应字段中的数组。(userid将链接到基本用户表。)

方法2。或者我可以为每件事、玩家、团队等创建单独的表,并有固定数量的字段,比如10,将数组分解为每个单独的值,存储并放置在自己的字段中。(此代码已在运行。)(同样,userid是主键。)

方法1的优点是它有点简单,一个表,对选择的数量没有限制

方法2似乎更稳健一些。数据更加可见,可能更容易获取和检索——尽管可能不是这样

有没有人有这方面的经验,可以推荐一种而不是另一种


谢谢你的推荐和建议

嗯。方法1不适用。对于方法2,如果我理解的话,您的方法是为链接到userid的每个类别添加新记录,这样每个用户的类别就没有限制。我的方法是每个用户有一条记录,但在用户类别的顶部有十个字段——如果用户不填写,有些字段将为空。因为实际上我还有子主题,所以我的方法2还需要为每个主题创建单独的表。我的方法是否有缺陷,或者你会推荐你的方法而不是一个记录/用户,特别是处理主题ie团队和子stopic,团队名称。感谢多值字段和重复字段集同样有害。对存储在这些类型结构中的数据进行查询效率非常低,无法进行优化。您应该使用关联表来存储这些关系。这篇文章简要解释了为什么应该避免这些类型的结构。@user1260310很抱歉,一开始我误读了(或没有完全理解)你的“方法2”,我收回了那部分评论:)使用我在另一个答案中描述的方法,你可以为每种类型的东西创建关联表(用户到玩家、用户到团队等)。例如,对于每个玩家,都会在用户->玩家表中添加一行,其中包含用户ID和玩家ID(或名称)。请参见类似问题。谢谢!最后一个问题。是否应该有一个包含两个团队和玩家字段的收藏夹表,还是两个表,一个收藏夹团队,一个收藏夹玩家通过用户ID链接?后者的空单元格最少。。。