问题标签 [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 回答
687 浏览

javascript - 如何在javascript中构建关系结构?

我在数据库中有 2 个表:

1-元素:

  • 元素ID
  • 元素名称

2- 方法:

  • 方法ID
  • 元素ID
  • 方法数据

所以元素和方法之间是一对多的关系,

我使用 asp.net 加载这些表数据,

我想要做的是将这些数据发送到我的 javascript,而 javascript 将对这些数据执行一些功能。

例如,将遍历所有元素并获取每个元素方法并对每个方法数据做一些事情。

我试图将其作为 jaascript 中的类,但发现我自己写了很多东西,

前 2 个类,用于元素和方法,然后是 2 个数组 1- 用于元素 2- 用于方法

在方法数组中我写了这个:

这使我的代码变慢了。

我的问题是如何在 javascript 中表示这种关系结构以获得更专业的代码和更快的处理速度?

0 投票
3 回答
450 浏览

sql - 对多对一关系的聚合数据进行建模的有效方法(例如,stackoverflow 问题的投票数)

我很好奇什么是最好的建模方法以优化性能......不关心实时数据完整性

我将继续使用 stackoverflow 示例

一个问题有很多票

然而,对于许多查询,我们只关心投票的总数(例如显示在问题旁边)。

良好的关系数据库理论会将两个实体(Q 和 V)创建为单独的关系,需要连接,然后是 sum 或 count 聚合调用。

另一种可能性是打破常规形式,偶尔将投票的总价值具体化为问题中的一个属性(例如 Question.votes)。读取性能会提高,但是,取决于您愿意让您的“投票”数据变得多么陈旧,它需要对该问题记录的更多权限......反过来又会阻碍性能。

可以使用涉及缓存等的其他技术。但我只是想知道,性能方面最好的解决方案是什么?假设该网站的流量更高,并且获得的选票数量比问题多得多。

也对非关系模型开放。

0 投票
2 回答
995 浏览

sql - SQL 静态数据/查找列表 IDENTIFIER

关于静态数据表设计。在表中具有静态数据,如下所示:

  • 货币(代码、名称)。行示例:USD、美元
  • 国家(代码、名称)。行示例:DE,德国
  • XXXObjectType(代码、名称、...附加属性)
  • ...

将另一个 (INTEGER) 列作为主键以便所有外键引用都使用它是否有意义?

可能的解决方案:

  1. 使用额外的 INTEGER 作为 PK 和 FK
  2. 使用代码(通常是 CHAR(N),其中 N 很小)作为 PK 和 FK
  3. 仅当小于特定大小时才使用代码...什么大小?
  4. 其他_______

你的建议是什么?为什么?

我通常使用INT IDENTITY列,但通常短代码足以在 UI 上显示给用户,在这种情况下,查询将少一个 JOIN。

0 投票
4 回答
1242 浏览

database - 使用对象角色建模 (ORM) 的关系模型中的动态类型

在对象角色建模 (ORM) 中,给定一个与类型实体有关系的事物实体,并且可以指定类型实体存在的位置,并且事物实体可以具有出生日期值,我将如何指定如果与事物关联的类型的实例未设置为活动,则该约束将排除事物实例的出生日期值。见下图...

要约束的模型的 ORM 图 http://img197.imageshack.us/img197/6551/dynamictypeorm.jpg

我的问题背后的目的是允许在不清楚类型将是什么时对系统内的类型进行建模,但类型的特征是已知的。如果您认为有更适用的方法,则您的答案不需要使用 ORM。感谢阅读,希望你能帮到我。

0 投票
1 回答
173 浏览

database - 关系型数据库

您可以在不使用聚合的情况下在 SQL 中执行多个子句并且仅:选择、连接吗?谢谢。

0 投票
1 回答
161 浏览

database - 遵守数据模型协议的优势

问题标题可能不正确,因为我的部分问题是尝试对问题有更多了解。

我正在寻找确保导入数据库的数据(简单示例:Excel 表到 Access 数据库)应该使用相同的模式并且也应该对业务需求有效的优势。

我有一个不包含规范化数据的 Excel 表和一个带有规范化表的 Access 数据库。

Excel 表格来自多个第三方,没有一个与彼此或数据库保持相同的格式。

一些来源也没有提供所有相关数据。

可以提供的示例

contact_key、日期、contact_title、reject_name、reject_cost、count_of_unique_contact

count_of_unique_contact 派生自不同的contact_title,不应导入。有时不提供contact_key。标题有时是未知的,并以“n/a”、“name = ??1342”、“#N/A”等方式传入,相当随机。reject_name 经常拼写错误。有时甚至不提供这些字段,例如缺少日期和联系密钥。

我正在尝试查找信息以帮助解释上述问题。仅与不正确的数据或字段相关的问题使得数据库中难以获得有用的数据,例如在未提供日期的情况下无法报告一个月内拒绝成本的趋势。规范化 excel 文件对我来说不是一个可用的选项。

请求 Excel 文件中的值和字段以匹配业务需求,并且每个发送它们的第三方的格式都相同是我想要做的,但该请求被置若罔闻。

我想向客户解释,输入虚假数据并一直检查无效/现有的拒绝/联系是错误的,如果没有持续维护一个糟糕的系统,这样做会失败,或者充其量是困难的。

有没有人有关于这个问题的任何信息?

谢谢

0 投票
2 回答
1664 浏览

mysql - 实现大型数据集的快速查找:MySQL MEMORY(HEAP)、Memcached 或其他

目前正在从事一个以称为 SNOMED 的医学命名法为中心的项目。snomed 的核心是三个关系数据集,它们的长度分别为 350,000、110 万和 130 万条记录。我们希望能够快速查询此数据集以获取我们希望具有某种形状或形式的自动完成/建议的数据输入部分。

它目前位于 MySQL MyISAM DB 中,仅用于开发目的,但我们想开始使用一些内存选项。目前包括索引在内的大小为 30MB + 90MB + 70MB。MEMORY MySQL 引擎和 MemCached 是显而易见的,所以我的问题是您会建议其中哪一个,或者那里有更好的东西?

如果这有所作为,我们主要在应用程序级别使用 Python。此外,我们正在一台小型专用服务器上运行,很快就会迁移到 4GB DDR2。

编辑:附加信息

我们有兴趣保持快速的建议和自动完成。对这些类型的查询来说表现良好的东西是可取的。snomed 中的每个术语通常都有几个同义词、缩写和首选名称。我们将大量查询该数据集(包括索引在内的大小为 90MB)。我们还在考虑建立一个倒排索引以加快速度并返回更多相关结果(许多术语很长“整个基底蜕膜的盘绕动脉(身体结构)”)。Lucene 或其他一些全文搜索可能是合适的。

0 投票
2 回答
332 浏览

sql - 检索最大/最小记录

我正在处理的一个相当复杂的 SQL 查询让我想到了(ANSI)SQL 的限制:

有没有办法检索关于任意排序的最大或最小记录?

换句话说:

给定这样的查询:

是否可以编写只返回第一行的查询(可能通过将 order 子句转换为其他内容)?

我知道您可以使用 LIMIT (MySQL) / ROWNUM (Oracle) 或类似方法执行此操作,但这不是标准 SQL。

我也知道您可以通过获取您在子查询中感兴趣的最大值/最小值(使用 MIN()/MAX())来做到这一点,然后将该结果用作主 SELECT 中的标准,即:

但这仅在我想按单列排序时才有效。我认为没有办法将其推广到多列(除了嵌套上述解决方案,但这意味着在按 n 列排序时有 2^n SELECTs)。

那么在标准 SQL 中有没有比嵌套多个子选择更好的方法呢?

在创建 SQL 查询以检索最新记录中提出了一个相关问题。但是,那里的答案建议使用 LIMIT 和朋友,或者使用带有 MAX() 的子查询,如上所述,这两者都不是我问题的解决方案。

0 投票
2 回答
657 浏览

mysql - MySQL 关系数据库设计的快速提示

我有一个我正在制作的 web 应用程序,用于存储用户信息以及他们对应用程序的偏好。这值得分成两个数据库吗?我在想一个表“用户”,字段为“id,useridfromFacebook,facebookRealName”(所以 1, 52052025295,Alex McP),然后有一个表“首选项”,字段为“id,useridfromFacebook,电子邮件,颜色,SomeQuoteorSomething”(4 , 52052025295, 1, 441155, '只有年轻的好人')

我从来没有学过数据库设置,但这似乎会限制数据库的负载,因为当用户通过身份验证并安装了应用程序时,我只需要查询首选项表 if(isset( $fbauthboolean)) 什么的。

想法?我可以澄清一下吗?

谢谢!

我在原始帖子中混淆了“数据库”和“表”这两个词。已编辑。我只有一个带有多个表的数据库,但都与同一个用户有关。一个表包含 NAME 数据,另一个表将存储 PREFERENCES 类型的数据

0 投票
2 回答
365 浏览

sql - 这是教科书的设计模式,还是我发明了一些新东西?

我刚刚完成了一组桌子的设计,我在其中提出了一个我非常满意的架构!我以前从未在其他任何地方见过它,所以我很想知道我是否只是重新发明了轮子(很可能),或者这是否是真正的创新。

这是问题陈述:我Employees有谁可以与公司签订不同的合同。每个员工可以执行不同的活动,并且每个活动可能有不同的工资率,有时是完成一项活动的固定金额,有时是每小时工资,有时是分层工资。也可能有一个特定的客户特别喜欢该员工,因此当他与该特定客户合作时,他会获得更高的费率。如果未定义费率,他将获得公司违约率。

不要对细节大惊小怪:重点是可以定义很多工资率,每一个都以相当复杂的方式定义。工资率都有以下共同点:

  • 服务类型
  • 薪酬等级类型(枚举:固定金额/小时费率/分层费率)
  • 固定金额(如果 PayScaleType = FA)
  • 小时费率(如果 PayScaleType = HR)- 是的,可以合并到一个字段中,但由于我不会在这里讨论的原因,我将它们分开
  • 层级(1->n 关系,包含所有层级以及超过层级阈值后要支付的金额)

这些工资率适用于:

  • 默认公司费率
  • 员工率
  • 员工覆盖率(按客户定义)

如果我必须遵循简单的蛮力方法,我将不得不为上述 3 个表中的每一个创建一个PayRatePayRateTier克隆表,加上它们相应的 Linq 类,加上计算 3 个不同位置的速率的逻辑,以某种方式重构以重用计算逻辑。啊。这就像在数据库上使用复制和粘贴一样。

所以相反,我做了什么?我创建了一个中间表,我称之为PayRatePackage,只包含一个 ID 字段。我只有一个 PayRate带有强制 FK to的表PayRatePackage,以及一个PayRateTier带有强制 FK to的表PayRate。然后,与 和一样,DefaultCompanyPayRate对 具有强制性 FK 。PayRatePackageEmployeeRateEmployeeOverrideRate

如此简单 - 它有效!

(请原谅我没有附上图表;对于我已经解决了主要问题的 SO 问题,这将是一个很大的努力。如果很多人想看图表,请在评论中说出来,我会把一些东西放在一起。)

现在,我很确定这种简单有效的东西一定是在某个地方的正式设计模式中,我很想知道它是什么。还是我只是发明了一些新东西?:)