朋友,我需要你的帮助。 我正在使用php + mysql。但我遇到了一个小问题。我需要在DB中存储一个特殊的数组,每个用户都拥有自己的数据,这些数据只属于他。当用户使用应用程序时,每次都更改一个数组。因此,必须经常更改数组。
简而言之,我正在创建一个教育应用程序。我们有一个用于学习(id,item_name)的项表和一个用户 (id,user_name)。 每当用户从项目表中学习新项目时,我们必须在用户的数组中添加该项目,该项目存储他所学到的所有项目。
我的问题是:如何在数据库中实现数组的最佳存储?
我脑子里只有两种可能的变种:
1)创建新的个人表 user_item_relationship (id,user_id,item_id)
变体的问题是:我正在计划应用程序是高负载的。每次我必须从数据库中获取特定用户学习的所有项目。每个用户将拥有大约500个项目。但是,如果应用程序至少有10000个用户,那么表格将是巨大的(5 000 000行,可能更大)。因此,当应用程序拥有许多用户时,变体会非常糟糕。
2)我目前使用的第二个变体是:
不创建其他表,只是将JSON中任何用户的学习项目数组存储在用户表中,因此该表看起来像(id, user_name,learnt_items)。
在变体中,应用程序的性能并不取决于用户数量。它仅取决于用户学习了多少项。但方法的减号是:每次,当用户学习新项目时,我必须从DB获取巨大的JSON字符串,解码它,向数组添加新项目,再次编码并通过发送绿色更新数据库中的字段回来的文字。问题是:如果用户学习了很多项目,它会变得越来越慢......
也许有更好的东西?也许有能力只将一个项目推送到DB中的用户数组?我只是一直在使用mysql。但是我准备改变我的堆栈,如果它有助于解决问题。