首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为每种需要批准的关系类型定义一个表,而不是定义一个泛型表以适应所有的关系。

为每种需要批准的关系类型定义一个表,而不是定义一个泛型表以适应所有的关系。
EN

Stack Overflow用户
提问于 2015-08-26 08:12:54
回答 2查看 69关注 0票数 1

我正在为mysql 5.5中的一个应用程序设计一个数据库,该应用程序在用户表和业务表之间具有多到多的关系,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user
----
user_id (PK)

handle

email

password

password_salt

created_at

updated_at


business
--------
business_id (PK)

business_name

website

created_at

updated_at

updated_by

为该表定义了以下桥接表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user_business_relationship
--------------------------
user_id (FK) (PF)

business_id (FK) (PF)

但是,在用户与业务相关联并将关系记录在user_business_relationship表中之前,业务需要得到批准。

因此,我定义了以下审批人表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(option 1)
--------

user_business_relationship_approver
-----------------------------------
user_id (FK) (PF)

business_id (FK) (PF)

approver_id (FK) (PF)

status |requested|approved|rejected|

updated_at

我的问题如下:

我知道,当我扩展我的数据库设计时,我将遇到其他类型的情况,在这些情况下,我需要使用需要另一个表的相同的审批工作流,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user_promotions_relationship_approver
-------------------------------------

and so on

因此,您建议我为每种关系类型定义单独的审批人表,还是只为任何需要批准的关系类型定义一个泛型审批人表比较好?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(option 2)
----------

relationship_approver
---------------------
requestor_id |user_id| (PK) (PF)

request_id |business_id|promotion_id|etc| (PK) (PF)

approver_id (PF) (PF)

request_type

status

updated_at

updated_by

我也将感谢关于我目前的设计的任何其他反馈意见。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-26 08:25:54

如果您有多个审批者,并且需要它们与多个事务相关联,则使用的方法是好的。

由于您关注可伸缩性,我将使用选项1和2的组合。

换句话说,我会采用这种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user_business_relationship_approver

user_id (FK) (PF)
business_id (FK) (PF)
approver_id (FK) (PF)
status |requested|approved|rejected|
updated_at

但也加入了这个领域

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
request_type

事实上,拥有一个控制表来管理类型可能是个好主意(在这些情况下,这是我个人的选择)。

所以你会有一张这样的桌子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
request_type
type_id (PK)
type_name

然后type_id也会以FK的身份在user_business_relationship_approver上生活

这样,如果您有一个新的请求类型,您可以简单地将它添加到request_type表中,它将成为为另一个表选择的一个选项。

票数 0
EN

Stack Overflow用户

发布于 2015-08-26 08:16:24

我只需在主关系表中定义一个属性状态字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user_business_relationship

user_id (FK) (PF)
business_id (FK) (PF)
status |requested|approved|rejected|

如果这样做,则不需要任何额外的表来处理审批。您还可以添加可能需要的更多字段,以标识请求者、审批者、请求日期、批准日期等。

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

https://stackoverflow.com/questions/32231651

复制
相关文章
Javascript闭包实现Ajax在for循环中正常运行
假设我们现在需要在一个for循环中通过异步的方式向一个后端php程序请求数据,常规的写法Ajax是无法正常工作的,网上也有不少的解决方案,这里提供一个闭包方案,详细如下:
魏杰
2022/12/23
6240
Apache编译后无法正常工作
因为某个场景的需求,要在一个国产系统Rocky4.2(国产凝思4.2操作系统)上安装Apache,虽说此系统是基于Redhat 5.8开发的,但是发现yum安装源包管理,RPM命令倒是能用,但是底层依赖完全没有,这就尴尬了,so,只能源码编译安装了。
后场技术
2020/09/03
2.8K0
vue在IE下无法正常工作,Promise未定义?
用vue写了一个日历组件,在Firefox、Edge、Chrome以及360等浏览器极速模式中运行一切正常,如图:
Yiiven
2022/12/15
4.2K0
vue在IE下无法正常工作,Promise未定义?
js动态绑定事件,无法使用for循环中变量i的问题
每天不是在写 bug,就是在解 bug 的路上~更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
小闫同学啊
2020/07/14
3.9K0
tree组件在for循环中无法使用getCheckedNodes这个方法
原理: 通过鼠标点击拿到选中的id,然后判断数组中存不存在这个id,有就删除,没有就添加这个id;
用户4344670
2019/08/28
3.5K0
tree组件在for循环中无法使用getCheckedNodes这个方法
K3组件kdsvrmgr无法正常工作
1.在服务器上创建一个用户名和口令,和客户端登陆的用户名和口令一致的;  2.通过网上邻居访问服务器,如果没有提示输入用户和密码,那么网络没问题;  3.看COM+和DTC服务有没有设置好;  4.是XP sp3系统或Home系统的话,可能不稳定;  5.再者看感染病毒没有。 。
py3study
2020/01/08
4.6K0
Google Maps JSAPI V3
    1. 不再需要API Key 2. 指定sensor传感器参数,检测到用户当前位置 3. 针对移动设备(IPhone设备和Android系统)的开发 4. 支持本地化 5. 版本管理
py3study
2020/01/08
1.1K0
如何使用AngularJS和PHP为任何位置生成短而独特的数字地址
邮政地址通常很长,有时很难记住。在许多情况下,需要较短的地址。例如,能够发送仅由几个字符组成的短地址可以确保更快地提供紧急救护车服务。Pieter Geelen和Harold Goddijn 于2001年开发了Mapcode系统,以便为世界上任何物理地址创建简短地址。
谢鸢
2018/11/05
13.2K0
Tcplayer 在ios无法正常播放直播流
var player = new TcPlayer('id_test_video', {
用户6942005
2020/12/21
1.9K9
程序化的事件侦听器
也就是说,在其中一个页面中我们使用uni.on或者uni.once,在另一个页面中就可以使用uni.emit进行调用,前提是uni,on或者uni.
阿超
2022/08/17
1.4K0
程序化的事件侦听器
使用TamperMonkey解决Google被墙stackoverflow无法正常使用的问题
Stackoverflow是广大程序猿赖以生存的工具之一,在stackoverflow搜索技术问题得到答案的质量和正确率远远高于其他平台。但是这么一个好网站居然因为Google被墙而无法正常使用(无法登录,无法评论、回答问题等)着实让人不爽呀。以前还有VPN可以用的,现在大部分VPN都被查封了。。程序员的日子真的是越来越难过了呀。。所以我下决心想办法自己解决这个令人头疼问题。
MudOnTire
2019/05/26
2.6K0
为什么redis哨兵集群只有2个节点无法正常工作?
由于redis的响应速度快,每秒支持的并发极高(号称10万),现在redis越来越流行了
JAVA葵花宝典
2019/11/08
7.9K1
Javascript For循环中的重难点
如果大家有过Python的基础,一定知道python中的for循环。同理,javascript是Web的编程语言,所以javascript中也存在for循环。并且两者的作用也一样:如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。下面介绍JS中For循环的重难点。
算法与编程之美
2022/02/17
7650
SwiftU:在循环中创建视图
通常在一个循环中创建多个SwiftUI视图。例如,我们可能想要遍历一系列名称,并让每个名称成为文本视图,或者遍历一系列菜单项,并将每个名称显示为图像。
韦弦zhy
2020/03/20
2.2K0
for 循环中实现多个点击事件 原
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
8720
安装ElasticSearch无法正常启动
在用docker安装 ElasticSearch 时,能正常创建容器,返回容器ID,但却无法正常启动,使用浏览器访问 127.0.0.1:9200 时无法访问,使用 docker logs 查看错误日志,发现报了两个错:bootstrap checks failed,下面分别是这两个错误的解决方法。
子润先生
2021/06/23
3.7K0
安装ElasticSearch无法正常启动
在用docker安装 ElasticSearch 时,能正常创建容器,返回容器ID,但却无法正常启动,使用浏览器访问 127.0.0.1:9200 时无法访问,使用 docker logs 查看错误日志,发现报了两个错:bootstrap checks failed,下面分别是这两个错误的解决方法。
Petrochor
2022/06/07
3.1K0
安装ElasticSearch无法正常启动
jira无法正常显示图片
jira安装之后,图片在富文本编辑器内能正常显示,但是在附件内无法显示,如果查看会发现图片的连接是127.0.0.1.
obaby
2023/02/23
2.5K0
jira无法正常显示图片
点击加载更多

相似问题

Google Maps API - InfoBubble的事件侦听器无法工作

40

Google Maps Marker Clusterer无法正常工作

10

Google Maps API在safari下无法正常工作

16

Google Maps标记事件侦听器不工作

12

Google Maps API -事件侦听器

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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