问题标签 [rdbms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11624 浏览

database-design - 面向对象数据库与对象关系数据库

我想知道面向对象的数据建模与对象关系数据建模有何不同?

是不是像把面向对象和关系数据建模的优点结合起来来实现对象关系数据建模?

干杯

0 投票
17 回答
18269 浏览

database - PostgreSQL 的隐藏特性

我很惊讶这还没有发布。您在 Postgres 中知道哪些有趣的技巧?晦涩的配置选项和缩放/性能技巧特别受欢迎。

我相信我们可以击败相应MySQL 线程上的 9 条评论:)

0 投票
4 回答
8187 浏览

rdbms - 什么是 RDBMS 中的集群?

请解释一下 RDBMS 中的集群是什么?

0 投票
5 回答
2985 浏览

sql - 处理类别、子类别 - 分层数据的最佳方法是什么?

复制:

SQL - 如何存储和导航层次结构


如果我有一个客户需要类别、子类别、子子类别等的数据库,那么最好的方法是什么?如果他们只需要三个,并且总是知道他们需要三个,我可以创建三个表 cat、subcat、subsubcat 等。但是,如果他们想要更深入怎么办?我不喜欢这三张桌子,但这是我知道如何做到这一点的唯一方法。

我看过“ sql adjacency list ”,但不知道这是否是唯一可能的方法。我希望输入,以便客户可以拥有任何级别的类别和子类别。我相信这意味着分层数据。

编辑:如果可能的话,希望 sql 能够将列表重新显示出来

谢谢你。

0 投票
5 回答
3077 浏览

sql - 循环数据库关系。好,坏,例外?

一段时间以来,我一直推迟开发我的应用程序的这一部分,纯粹是因为我想以一种循环的方式来做这件事,但是从我记得我的讲师在学校告诉我的事情中感觉这是一个坏主意。

我有一个订单系统的设计,忽略了与这个示例无关的所有内容:

  • 信用卡
  • 顾客
  • 命令

我想要这样,

  • 客户可以有信用卡(0-n)
  • 客户有订单(1-n)
  • 订单有一位客户(1-1)
  • 订单有一张信用卡(1-1)
  • 信用卡可以有一个客户(1-1)(唯一的 id,所以我们可以忽略 cc 号码的唯一性,丈夫/妻子可以共享 cc 实例等)

基本上最后一部分是问题出现的地方,有时信用卡被拒绝并且他们希望使用不同的信用卡,这需要更新他们的“当前”卡,但这只能更改用于该订单的当前卡,而不是客户可能在磁盘上的其他订单。

这有效地在三个表之间创建了一个圆形设计。

可能的解决方案:要么

创建圆形设计,提供参考:

  • cc 参考订购,
  • 客户参考抄送
  • 客户参考订购

或者

  • 客户参考抄送
  • 客户参考订购
  • 创建引用所有三个表 id 的新表并在订单上放置唯一的,以便在任何时候只有一个 cc 可能是该订单的最新

本质上,两者都对相同的设计进行建模,但翻译方式不同,此时我最喜欢后一种选择,因为它看起来不那么圆,更中心化。(如果这有道理的话)

我的问题是,

  • 如果有的话,每个人的优点和缺点是什么?
  • 循环关系/依赖的陷阱是什么?
  • 这是该规则的有效例外吗?
  • 有什么理由我应该选择前者而不是后者?

谢谢,让我知道您是否需要澄清/解释任何事情。

--更新/编辑--

我注意到我所说的要求中有一个错误。在尝试为 SO 简化事情时基本上丢球了。Payments 那里还有另一个表,它增加了另一个层。问题是,订单可以进行多次付款,并且可以使用不同的信用卡。(如果您真的想知道其他付款方式)。

在这里说明这一点是因为我认为根本问题仍然是相同的,而这只确实增加了另一层复杂性。

0 投票
5 回答
5503 浏览

search - 像关系数据库一样使用 Lucene

我只是想知道我们是否可以在 lucene 中实现一些 RDBMS 功能。

示例: 1) 我有 10,000 个项目文档(pdf 文件),必须对其内容进行索引,以使它们可供搜索。2)每个文件都与一个项目有关。项目可以包含项目名称、编号、开始日期、结束日期、位置、类型等详细信息。

我必须在 pdf 文件的内容中搜索给定的关键字,但是在显示结果时,我想显示第 (2) 点中提到的项目元数据。

我的想法是在索引时将一个名为 projectId 的字段与每个 pdf 文件相关联。一旦我们得到它,我们将再次触发搜索以获取项目元数据。

这样我们可以避免重复数据。此外,如果我们想更新项目元数据,我们最终将只在一个地方进行更新。否则,如果我们将此元数据与所有 pdf 文档索引一起存储,我们最终将更新所有文档,这不是我想要的方式。

请指教。

0 投票
5 回答
1223 浏览

primary-key - 如何解析 RDBMS 中的多对多集合实体?

我正在尝试为艺术家和歌曲建模,但我有一个问题,我有一个 Song_Performance 可以由许多艺术家表演(比如二重唱),所以我有一个 Artist_Group 来代表歌曲的演唱者。

好吧,我现在在 Artist 和 Artist_Group 之间建立了多对多的关系,其中 Artist_Group 由该组中的艺术家集合唯一标识。我可以创建一个交集实体,表示艺术家参与 Artist_Group (Artist_Group_Participation?)

我无法想出如何为 Artist_Group 实体提供一个主键,该主键保留了同一组艺术家代表同一组的事实,并且缺少 Artist_Group 实体的主键意味着我缺少一个Artist_Group_Participation 实体的外键。

John Carlis 和 Joseph Maguire 的“Mastering Data Modeling”一书提到了这种形状并将其称为“Many-Many Collection Entity”,并指出它非常罕见,但没有说明如何解决它,因为显然很多一对多关系不能直接存储在 RDBMS 中。我该如何代表这个?

编辑:

看起来每个人都在建议一个交叉表,但这不是我的问题。我有这个。我的问题是强制执行约束,即您不能添加 Artist_Group 条目,其中包含的艺术家组与现有组相同,忽略顺序。我想过让 Artist_Group 的 ID 是一个 varchar,它是组成它的各种艺术家的串联,如果顺序很重要,这将解决问题,但是为“Elton John and Billy Joel”设置一个 Artist_Group 并不能阻止添加“比利·乔尔和埃尔顿·约翰”的组合。

0 投票
1 回答
222 浏览

testing - 跨多个 DBMS 供应商进行测试

接受这个查询:

在这种情况下,似乎 SqlServer 只是忽略了限定符。如果你添加一个JOIN,那么它会考虑它。

这真的不是问题,除非您想让您的查询在 DBMS 供应商中可行。例如,Oracle 会理所当然地抱怨限定符无效。

是的,我们使用 ORM 消除了很多这种情况,但我们仍然需要 JDBC 来执行某些操作(这是我们产品的本质及其对动态查询的支持)。事实上,正是因为如此,才出现了这个问题——有人将 JPA 命名查询复制到了 JDBC 提供的查询中,但留下了对象名而不是表名。

所以我想问题是:还有其他人遇到过这个吗?如果是这样,测试代码以确保它可以在“主要三个”DBMS(SqlServer、Oracle、DB2)上工作的最佳方法是什么?我们有一个 QA 团队,但似乎应该有更好的方法来对这些特质进行单元测试。

请注意,我们总是尝试强制编写 ANSI SQL 以避免出现问题,但有些事情,比如前面提到的问题,可能会漏掉

我希望这是有道理的。如有必要,我可以提供更多上下文。

TIA

0 投票
8 回答
9615 浏览

sql-server - 是否可以创建具有只读访问权限的死锁?

我有一个 VB6 应用程序通过 ADO 访问 MSSQL2000 服务器上的单个表。我正在使用只读访问(adOpenStatic、adLockReadOnly) 网络中还有其他应用程序会对表进行更改。

出于某种原因,我收到关于我的应用程序被选为死锁受害者的错误。

我真的很困惑:当我只是从一个表中读取时,为什么会出现死锁?我希望超时,因为其他应用程序的编写,但不是死锁......

有人可以对此有所了解吗?

更新:2009-06-15我仍然对这个问题的解决方案感兴趣。所以我提供了更多信息:

  • 如果我选择 adOpenForwardOnly 或 adOpenStatic 没有区别
  • 如果光标位置是客户端或服务器,则没有区别。
0 投票
5 回答
1654 浏览

delphi - 自由格式报告工具

我正在寻找免费的表格报告工具。

免费/开源是首选。

它应该在没有数据源的情况下工作,并且应该能够在页面上的任何位置打印。

我需要这个,因为我使用的是一个古老但速度非常快的半 RDBMS,它不支持我迄今为止看到的所有报告引擎所要求的数据集、数据源等概念。

它只有 2 个 DLL,带有一些针对各种语言的声明模块。

实际上,我在过去 6 年中一直在使用 ComponentOne 的 VS View,并且对此非常满意。我通常在需要打印时使用这个组件,即使在 Delphi 中也是如此。

但是对于这个特别的项目,我的老板不允许我使用任何 ActiveX,所以我在 VCL 中寻找一个好的和稳定的免费软件解决方案。