首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于多用户数据库表的设计

关于多用户数据库表的设计

作者头像
biaoblog.cn 个人博客
发布于 2022-08-28 06:08:33
发布于 2022-08-28 06:08:33
1.4K0
举报

举例:多用户的收藏功能

场景:两个用户共同收藏了一个数据

已有数据库表:dataList, users, collect

1.最开始的构思:

根据用户的唯一id 去创建collect

即collect的主键id为用户的唯一id

collect的另外一个字段为collectData:Array

每次用户执行的收藏和取消收藏操作

都通过用户的Id去更新这个collect的collectData实现

虽然实现了我们的需求,但是有一个问题:

如果想实现分页查询怎么办?

每次用户查询对应的collect的时候,就把指定的collect查了出来,

但是如何去对这个collect的collectData进行 分页操作?

这个是很困难且不正常的需求

2.第二种想法:

在原始数据的表dataList中新增一个绑定跟用户关系的字段

即:bindUsersId

就是每次某个用户(张三)在对dataList中的某一条数据(A)进行 收藏或取消收藏的操作时

对去更新这个A的bindUsersId:Array中新增(收藏)或者移除(取消收藏)张三的id

每次查询收藏的数据时,都需要从dataList中 根据bindUsersId:Array 进行条件查询

这种也能实现我们的需求

但是细想一下:如果有1000个用户同时收藏了一条数据,那么这个bindUsersId:Array 需要绑定1000个ID??

这是非常不正常的

而且还有一种场景

如果拥有收藏数据(A)的某一个用户(张三),对这个收藏的数据A进行了编辑

也就是去编辑了dataList表中的A,那么其它收藏A的用户N ,某一天一看自己收藏的数据被动了

那也是一种非常气愤的....

综合以上加上跟一些大佬的交流

产生了第三种想法:

3.最终的想法(最优)

我们延续第一种想法的同时,

做一些优化,

首先:我们取消以用户为id作为collect的主键

因为这样会导致每个用户只能收藏一条数据,

因为主键是唯一,

优化的做法是:把收藏的数据进行存储,主键自动生成

外键即添加一个跟users关联的数据bindUsersId 就可以了,

举个例子:两个用户(张三,李四)同时收藏了一个数据(A)

那么我们的collect表中 会生成两个收藏的数据(张三A, 李四A)

这两个收藏的数据是独立,唯一的关系型字段就是bindUsersId

这个bindUsersId即表示了它属于谁(张三,李四),

这样就解决了第一种想法 分页没办法做的问题

以及第二种想法:1个数据的多个用户的归属问题...

大家一人一个糖果,而不是大家共享一个糖果,

然后 我们的需求和问题就得到完美的解决了!

感谢提供思路的大佬J (qq昵称),哈哈 学习永无止境。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【腾讯云的1001种玩法】几种在腾讯云建立WordPress的方法(Linux)(二)
ZNing
2017/02/27
7.7K0
CentOS中WordPress博客系统安装之LNMP安装(一)
介绍 WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。截至2018年4月,排名前1000万的网站中超过30.6%使用WordPress。WordPress是最受欢迎的网站内容管理系统。全球有大约30%的网站都是使用WordPress架设网站的。 LNMP 一组开源软件简称,它们通常安装在一起以使服务器能够托管动态网站和 Web 应用程序。这个j简写实际上是一个首字母缩写词,它代表Linux 操作系统,带有Nginx Web 服务
玖柒的小窝
2021/10/21
5450
CentOS中WordPress博客系统安装之LNMP安装(一)
搭建含有腾讯云插件的WordPress网站
WordPress是一款能让您建立网站、博客或应用的开源软件。WordPress是目前最强大的建站平台之一,有超过38%的网站都在使用WordPress,小到兴趣博客,大到新闻网站。 原生WordPress是传统的B/S架构,不带云原生能力。腾讯云开发了免费的WordPress插件,使WordPress无缝集成了腾讯云的云原生能力(例如:存储、加速等)
贾新军
2023/01/04
2.5K1
搭建含有腾讯云插件的WordPress网站
1+X平台运维与开发试题 - LNMP+WORDPRESS
配置ip,VMNET8,192.168.200.0/24,关闭防火墙,关闭SElinux
kenvie
2022/01/20
3590
40张步骤截图教你用腾讯云服务器配置LNMP环境并安装wordpress
作者:liuxinig 来源: http://www.cnblogs.com/liuxinig/p/5928361.html 本文有点长,原因是每一步都有截图占的篇幅较长,其实并不麻烦,并不复杂。所有
小小科
2018/05/02
4.6K4
40张步骤截图教你用腾讯云服务器配置LNMP环境并安装wordpress
CentOS7.2基于LNMP搭建Wordpress
编辑配置文件 vi /etc/nginx/conf.d/default.conf
指剑
2022/07/15
4090
CentOS7.2基于LNMP搭建Wordpress
CentOS7.2基于LNMP+WordPress离线安装
编辑配置文件 vi /etc/nginx/conf.d/default.conf
指剑
2022/07/15
4455
CentOS7.2基于LNMP+WordPress离线安装
腾讯云上业务弹性实践案例
某客户在中秋及国庆期间进行推广活动,业务访问量是平常的几倍,由于访问量的突增,无法及时进行扩容来规避,虽客户内部已提前进行容量评估和预留, 也采用自建的自动化扩容机制,其时效性在突发情况下未能达到预期,导致本次双节活动产生不小的业务损失。
Rocky-QQ
2023/10/24
9120
腾讯云上业务弹性实践案例
【腾讯云的1001种玩法】新手教程:腾讯云CentOS7安装LNMP+wordpress
饶文津
2017/04/13
3.5K0
Centos 7配置LAMP「建议收藏」
LAMP指的Linux(操作系统)、Apache HTTP 服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的 优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
全栈程序员站长
2022/08/18
6550
Centos 7配置LAMP「建议收藏」
Nextcloud私有云盘在Centos7下的部署笔记
搭建个人云存储一般会想到ownCloud,堪称是自建云存储服务的经典。而Nextcloud是ownCloud原开发团队打造的号称是“下一代”存储。初一看觉得“口气”不小,刚推出来就重新“定义”了Cloud,真正试用过后就由衷地赞同这个Nextcloud:它是个人云存储服务的绝佳选择。可以说Nextcloud 是一款自由 (开源) 的类 Dropbox 软件,由 ownCloud 分支演化形成。它使用 PHP 和 JavaScript 编写,支持多种数据库系统,比如 MySQL/MariaDB、PostgreSQL、Oracle 数据库和 SQLite。它可以使你的桌面系统和云服务器中的文件保持同步,Nextcloud 为 Windows、Linux、Mac、安卓以及苹果手机都提供了客户端支持。同时,Nextcloud 也并非只是 Dropbox 的克隆,它还提供了很多附加特性,如日历、联系人、计划任务以及流媒体 Ampache。
洗尽了浮华
2022/03/28
2.5K0
Nextcloud私有云盘在Centos7下的部署笔记
通过Yum快速部署LAMP与LNMP
LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案.LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网站系统解决方案.编译安装费时费力有时还会出错误,下面我们将通过Yum仓库,快速构建LANMP网站环境.
王瑞MVP
2022/12/28
6320
运维之LNMP环境安装与配置
描述:1)LNMP是目前互联网主流的WEB服务器架构,主要是由Linux+Nginx+MYSQL|Mariadb+PHP组合,可以发布企业门户网站代码(PHP动态网页),运维人员要能够独立构建LNMP平台。
全栈工程师修炼指南
2022/09/28
9460
运维之LNMP环境安装与配置
玩转CVM之搭建WordPress站点
WordPress 是一款常用的搭建个人博客网站软件,该软件使用 PHP 语言开发。您可通过在腾讯云服务器的简单操作部署 WordPress,发布个人博客。
苏欣
2019/07/26
3.7K0
Fedora 21 安装 LAMP 主机服务器
不久前 Fedora 21 发布了,版本有三个,其中有一个服务器版本,原文提示采用的就是 Server 服务器版本,先看看 LAMP 是 Linux、Apache、MySQL/MariaDB、PHP 的简称。
星哥玩云
2022/07/03
1.9K0
Fedora 21 安装 LAMP 主机服务器
腾讯云服务器搭建 WordPress站点『图文教程』
WordPress 是一款常用的搭建个人博客网站软件,该软件使用 PHP 语言开发。您可通过在腾讯云服务器的简单操作部署 WordPress,发布个人博客。
用户2416682
2019/07/23
8.9K1
CentOS7部署WordPress
依次执行以下命令,进入/usr/share/nginx/html/目录,并下载与解压 WordPress。
ruochen
2021/12/01
1.1K0
CentOS 7.2 安装Nginx服务
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/53018112
shaonbean
2019/05/26
4090
【玩转腾讯云】Centos+PHP+Nginx+Laravel搭建服务
登录服务器,进入目录 首先进入根目录,查看文件夹内容 屏幕快照 2019-04-01 上午11.52.58.png 一.安装Nginx 1.yum install epell-release -y 屏幕快照 2019-04-01 上午11.55.15.png 如果出现Loaded plugins: fastestmirror 1.修改插件的配置文件 vi  /etc/yum/pluginconf.d/fastestmirror.conf   enabled = 1 由1改为0,禁用该插件 2.
无忧366
2019/04/04
3.4K0
【玩转腾讯云】Centos+PHP+Nginx+Laravel搭建服务
PHP安装包TS和NTS的区别-Centos7 LANMP环境搭建(最完善版本)
Linux上的PHP同样有NTS和TS版本的区别,默认是NTS版本,configure时加上–enable-maintainer-zts则编译为TS版本
全栈程序员站长
2022/07/18
2.9K0
PHP安装包TS和NTS的区别-Centos7 LANMP环境搭建(最完善版本)
推荐阅读
相关推荐
【腾讯云的1001种玩法】几种在腾讯云建立WordPress的方法(Linux)(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档