说,我有一个带有 $ n $ 列的数据库表。什么是(理论)我可以在该表上创建的索引数量?对于 $ n= 1,2,3 $ 它很容易计算答案 $(1,4,15)$,但有任何公式吗?此外,这个号码还有“名字”吗?

有帮助吗?

解决方案

我假设你的意思是以下:给定 $ n $ 列,有

  • $ n $ 单列,给出 $ n $ 不同的索引
  • $ n(n-1)/ 2 $ 对列,以及2种方法来组合每对,给出 $ n(n-1)$ 不同的索引
  • $ \ frac {n(n-1)(n-2)} {2 \ cdot 3} $ 三级列, $ 3 \ CDot 2 $ 组合每个三倍的方法,给出 $ n(n-1)(n-2)$ 不同的索引

等等。此数字没有(众所周知)名称,但序列确实有自己的 oeis条目

十八世纪和十九世纪的组合主义者称之为n个不同对象的(nonnull)“变体”的数量,即{1,...,n}的非空亚群的排列数。

给出各种公式来计算它,包括复发关系 $ a_n= n(a_ {n-1} + 1)$ 和相当令人惊讶的 $ a_n=lfloor {e \ cdot n! - 1} \ rfloor $

可以争辩说,您可以通过考虑列可以以升序和降序模式使用列来创建更多索引。对于具有多个列的指数,甚至对彼此附近的记录有影响。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top