我正在尝试在我的android App中实现一个like函数,我将在名为'likes'的表中存储显示的每个项目的likes。我想知道在SQL表中实现like和different的最佳方法是什么。我可以在like上插入INSERT行,不喜欢上DELETE行,或者我可以使用额外的列'liked',其中like和value的值分别为1和0不像,先运行SELECT查询以检查是否存在具有相同数据的行,并将UPDATE“喜欢”的值更新为1。如果用户从不喜欢该项目,则运行INSERT查询以添加数据并将“喜欢”的值设置为1在不同方面,我可以使用UPDATE查询将“喜欢”值设置为0。
有人可以建议我做我的工作的最好方法吗?
答案 0 :(得分:1)
问题的答案取决于您要对数据进行的处理。如果您只想允许一个用户喜欢/不喜欢某件商品,并记录喜欢和不喜欢的总数,那么您可以使用update
。
items
表中会有一列,也许叫做likes
。对于“喜欢”,将增加;对于“不同”,将减少。
我认为这种功能还不够,您真的想保留每个“喜欢”和“不喜欢”的记录。这表示一个表,例如:
create table userLikesItem (
userLikesItemId int auto_increment primary key, -- "auto_increment" depends on the database
userId int references users(userId),
itemId int references items(itemId),
like int check (like in (1, -1)),
createdAt datetime default current_timestamp
);
相同/不同将导致insert
在表中插入新行。最初,您将汇总此表以计算商品的喜欢总数。
当数据太大时,您可能会考虑使用触发器或存储过程来更有效地存储汇总结果的方法。