我正在开发一个软件门户,用户可以在其中添加软件作为收藏,当他们这样做时,软件将显示在他们的个人资料中。
为此,我计划执行以下操作:
“users”表中有一个名为“favorites”的单独列。当用户将软件添加为收藏夹时,将使用逗号添加软件ID,例如
"102,405,502,695,595"
为了显示我计划使用PHP的爆炸功能并在此之后查询软件名称。
我的问题是:如果用户有100个收藏夹,会发生什么?加载列表需要很长时间吗?有没有其他方法可以实现这个概念?
答案 0 :(得分:3)
从我的观点来看,这并不好,不是因为你每次都要爆炸这个清单,因为没关系。
问题是,每当有人删除1个收藏夹时,脚本必须获取所有文本,爆炸,删除该ID并再次更新。
您应该将该表格设为id|user|id_software
,每个软件都有自己的行,然后选择,更新和删除将更快更容易。
对于你的答案:如果你有1000个收藏夹,没有任何反应,如果设置,机器和操作系统都可以,那么PHP的设计和能够处理大量数据。
答案 1 :(得分:1)
您可以使用另一个表来分配用户和软件之间的关系。如果您注意到只有少数几个条目,那么在一个表中使用这样的序列化的东西是很好的。
答案 2 :(得分:0)
这是一个可怕的做法。
必须规范化您的表格。如果您不知道规范化是什么,那么您需要在开始此项目之前阅读它。
基本上,您需要三张桌子。
用户将id
,username
软件将id
,softwareName
,
UsersFavouriteSoftware将拥有一个“注册表”,您可以在其中建立联接关系。
用户表
id | userName
1 | Bob
2 | Alive
软件表
id | softwareName
1 | Firefox
2 | Chrome
3 | Internet Exploiter
加入表格
userId | softwareId
1 | 2
1 | 3
2 | 1
ID 1的用户喜欢Chrome和Internet Exploiter,您可以通过简单的连接查询获取此信息。
答案 3 :(得分:0)
我猜您不想将用户限制为最大收藏数量?
无论如何,在这种情况下,我创建了一个额外的数据库表,以某种方式像
一样表FavoritesUserRelations (int)user_id | (INT)software_id
如果您要使用Fav-Entry,例如删除收藏夹,添加新的或为显示目的排序,这种方法将使您的代码更简单。此外,您的尺寸,最大或搜索声明不受限制......