mysql 标记_mysql-徽章/标记内容自用户上次看到以来已...

对于“什么用户已经看到了什么项目”来说,它看起来像是多对多的关系,最好用正好有两列的表来实现–在用户表中插入外键,在项目表中插入外键.创建项目时,您尚未向该表中添加条目(除非您可以将某个用户标识为被视为已查看该项目的创建者,在这种情况下,您确实要添加该条目)-您添加了一个条目(U,P)每次发生“用户U看到项目P”.修改项目后,请删除表中与该项目有关的所有条目(同样,如果您知道谁,则可能是正在进行修改的用户的条目除外).

需要该表的架构和我用文字概述的操作的SQL吗?

编辑:一个注释者请求了SQL,因此(假设是InnoDb,在mysql的情况下),假设表user和project分别具有int主键uid和pid:

create table Seen (uid int, pid int,

foreign key uid references user(uid) on delete cascade,

foreign key pid references project(pid) on delete cascade,

primary key (uid, pid))

当修改了一个具有pid为P的现有项目时,因此现在没有用户被视为“看到”了,请从Seen的pid = P处删除(即,从该表中删除所有P的条目);如果修改是由用户U进行的,因此实际上认为用户U已看到它,则可以将uid!= U添加到delete的where子句中.

要标记某个用户U现在已经看到项目P的事实,请将ignore插入到Seen(uid,pid)值(U,P)中(忽略部分的意思是“如果该行已经存在,则不执行任何操作”,以便记录“见过”的情况不止一次是无害的,尽管当然是多余的).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值