基于同一组数据使用数据库管理系统排序方法,首先对不同列进行不同排序操作,其次对不同列执行与前者相反排序操作,验证前者与后者逆序相同。
问题:基于同一组数据SORT(ID1 DESC, ID2 ASC, ID3 DESC)与SORT(ID1 ASC, ID2 DESC, ID3 ASC)逆序相同,其中SORT()表示数据库管理系统的排序用法,DESC表示对返回数据降序排序,ASC表示对返回数据升序排序。
证:设P(x,y,z)为命题“SORT(ID1 DESC, ID2 ASC, ID3 DESC)与SORT(ID1 ASC, ID2 DESC, ID3 ASC)逆序相同”待排序数据中每条数据包含3个元素定义为(x_i,y_i,z_i),其中i∈[1,n]表示每条数据所在行数。每行的3个数据元素组成一体且具有不变性,遵循x, y, z三列不同排序规则并按先后顺序进行排序。
(1)当待排序数据中无重复数据元素
假定SORT[DESC(x_1 ),ASC(y_1 ),DESC(z_1)] = SORT[DESC(x_n ),ASC(y_n ),DESC(z_n)],排序过程中遵循x, y, z三列排序规则,基于同一行数据元素核心组成不变性,推出:
SORT[DESC(x_i ),ASC(y_i ),DESC(z_i)] = SORT[DESC(x_(n-i) ),ASC(y_(n-i) ),DESC(z_(n-i))]
依次循环,证明P(x,y,z)成立。
(2)当待排序数据内每行包含不同位置的重复数据元素
当x列待排数据内存在重复数据元素,x列数据元素可分为重复和非重复两部分,依据x列行数设定,y列在x列非重复行数范围内符合(1)中结论,因此P(x,y,z)成立。
基于同一行数据元素核心组成不变性,y列基于同位置x列重复数据元素行数范围内,其重复部分位置范围为[i,i+x]其中x∈[0,n-i],则y列可排序数据元素为y_i至y_(i+x)部分,且此部分遵循y列排序规则,完成排序后可推出,
SORT[DESC(x_i ),ASC(y_i )] = SORT[DESC(x_(i+x) ),ASC(y_(i+x) )]
依次循环,证明P(x,y)成立。
当x列和y列包含重复数据元素部分,z列基于a)中结论,假设y列重复数据元素部分行数范围为[i,i+y]其中y∈[0,x]则z列可排序数为z_i至z_(i+y)部分,且此部分遵循z列排序规则,完成排序后可推出,
SORT[DESC(x_i ),ASC(y_i ),DESC(z_i)] = SORT[DESC(x_(i+y) ),ASC(y_(i+y) ),DESC(z_(i+y))]
依次循环,证明P(x,y,z)成立。
由(1)(2)可知上述命题成立。




