首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在数据库设计中对多个面向对象的组合关系进行建模?

如何在数据库设计中对多个面向对象的组合关系进行建模?
EN

Stack Overflow用户
提问于 2019-05-01 20:22:50
回答 1查看 439关注 0票数 1

我有两个表,它们可以提供一个相关的记录,表示由下面的类图近似建模的一些项目。这是高度简化的,每个源都是各自不同的复合模型。

从数据库而不是OOP的角度考虑这一点,items表包含任何可能项目的记录。如果您想知道小部件的定义是什么或者gewgaw的定义是什么,这就是item表的目的。Source*表代表物理项目的位置类型,每个记录代表一个特定的位置。Source*表还包含大量不相交的信息。

源代码中包含小部件或gewgaw的特定实例的集合,即Source1有10个不同的小部件和3个不同的gewgaw,而Source2目前可能只包含一个不同的小部件。

为了表示这种关系,如果只存在一个源表,我通常会使用一个透视表,并将源id和项目id作为外键。

关于如何表示第二种类型的商店,我的第一个想法是创建另一个数据透视表,即item_source2,然后当我需要统计汇总库存数字时,在item_source1和item_source2之间执行联合。

这看起来并不是特别优雅,违反了DRY,并引入了一个可能不需要的联合。

下一个想法是对item_source1表进行泛化,使其也具有Source2.id键的字段。实际上,对于任何给定的记录,只有Source1.id或Source2.id中的一个是有效的引用,而另一个必须为空-一个特定的小部件不能同时存在于两个位置。

从编程的角度来看,我可以创建逻辑来测试和实施这种设计,但我很清楚这不是最佳实践,但我看不到如何通过数据库设计来解决这个问题。

我将在Laravel模式中实现这一点,但也许理解设计方面在这里更为关键。

EN

回答 1

Stack Overflow用户

发布于 2019-05-02 05:23:21

根据philipxy的建议,我猜你应该实现这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-----------+    +------------+
|source1     |   |source2     |
+------------+   +------------+
+ PFK mykey  +   + PFK mykey  + <--- both reference "source"
+------------+   +------------+

+-----------+
|source     |
+-----------+
+ PK mykey  +
+-----------+

+----------------+
|shared relation |
+----------------+
+ FK myKey       + <--- references "source"
+ other attribs  +
+----------------+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55942271

复制
相关文章
安全部署MongoDB最佳实践
#1: 不要把MongoDB服务器部署在互联网上或者DMZ里 MongoDB和其他的后端服务器一样,不应该部署在DMZ里,更不用说直接部署在互联网上面。你应该把MongoDB部署在公司内部网络,使用路由器或防火墙技术把MongoDB服务器保护起来, 不允许直接从互联网访问MongoDB的端口。 通过这种方式来防止未授权的访问及DDoS攻击等。 另外,如果MongoDB所在的服务器上有多个网卡,建议使用bind_ip来进一步限制MongoDB会在哪一个网络接口上监听。 #2: 为你的MongoDB实例启用安全
老七Linux
2018/05/09
1.5K0
【最佳实践】巡检项:云数据库(MongoDB)实例到期
该巡检项会检查 Mongo DB实例的到期情况,若腾讯云数据库的付费类型为包年包月,未配置自动续费且即将到期,则会触发该隐患的通知。实例过期后可能会导致业务访问受损。
ivesjiang@DBA
2022/04/07
1.7K0
性能最佳实践:MongoDB索引
在本系列中,我们将讨论在大规模数据下实现高性能,需要在许多重要维度上进行考虑的关键因素,其中包括:
MongoDB中文社区
2020/10/10
3.5K0
性能最佳实践:MongoDB索引
HDFS部署最佳实践
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- HDFS是组成Hadoop平台的关键服务,部署的正确与否直接影响到你整个集群的健康状态,以及所有应用能否正常的运行或者高效的运行,包括SQL,MapReduce,Spark等。前面Fayson也介绍过《CDH网络要求(Lenovo参考架构)》,《CDH安装前置准备》,《如何为Had
Fayson
2018/07/12
3.1K0
【最佳实践】MongoDB导出导入数据
具体导出的语法比较简单,此处不再赘述,本文重点描述导入的优化过程,最后给出导入的最佳实践。
雪人
2023/10/09
6810
DevOps最佳实践之应用开发和部署
本系列内容是我们在不同项目的维护过程中总结的关于DevOps/SRE方面的最佳实践,我们将致力于在项目上尽最大的努力来推行这些最佳实践。我们希望这些最佳实践能对项目的稳定运营提供帮助,也希望刚接触DevOps/SRE的新人能通过学习这些最佳实践来提升自己在这方面的水平。
ThoughtWorks
2023/04/28
5070
DevOps最佳实践之应用开发和部署
加速Kubernetes部署的最佳实践
在本文中,我们将介绍扩展 Pod、副本控制器(Replication Controller)以及加速 Kubernetes 部署(Deployment)的最佳实践。
深度学习与Python
2021/09/22
5050
避免Java应用程序中NullPointerException的技巧和最佳实践
Java中的NullPointerException是我们最经常遇到的异常了,那我们到底应该如何在编写代码是防患于未然呢。下面我们就从几个方面来入手,解决这个棘手的问题吧。
淡定的蜗牛
2019/10/29
1.1K0
SpringBoot 打包部署最佳实践
Spring Boot目前流行的java web应用开发框架,相比传统的spring开发,spring boot极大简化了配置,并且遵守约定优于配置的原则即使0配置也能正常运行,这在spring中是难以想象的。spring boot应用程序可以独立运行,框架内嵌web容器,使得web应用程序可以像本地程序一样启动和调试,十分的方便,这种设计方式也使得spring boot应用程序非常适合容器化进行大规模部署。生态方面,spring boot提供了非常丰富的组件,目前流行的java web框架基本都有spring boot版本,生态十分庞大,是目前java web开发最好的方案。
逆锋起笔
2021/09/29
4.2K0
SpringBoot打包部署最佳实践
Spring Boot目前流行的java web应用开发框架,相比传统的spring开发,spring boot极大简化了配置,并且遵守约定优于配置的原则即使0配置也能正常运行,这在spring中是难以想象的。spring boot应用程序可以独立运行,框架内嵌web容器,使得web应用程序可以像本地程序一样启动和调试,十分的方便,这种设计方式也使得spring boot应用程序非常适合容器化进行大规模部署。生态方面,spring boot提供了非常丰富的组件,目前流行的java web框架基本都有spring boot版本,生态十分庞大,是目前java web开发最好的方案。
Bug开发工程师
2020/04/22
3.6K0
SpringBoot打包部署最佳实践
应用多环境部署的最佳实践
前言 日常开发中,开发者通常会有应用多环境部署的需求,一般会在如下场景中出现: 研发流程:企业为了保障服务的稳定性,会在研发流程上要求遵守这样的工作流:测试环境 → 预发环境 → 生产环境。应用需要部署到多个环境中,由各环境的人员进行相关的测试验证工作:研发在测试环境中开发、调试应用,测试同学在预发环境中验收待发布的版本,SRE(网站可靠性工程师) 在生产环境管理应用等等。 稳定性保障:为了保障应用服务的稳定性,架构师通常在构建高可用解决方案时,做一些冗余部署,方便故障出现时,快速切到备用的服务,
腾讯云中间件团队
2021/10/27
1.9K0
vue项目部署的最佳实践
这两个问题可以从很多方面进行优化,今天我就从前端页面部署阶段来优化一下这两个问题。PS:以下内容都基于vue-cli3+。
winty
2020/07/15
1.7K0
vue项目部署的最佳实践
最佳实践| 一文读懂《MongoDB 使用规范及最佳实践》原理
点击下方公众号关注并分享获取 MongoDB 最新资讯 本文福利 · 分享有奖 为了感谢本公众号读者的支持,将本文章转发到朋友圈集赞满10个,就可获得社区定制马克杯套盒1份! 社区根据发送截图时间先后的前 10 名用户进行发放(每个 ID 仅参与一次哦~) 扫描文末二维码或添加小助手微信小芒果(ID:mongoingcom)凭截图领取~ 注:活动截至时间:9 月 9 日18:00 ---- 一、MongoDB 使用规范与限制 MongoDB 灵活文档的优势 灵活库/集合命名及字段增减 同一字段可存储不
MongoDB中文社区
2022/09/08
2.4K0
最佳实践| 一文读懂《MongoDB 使用规范及最佳实践》原理
MongoDB最佳实践系列-几个问题梳理和复盘
工作中主要负责的系统主要以MongoDB数据库为主,开发过程中积累了一些经验和实际使用case,前一段时间把相关的场景整理了一下,组织了几篇文章。
needrunning
2019/08/05
5650
MongoDB最佳实践系列-几个问题梳理和复盘
Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!
作者 | 朱瑜坚 腾讯云后台开发工程师 Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位。本文即基于最佳实践的 Metrics 设计方法,结合具体的场景实例——TKE 的网络组件 IPAMD 的内部监控,以个人实践经验谈一谈如何设计和实现适合的、能够更好反映系统实时状态的监控指标(Metrics)。该篇内容适于 Prometheus 或相关监控系统的初学者(可无任何基础了解),以及近期
腾讯云可观测平台
2020/06/05
2.7K0
Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!
Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位。本文即基于最佳实践的 Metrics 设计方法,结合具体的场景实例——TKE 的网络组件 IPAMD 的内部监控,以个人实践经验谈一谈如何设计和实现适合的、能够更好反映系统实时状态的监控指标(Metrics)。该篇内容适于 Prometheus 或相关监控系统的初学者(可无任何基础了解),以及近期有 Prometheus 监控方案搭建和维护需求的系统开发管理者。通过这篇文章,可以加深对 Prometheus Metrics 的理解,并能针对实际的监控场景提出更好的指标(Metrics)设计。
腾讯云原生
2020/05/22
3.7K0
大禹高防最佳部署实践
大禹高防产品由于其功能特点,一般都是置于业务入口处,业务对高防产品的接入质量较为敏感.同时因为客户业务的多样性,在各个场景下大禹产品的最佳接入方案也成为部署架构中的重要一环,该文章将对常见业务部署架构下高防产品接入的最佳实践做个说明.
安轲
2020/11/12
1.7K0
Nacos 集群部署模式最佳实践
Nacos 支持两种部署模式:单机模式和集群模式。在实践中,我们往往习惯用单机模式快速构建一个 Nacos 开发/测试环境,而在生产中,出于高可用的考虑,一定需要使用 Nacos 集群部署模式。我的上一篇文章《一文详解 Nacos 高可用特性》提到了 Nacos 为高可用做了非常多的特性支持,而这些高可用特性大多数都依赖于集群部署模式。这篇模式文章便是给大家介绍一下,在实践中可以被采用的几种集群部署模式,无论你是希望自行搭建 Nacos,还是希望对 MSE 商业版 Nacos 有一个更加深刻的理解,我都很乐意跟你分享下面的内容。
kirito-moe
2021/01/04
2K0
Nacos 集群部署模式最佳实践
Grafana 高可用部署最佳实践
Grafana 默认安装是单副本,非高可用部署,而 Grafana 自身是支持多副本高可用部署的,本文介绍其配置方法以及已经安装的 Grafana 如何迁移到高可用架构。
imroc
2022/08/03
2.3K0
Grafana 高可用部署最佳实践
Nginx Ingress on TKE 部署最佳实践
开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高。Nginx Ingress 有多种部署方式,本文将介绍 Nginx Ingress 在 TKE 上的一些部署方案,这几种方案的原理、各自优缺点以及一些选型和使用上的建议。
imroc
2020/08/07
1.3K0

相似问题

在AWS ec2实例上部署Node应用程序和php应用程序的最佳实践

15

mongodb,express.js应用程序部署最佳实践

21

在亚马逊网络服务ec2实例上部署nodejs应用程序的最佳实践

16

在EC2上部署代码的最佳实践

10

mongodb和expressjs的最佳实践

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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