问题标签 [cardinality]

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 投票
4 回答
39713 浏览

mysql - SQL中基数的定义是什么

我的教科书数据库系统将基数定义如下:

关系的基数是它包含的元组的数量。相比之下,元组的数量称为关系的基数,并且随着元组的添加或删除而变化。高基数 - 很多元组,低基数 - 很少元组。

而关于基数(SQL 语句)的维基百科文章将其定义如下:

基数是指包含在数据库表的特定列(属性)中的数据值的唯一性。基数越低,列中的重复元素就越多。基数有 3 种类型:高基数、正常基数和低基数。

他们可能都是对的,但我无法将这两个定义连接为相关定义。一个改写将是appriciated!

0 投票
2 回答
12651 浏览

elasticsearch - Elasticsearch 术语或基数聚合 - 按不同值的数量排序

朋友们,

我正在做一些分析,以从数以亿计的文档中找到唯一的对。模拟示例如下所示:

文档字段 1 字段 2

  1. AAA : BBB
  2. AAA : CCC
  3. 购买力平价:QQ
  4. 购买力平价:QQ
  5. XXX : 年年
  6. XXX : 年年
  7. 嗯:NNN

90% 的文档包含一个唯一的对,如上面文档 3、4、5、6 和 7 中所示,我对我的聚合结果不感兴趣。我有兴趣汇总文档 1 和 2。

术语聚合查询:

术语聚合结果

我只对聚合结果中的密钥AAA感兴趣。过滤包含不同对的聚合结果的最佳方法是什么?

我尝试了基数聚合,这导致了 unque 值计数。但是,我无法从聚合结果中过滤掉我不感兴趣的内容。

基数聚合查询

基数聚合结果

至少如果我可以按基数排序,那将有助于我找到一些解决方法。请在这方面帮助我。

PS:编写 spark/mapreduce 程序来后处理/过滤聚合结果不是此问题的预期解决方案。

0 投票
1 回答
975 浏览

elasticsearch - 将基数聚合与“位置”条件相结合?

我正在尝试根据字段创建不同的计数命中,但我被卡住了。

如何将基数和条件结合起来"select distinct(lastname) from table where name like 'George%'"

如何在 Cardinality 中使用“where”条件?

0 投票
1 回答
444 浏览

database - M : N 关系和表

我为购物车创建了一个简单的数据库模型,现在让我们考虑订单、产品和购物车

我的问题是购物车与产品有 M:N 关系吗?如果是,是否需要创建第三个表。我已经创建了第三个表,但这对我来说没有意义。我可以很好地拥有 T_SHOPPING_CART 表并将 id 、product_id、quantity 作为复合主键并将产品值存储在其中,而不是创建另一个表来存储这些详细信息。哪个更好地接近第三个表或复合主键。

在此处输入图像描述

0 投票
2 回答
216 浏览

database - 哪个表应该首先使用参照完整性填充最小基数 1..1?

假设我正在使用参照完整性,并且我在两个实体(A 和 B)之间有关系,并且双方的最小基数为 1。这意味着在可以填充表 A 之前,表 B 需要表 A 可以的记录被链接到。但是由于两边的最小基数都是1,反过来也可以这样说,即A表中需要有一条记录可以链接到B表中的一条记录,然后该记录才能插入到表中B.

现在这似乎有问题,因为如果我理解正确,引用完整性会强制您将记录链接到另一个表中的另一个记录,在这两种情况下,这意味着我不能在任何一个表中输入任何记录......

有人可以解释在这种情况下会发生什么吗?

我问了我的老师同样的问题,她说至少基数为 1..1 的关系(这个符号是否正确?)当然是可能的,但她无法向我解释应该首先填写哪个表。

对不起,我没有任何具体的例子,我只是在随机考虑这个......如果你可以通过在你的答案中使用一个实际的例子来详细说明,那就太好了。

0 投票
2 回答
1458 浏览

mysql - 如何以编程方式确定表之间的 MySQL 关系类型(1:1、1:n、n:m)?

我正在尝试查询 MySQL 服务器以确定有关数据库的信息,以便构建一些代码。

为此,我使用Java JDBCINFORMATION_SCHEMA表非常成功,但问题是我需要确定表关系是OneToOneOneToMany还是ManyToMany。我找不到实现这一目标的好方法,如果有人可以帮助我一点,并且如果它可能使用不是 MySQL 特定和可靠的解决方案,我会很高兴,因此它可以帮助其他人。

我在stackoverflow中发现了这个问题,但它不能解决问题: how-to-determine-cardinality-of-foreign-key-using-mysql

编辑(更多) 为了进一步解释我的问题,我将添加更多信息。目前我正在使用 MySQL 与 InnoDB 和 MySQL Workbench 来创建 EER 图并生成 SQL 来创建数据库。

我试图在我的 Java 应用程序中对两个现有表之间的关系进行逆向工程,以确定一个表是OneToOneOneToMany还是ManyToMany。问题是,当我在 MySQL Workbench 中设计模型并在两个表之间创建关系时,我看不出非识别 1:1 和非识别 1:N 之间有任何区别,即使它们的 SQL 输出相同。

非识别 1:1

非识别 1:n

令人惊奇的是,当我使用 MySQL Workbench 对数据库进行反向操作时,看看它是否可以猜测它是1:1还是1:n,它实际上能够猜到它,图中有正确的关系箭头!!!也许它将引用存储为唯一的某处,或者 InnoDB 在其自己的供应商特定的 INFORMATION_SCHEMA 上有此引用,但我想在我的应用程序上复制此行为。

关于如何实现这一目标的任何想法?

0 投票
2 回答
309 浏览

algorithm - 如何最好地从查找表中获取数据

我有几条产品线,产品具有各种功能。我有一个为每个产品制作的图纸列表,下面是图纸中表示的产品线、产品和功能的示例。

在此处输入图像描述

我试图弄清楚,当给定具有所有功能的特定产品(即表中的单行)时,围绕这些功能构建我的代码以选择正确的图纸的最有效最简洁的方法是什么?

我总是可以做类似的事情

并最终得到与表中的行一样多的扁平 if 语句。但必须有更好的方法。我认为这可能与基数有关,或者可能与产品每个属性中选项的可变性有关。出于某种原因,确切的概念使我无法理解。

例如,我有一种感觉,最好先检查产品是否有电机,因为一旦你知道它会消除大约一半的选项并更快地缩小范围。即在主外部 if 块中执行以下操作:

而不是这样的:

但也许我只是想多了,只需要一个包含所有属性的查找表,也许像

关于查找表最好使用哪种属性顺序以及是否重要的​​问题仍然存在。

问题:

是否有“最佳” if-then-else 块嵌套顺序来决定产品属性,以最大限度地减少代码必须做出的总体决策总数,还是我需要放弃这种思路而只使用查找表? 为什么或者为什么不?

编辑:顺便说一句..这看起来是使用数据库的好人选..但我总共只有 48 行,可以直接将它们编码成代码。这将是只读的,根本不会经常更新,所以我正在考虑使用多维数组来编码这些数据。

0 投票
0 回答
130 浏览

mysql - 基数的最佳百分比值

假设有例如 100'000 条记录,mysql 中“基数”的最佳值是多少?我的意思是在速度方面。

我知道一个非常低的基数是不好的,但是一个非常高的基数也是不好的吗?如果是这样,那么以百分比表示的最佳值是多少?

0 投票
1 回答
4141 浏览

elasticsearch - elasticsearch aggs中的不同计数大于doc_count

我写了一些 aggs 查询来获取总数(总和)和唯一计数。但结果有点混乱。

唯一值大于 doc_count。
可能吗?

我知道基数 aggs 是实验性的,可以得到不同值的近似计数。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html

但结果太糟糕了。如您所见,有许多唯一大于 doc_count 的存储桶。
请求格式有问题吗?或基数限制?

50 万份文档被索引
,并且有 15 种 eventID
ES 1.4 使用。

要求

回复

编辑。更多测试

我再次尝试了 1,000 个precision_threshold,它只过滤了一个 eventId
,但结果的错误是相同的。基数预计小于 30,000 但超过 66,000(这大于总文档大小)

doc_count:65,672(没问题。对)基数:66,037(大于doc_count)实际基数:约23,000(由rdbms脚本计算...)

要求

}

回复

}

0 投票
1 回答
3423 浏览

elasticsearch - Elasticsearch 基数聚合给出完全错误的结果

我将网站的每个页面视图保存在 ES 索引中,其中每个页面都由entity_id识别。我需要获取自给定时间点以来唯一页面浏览量的总数。我有以下映射:

根据 Elasticsearch 文档,这样做的方法是使用基数聚合。这是我的搜索请求:

请注意,我在未来使用了时间戳,因此不会返回任何结果。我得到的结果是:

我不明白唯一页面访问量如何可能是 116,因为搜索查询根本没有页面访问量。我究竟做错了什么?