首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多级用户权限的数据库设置

多级用户权限的数据库设置
EN

Stack Overflow用户
提问于 2015-12-23 01:01:17
回答 2查看 128关注 0票数 0

我希望为具有多级用户权限的用户创建一个数据库,但我不知道如何去做。我的意思是,我希望企业的经理能够购买我的产品;这个人将被授予所有者权限,但也可以根据该许可证授予额外的用户--这些人将被授予经理或用户权限。每个级别(以及我的级别: Admin和我的员工: SuperUser)显然都有各自的权限/特权)。

更具体地说,我问的是如何设置数据库。例如,如果我的企业是公司日历/组织者,则所有者将设置部门,每个部门都有一名经理和许多用户。构建数据库的最好和最有效的方法是什么?例如,每个用户(和每个日历条目)是否必须与属于该特定所有者帐户的ID相关联?我只是有点迷失了什么是最好的方式来组织数据库,以保持一切在一起,因为我将有多个不同的所有者与他们自己的公司结构下。

我想使用MySQL和PHP。

我试图让这一切变得尽可能合乎逻辑。我想我把它弄得太难了,但我确信有一个标准可以让它提前easier....Thanks。

EN

回答 2

Stack Overflow用户

发布于 2015-12-23 01:23:19

我不太明白你到底在找什么。从我收集的信息来看,您似乎需要一个包含权限、用户和部门的数据库。在这个非常基本的示例中,我创建了3个表。(假设一个用户只能属于一个部门)

您可以在users表中设置一个外键,该外键链接到permissions表中的主键。departments表将包含user_id的外键。

您可以基于每个权限可以对您的查询和应用程序端逻辑执行的操作来创建所有逻辑。

(我无法嵌入图像,因为没有足够的代表)

票数 0
EN

Stack Overflow用户

发布于 2015-12-23 01:33:04

至少每个产品/对象在其表中都需要一个foreign_key,例如用户的id。这是必要的,并且从产品/对象设置与用户的关系。

然后这取决于你希望你的系统变得多复杂。一种简单的方法是仅使用用户表中的布尔列,如admin、editor列等,值仅为truefalse。在你的代码中,你可以使用ifcase来检查用户是否是管理员,并向他展示你的应用程序的一部分。例如,像删除链接。但是您也可以将更新和删除限制到其用户在true列中具有true值的用户。

更复杂的路由将包括表中的其他id字段,这些字段设置某物与另一物的关系。例如,您希望用户是卖家或买家,然后将seller_id和buyer_id列添加到products表中,并检查ids是否与user_id一致。但不是“那个”user_id,而是您在用户创建产品列表时保存的另一个user_id。这样你就可以保证,除了你的员工,创建这个东西的用户也有权编辑它,因为当他登录到你的系统时,产品的user_id与他的user_id (当前用户)是相同的。

您可以做更复杂的关系,但是您必须创建另一个表,并在其中保存其他ids,这些ids将某些用户与其他用户相关联。在这个表中,假设您保存了一个maintainer_id和一个maintained_id,这两个值都具有特定的user_ids值,但是通过这种方式,您可以在一个用户可以更改的对象之间建立一个关系,尽管它们属于其他用户。或者,如果你谈论的是客户,那么mainter_id将被允许向那些使用maintained_id的人写消息,比如如果有人是卖家,其他人是潜在买家。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34427004

复制
相关文章
Spring启用缓存
Spring对缓存的支持类似于对事务的支持,Spring缓存的思想是在调用方法时,会把该方法的参数和返回结果作为一个键值对存放于缓存中,下次在调用该方法时直接从缓存返回结果。
Tim在路上
2020/08/04
6790
Java内存缓存-通过Google Guava创建缓存
Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。
小码农薛尧
2019/08/27
2.8K0
Java内存缓存-通过Google Guava创建缓存
Java内存缓存-通过Map定制简单缓存
在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。
小码农薛尧
2019/08/27
3.6K1
Java内存缓存-通过Map定制简单缓存
java的IO技术中什么是I什么是O?
马克-to-win:很多老司机还搞不清什么是I什么是O。很简单,我有个土办法。以内存为单位,数据进内存叫In,出内存叫Out。读文件,是数据从硬盘进到内存,所以用in类型流来处理。
马克java社区
2021/05/06
1.5K0
java的IO技术中什么是I什么是O?
golang fmt(格式换 I O接口)
fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。
copy_left
2019/08/21
9840
最短路怎么可能尽可能地长呢?
https://www.acwing.com/activity/content/59/
Piper蛋窝
2021/08/20
4220
实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
设计如下: 在接口层传入缓存key的前缀,通过匹配的方式将能匹配到该前缀的所有key均删除。
小小工匠
2021/08/17
3510
Caffeine缓存 最快缓存 内存缓存
Caffeine是在Guava Cache的基础上做一层封装,性能有明显提高,二者同属于内存级本地缓存。使用Caffeine后无需使用Guava Cache,从并发的角度来讲,Caffeine明显优于Guava,原因是使用了Java 8最新的StampedLock锁技术。
赛先生和泰先生
2022/01/21
3K0
Caffeine缓存 最快缓存 内存缓存
Java-Java I/O流解读之基于字节的I / O和字节流
编写简单的 I / O操作很简单,仅仅涉及到很少的类和方法。 但是编写高效,便携式I / O非常困难,特别是如果我们必须处理不同的字符集。 这就解释了为什么有这么多的I / O包(在JDK 1.7中有9个)!
小小工匠
2021/08/17
1.1K0
Java-Java I/O流解读之基于字符的I / O和字符流
Java内部将字符(字符类型)存储在16位UCS-2字符集中。 但外部数据源/接收器可以将字符存储在其他字符集(例如US-ASCII,ISO-8859-x,UTF-8,UTF-16等等)中,固定长度为8位或16位, 位或以1到4字节的可变长度。 [读取“字符集和编码方案”]。
小小工匠
2021/08/17
1.8K0
Access、SQLite、HSQLDB、Sybase、MySQL、DB4O
一、Access     数据类型有些另类,而且密码太容易被攻破,性能不高,只能用在Windows程序上。     一般说来,单个表不超过10万少条记录为好,整个数据库不超过100M为好。ACCESS对数据库容量限制为2G,但超过100M后性能便 会有很大折扣。 二、HSQLDB     支持csv,配置分发容易,大数据量情况下性能不佳,这和sql执行效率无关,性能瓶颈在硬盘文件上,毕竟由于hsqldb没有在数 据文件存储上花时间,只是挂个csv。只能用于Java程序中。 三、firebird
用户1258909
2018/07/03
1.6K0
I-o-C 一篇概览
IoC(Inversion of Control )也被称之为 DI(dependency injection),名称侧重点略有不同。
WindWant
2023/05/09
1.1K0
I-o-C 一篇概览
在Google I / O 2018上观看Flutter
距离Google I / O 2018仅仅一周之遥,Flutter将在活动中展示风格,包括会话,代码,办公时间,交互式沙箱空间等等。
flyou
2019/08/06
1.8K0
在Google I / O 2018上观看Flutter
Android高效内存2:让图片占用尽可能少的内存
Android高效内存:让图片占用尽可能少的内存 一、让你的图片最小化 1.1 大图小图内存使用情况对比 大图:440 * 336    小图:220 * 168 资源目录:xhdpi 小图的高宽都是
用户1155943
2018/01/04
1.7K0
Android高效内存2:让图片占用尽可能少的内存
启用 MySQL 和 MariaDB 查询缓存
很多新手都在使用 Memcached 或者 Redis 扩展来加速服务器数据库的运行性能,其实这些扩展对于小博客的服务器来说有时候是个负担和安全隐患的,具体可以参考【理智冷静的使用 Memcached 或者 Redis】一文,那么不使用优化扩展我们如何来提升 MySQL 或 MariaDB 数据库的运行性能呢?
明月登楼的博客
2019/05/15
2.7K0
JAVA线程-CPU缓存和内存屏障(四)
1.修改态(Modified),此cache行已被修改过(脏行),内容已不同于主存,为此cache专有。 2.专有态(Exclusive),此cache行内容同于主存,但不出现于其他cache中。 3.共享态(Shared),此cache行内容同于主存,但也出现于其他cache中。 4.无效态(Invalid),此cache行内容无效,需要从主内存重新加载。
IT架构圈
2020/03/28
1.8K0
实战SSM_O2O商铺_45【Redis缓存】配置Redis在Service层加入缓存
Redis性能十分优越,可以支持每秒十几万次的读/写操作,其性能远超数据库,并且支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,它还能支持一定的事务能力,这在高并发访问的场景下保证数据安全和一致性特别有用。
小小工匠
2021/08/17
4480
[BlogCore操作文档4] MemoryCache:内存缓存
采用最新的前后端完全分离技术【 ASP.NET Core Api 6.0 + Vue 2.x 】,并结合 IdentityServer4 ,可快速解决多客户端和多资源服务的统一认证与鉴权的问题,以及整合较为完善的数据权限控制。
老张的哲学
2023/08/23
2970
[BlogCore操作文档4] MemoryCache:内存缓存
go 内存缓存
很多时候我们为了缩短单次请求的时间,就需要去分析请求在哪一步耗时比较大,一般越靠近应用层优化效果越大,后端程序就是请求到达路由解析到返回结果这一步骤了。
花落花相惜
2021/11/25
8700
磁盘:最容易被忽略的性能洼地
在没有SSD硬盘之前,大家都会觉得我们的HDD硬盘很好用,什么5400转、7200转,广告都是棒棒的。直到有一天,SSD出现了,发现启动Windows的时候,居然可以秒开,这才幡然醒悟。因此,对于外行来说,磁盘I/O性能总是最容易被忽略的,精力会更集中在CPU上。但是对于内行人来说,大家都懂得,性能无非是CPU密集型和I/O密集型。磁盘I/O就是其中之一。那么到了移动时代,我们的存储芯片性能究竟怎样呢?在讨论这个问题之前,我们来看一个测试数据。
博文视点Broadview
2020/06/11
1.2K0
磁盘:最容易被忽略的性能洼地

相似问题

用内存映射I/O管理缓存

13

I/O内存映射

11

CPU缓存是否在I/O期间刷新到内存?

25

内存映射I/O如何区分内存和I/O传输?

11

快速SQLite I/O错误

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文