问题标签 [relational]

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 投票
2 回答
189 浏览

database - 跟踪数据库中修改的元组的最佳方法是什么?

我目前正在从事一个项目,在该项目中我必须跟踪关系数据库中修改的元组。这应该包括更新的元组,但也包括插入和删除的元组。我的问题是实现这一目标的最佳方法是什么?我有几个自己的想法,但也许有一些我没有想到的更简单/更好的方法,或者已经存在一个可以做到这一点的项目。

该项目的最终目标是适用于不同供应商的关系数据库,但第一个实现将使用 MySQL 数据库。以后可以支持其他数据库系统。但是,如果适用于 MySQL 的解决方案可以轻松地适应另一个数据库,那就太好了。

我的第一个想法是解析日志文件。但是,我不确定这些日志文件是否包含实际修改的元组,而且我可以想象这些日志文件并不总是可用(例如在共享主机上)。

我的第二个想法是在应用程序级别拦截查询。当执行 INSERT、DELETE 或 UPDATE 查询时,可以解析这些查询,并且可以预先确定它们将影响的元组。对于 INSERT 操作,这只是插入的元组,对于 DELETE 或 UPDATE 操作,可以通过在新的 SELECT 语句中应用 WHERE 子句来识别元组。

最后,我想补充一点,在这个开发阶段,性能并不是一个重要因素。

如果需要更多详细信息,我很乐意提供。

0 投票
2 回答
242 浏览

mysql - 如何构建关系数据库?数据

我需要跟踪得分以及得分的对象。以前,我使用一个看起来像这样的平面文件数据库(那是一团糟)来做到这一点:

每个团队都有一行和一列,我猜整个事情变成了一个图表。现在我也可以这样做,MySQL 也是如此,但它会变得臃肿,并且会迫使每一行有一个荒谬的列数。

我觉得我必须错过一些其他更简单的方法来做到这一点。有人可以帮忙吗?

0 投票
1 回答
351 浏览

c# - 高度可扩展项目的设计问题 - 牢记最佳实践

开发环境是 C# 3.5,带有 SQL Server 2008 数据库和实体框架。

想象一下,您有一个名为 Sign 的类和一个表,它表示由您的软件需要控制的第三方创建的物理电子标志。您还有一个名为 SignDriver 的类,它负责与标志进行实际通信。标志的属性/列表示标志驱动程序正确与标志对话所需的可配置信息。

一切都很好,你已经非常彻底地拍了拍自己的背。然后需要与不同的星座交谈。但是,此标志的工作方式与前一个不同,需要您的 Sign 类和表来存储其他信息。假设需要存储 5 个新事物(列/属性),但不幸的是,第一种类型的符号不需要这 5 个事物。然后您会发现,当您要控制每种类型的 10 个符号时,您的表中有许多 NULL 值。

您的域模型会不断增长,直到您拥有更多像 Sign 这样的类,每个类都代表问题域的不同部分,并且每个类都在数据库中具有相应的表。每个班级都面临着收集其类型的共同信息的相同问题,但根本不能很好地满足每种类型的专业化。

你意识到你的问题的性质意味着将有更多类型的迹象需要控制,以及更多类型的其他实体需要迎合。您需要一个更可扩展的模型。

对于这样的系统,最好的前进方式是什么?

我已经与我的同事详细讨论了这个问题,并且真的很想知道解决此类问题的最佳方法是什么。特别是因为这似乎是许多人过去会面临的问题。

以下是我们提出的选项以及每个选项的一些要点:

  • 为每个实体创建n个“类型”类和表,以与其共享 1 对 1 关系。
    • 非常继承-y。
    • 扩展时最耗时。
    • 很多表。
  • 为每个实体创建一个“扩展属性”表来保存键值对。
    • 参照完整性。
    • 可扩展。
  • 创建一个全局“扩展属性”表来存储任何实体的属性。(架构:entityType、entityId、key、value、dataType)
    • 超级可扩展。
    • 不能与现有表具有参照完整性。
    • 看起来实体框架不能很好地处理这个问题。

你会做什么,为什么?

非常感谢任何帮助。干杯。

0 投票
2 回答
3398 浏览

php - 使用 Doctrine ORM DQL (NOT IN) 排除行

我正在使用 codeigniter 和教义构建一个聊天应用程序。

表:
- 用户
- User_roles
- User_available

关系:
一个用户有很多角色。一个 user_available 有一个用户。

可供聊天的用户将在 user_available 表中。

问题:
我需要让 user_available 中没有 role_id 7 的所有用户。

所以我需要在 DQL 中表达类似的东西(这甚至不是 SQL,只是用文字):

SELECT * from user_available WHERE NOT user_available.User.Role.role_id = 7

真的卡在了这个

编辑:我猜我不清楚。这些表已经映射,Doctrine 为我完成了 INNER JOIN 工作。我正在使用此代码来获取等待时间最长的管理员,但现在我需要用户:

现在我需要让等待时间最长的用户,但这不起作用

0 投票
2 回答
2817 浏览

sql - 在两列上使用 COUNT 和 GROUP BY 的 SQL 查询非常慢

我正在归档这个网络论坛,它通常每周会被清除一次。所以我在屏幕上抓取它,并将它存储到我的数据库(PostgreSQL)中。

我还对数据进行了一些分析,提供了一些供用户欣赏的图表,例如一天中什么时间论坛最活跃等等。

所以我有一个帖子表,如下所示:

我现在想为我的前 10 名小海报表中的每个用户计算帖子数。

我想出了这个:

事实证明这很慢。9 秒,此时帖子表中只有大约 300 000 行。

如果我只在一个列上分组,它只需要半秒钟,但我需要两者。

我对关系数据库和 SQL 比较陌生,所以我不太确定这是否正确,或者我做错了什么?

0 投票
5 回答
220 浏览

sql - 在 SQL 中插入两个方向相关的 2 行

我有两张表有点像这样:

每个表都相互关联:

通过他们的外键。

问题是,如果不删除一个外键约束、插入行,然后重新添加约束(这很蹩脚),就不可能创建第一个人/员工。

这里明显的上帝悖论是第一个“员工”并不是为了创造自己(“人”)而存在的。

有没有办法同时将数据插入两个表?这个 created-is-the-creator 场景只需要发生一次。如果我不能同时将数据插入两个表中,您的天才们还有其他方法建议吗?

澄清

还有其他表与“Persons”表相关……例如“Students”和“Guardians”。一个人不能切换类型(员工不能切换到学生或监护人,反之亦然)。这个悖论类似于具有 ManagerID FK 的 Employee 表。除了在我的情况下,表格已经分开。

解决方案 感谢 Remus Rusanu 和 b0fh

0 投票
3 回答
235 浏览

mysql - mysql查询正常关系表vs连接关系表

我对两个表之间的关系有疑问。

假设我们有一个表用户和链接。


现在链接这两者的正常方法是使用 name_links 表。例如:

现在我想知道制作这样的桌子是否是个好主意

我能想到的优点和缺点是:

优点1:

您将始终搜索索引,更快的查询示例选择 where uid=1,然后选择链接 1,3。两者都是索引,因此加载速度很快。

如果您有 1000 个用户,并且他们每个人都有 20 个链接,这意味着您必须通过 20.000 条记录才能获得所有链接(我认为,不确定这一点)。使用这种方法,你只需要一个索引就可以了。

缺点1:

您将不得不更频繁地更新 name_links 表,读取、编辑和写入示例用户 2 删除链接 2 方法将是:
+ 获取用户 1
的字符串 + 从字符串中删除数字
+ 插入新字符串

这里的一切都是在索引上完成的,所以我认为它会很快。

缺点2:

另一个缺点是当您删除链接 2 时,您必须遍历所有字符串,但可以说这不是什么大问题,因为这种情况不会经常发生。

到目前为止,这是我能想到的,而我正处于我的项目的关键点,我必须决定选择哪一个。

我很想就选择哪种方法提供一些建议。我有我的优点和缺点吗?有没有我没有考虑的事情。对此主题的任何帮助将不胜感激。

谢谢你们!

0 投票
1 回答
84 浏览

c# - EF 在 1-M 关系中提取参考主键

在 1-M 关系中,在关系的许多方面,我可以提取父项的 Id,而无需使用以下内容进行其他查询:

但是我想知道是否有类似的方法可以从 1 中提取许多 ID 而无需进行其他查询?

干杯安东尼

0 投票
1 回答
774 浏览

php - 在 CodeIgniter 中处理关系数据的最佳方法?

在创建 CodeIgniter 项目时,处理模型之间关系的最佳方式是什么?模型是否应该包含与它们相关的其他模型,是否应该在控制器中处理,或者是否有其他方法来处理这些场景?我正在考虑一对一、一对多或多对多的关系。

示例:假设我有一篇博客文章,其中有一个带标签的多对多和带评论的一对多。在获取博客文章时获取标签和评论的最佳实践是什么?

0 投票
1 回答
5405 浏览

tuples - 我如何用关系代数、域关系演算和元组关系演算找到最高/最大的东西

这是家庭作业的一部分。我有几个问题要问找到最高薪水或第二高薪员工的开斋节。找到获得最多飞机认证的飞行员。我不知道该怎么做。本章中没有任何示例,而且 google 证明没有那么有用。如果有人能告诉我如何做其中之一,那将有很大帮助。

以下是表格:


飞机(援助:整数,名称:字符串,巡航范围:整数)

认证(eid:整数,援助:整数)

员工(eid:整数,ename:字符串,薪水:int)