用户数组在数据库

时间:2017-11-30 14:21:33

标签: php mysql arrays database

朋友,我需要你的帮助。 我正在使用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。但是我准备改变我的堆栈,如果它有助于解决问题。

0 个答案:

没有答案