【问题标题】:Complexity of INSERT,DELETE,UPDATE operations in SQLSQL 中 INSERT、DELETE、UPDATE 操作的复杂性
【发布时间】:2018-07-21 09:32:56
【问题描述】:

我正在尝试在我的 android 应用程序中实现一个like 函数。我将存储每个项目的likes 显示在一个名为“likes”的表中。我想知道在 SQL 表中实现like 和like 的最佳方法是什么。我可以在like 上插入行,在like 上删除行,或者我可以使用额外的列'liked',其值为1,值为0不一样并首先运行 SELECT 查询以检查是否存在具有相同数据的行并将“喜欢”值更新为 1。如果用户从未喜欢过该项目,则运行 INSERT 查询以添加数据并将“喜欢”值设置为 1 . 在不同的情况下,我可以使用 UPDATE 查询将 'liked' 值设置为 0。

谁能建议我完成任务的最佳方式?

【问题讨论】:

  • 您使用的是哪个 DBMS?请标记它
  • 你自己测试不应该很简单吗?

标签: sql sql-update time-complexity sql-insert sql-delete


【解决方案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在表中添加一个新行。最初,您将聚合此表以计算项目的总点赞数。

当您的数据变得太大时,您会考虑如何更有效地存储汇总结果,可能使用触发器或存储过程。

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    相关资源
    最近更新 更多