[图解]不变式的构造和化简

文章详细解释了SQL查询中的条件选择(如X→select(Y))和forAll的概念,强调了筛选与蕴含关系在数据处理中的应用。通过举例说明如何将复杂的逻辑关系转化为简单的条件表达式,包括使用德摩根定律进行推导。

1
00:00:02,420 --> 00:00:03,380
下面这个,我们来看

2
00:00:03,390 --> 00:00:09,940
X→select(Y),用Y这个条件来筛选

3
00:00:09,950 --> 00:00:11,340
之后得到的集合

4
00:00:12,400 --> 00:00:14,390
forAll这个意思是什么

5
00:00:14,400 --> 00:00:17,950
集合里面所有的元素都符合这个条件

6
00:00:18,540 --> 00:00:22,470
这不是筛选,是符合这个条件的意思

7
00:00:24,060 --> 00:00:25,820
就是Y筛选过之后

8
00:00:26,170 --> 00:00:28,990
得到的所有的元素都符合这个条件

9
00:00:29,850 --> 00:00:31,560
实际上就等价于什么

10
00:00:32,840 --> 00:00:34,960
对X里面的所有元素

11
00:00:36,040 --> 00:00:40,700
如果Y,那么就符合Z

12
00:00:40,710 --> 00:00:43,140
如果Y,那么Z,实际上就是一个蕴含的关系

13
00:00:48,530 --> 00:00:51,840
这些我们之前讲过的,后面这两个没讲

14
00:00:51,930 --> 00:00:54,670
前面讲过的,这些表达式我们都可以

15
00:00:55,850 --> 00:00:57,730
这些公式我们都可以用来

16
00:00:59,050 --> 00:01:04,590
作为我们简化或者推导不变式

17
00:01:05,910 --> 00:01:12,090
或者其他的表达式的一个工具

18
00:01:13,430 --> 00:01:17,000
比如说,还是这个员工部门

19
00:01:17,410 --> 00:01:20,050
员工,部门

20
00:01:21,980 --> 00:01:24,650
员工有姓名、年龄、薪水

21
00:01:24,940 --> 00:01:27,690
部门有名称,有最低薪水、高档薪水

22
00:01:28,770 --> 00:01:29,640
假设有这样一个

23
00:01:29,650 --> 00:01:32,260
如果员工年龄未达35岁的话

24
00:01:32,580 --> 00:01:35,550
那么薪水不得超过部门高档薪水

25
00:01:39,500 --> 00:01:40,990
如果我们针对部门做不变式

26
00:01:41,000 --> 00:01:45,600
可能一开始

27
00:01:45,610 --> 00:01:48,770
会得到这样一个

28
00:01:49,040 --> 00:01:51,120
员工,然后给一个条件

29
00:01:52,020 --> 00:01:55,710
小于35岁的员工的集合里面

30
00:01:59,000 --> 00:02:01,870
存在薪水大于高档薪水的

31
00:02:01,880 --> 00:02:03,910
这样一个人是不行的

32
00:02:04,460 --> 00:02:07,830
就是说,不允许集合里面

33
00:02:08,280 --> 00:02:11,260
存在这样的人

34
00:02:12,730 --> 00:02:16,590
存在符合这个条件的元素

35
00:02:18,260 --> 00:02:19,970
这个看起来就比较复杂了

36
00:02:20,610 --> 00:02:25,320
我们可以用前面的公式先把存在去除掉

37
00:02:25,330 --> 00:02:26,400


38
00:02:27,600 --> 00:02:29,280
这个存在我们就可以说

39
00:02:31,360 --> 00:02:32,950
对所有人来说都不符合这个

40
00:02:33,820 --> 00:02:34,380


41
00:02:34,390 --> 00:02:37,630
对所有来说不符合这个

42
00:02:38,830 --> 00:02:40,110
我们就可以这样

43
00:02:41,310 --> 00:02:43,020
前面不变,这个就变成什么

44
00:02:43,030 --> 00:02:48,800
就变成员工

45
00:02:49,420 --> 00:02:53,010
然后所有的员工都符合这个条件

46
00:02:55,830 --> 00:02:58,390
员工的薪水

47
00:02:58,910 --> 00:03:00,230
不得大于高档薪水

48
00:03:09,510 --> 00:03:11,780
你看,select之后就符合这个条件

49
00:03:12,170 --> 00:03:13,560
我们可以就把它变成

50
00:03:13,570 --> 00:03:14,950
把这个挪过来

51
00:03:15,080 --> 00:03:16,190
针对所有员工

52
00:03:16,930 --> 00:03:18,130
这就是推导关系了

53
00:03:18,140 --> 00:03:19,690
只要你小于35岁

54
00:03:20,300 --> 00:03:23,960
那么这个可以推导到这个

55
00:03:26,580 --> 00:03:30,000
而这个蕴含关系的话

56
00:03:30,010 --> 00:03:34,260
我们用前面那个,P蕴含Q就等于什么

57
00:03:35,210 --> 00:03:38,900
非P或Q

58
00:03:38,910 --> 00:03:40,500
那就把它变成

59
00:03:40,510 --> 00:03:45,720
变成非P或Q,然后再用什么

60
00:03:45,730 --> 00:03:51,510
再用德摩根把它解开

61
00:03:51,770 --> 00:03:52,480
把它解开

62
00:03:53,550 --> 00:03:58,000
把这个not移除掉

63
00:03:58,010 --> 00:04:00,610
变成:所有的员工都符合这个条件

64
00:04:00,700 --> 00:04:02,890
要么年龄大于35岁

65
00:04:04,060 --> 00:04:05,970
要么薪水小于高档薪水

66
00:04:06,100 --> 00:04:07,450
这个就简单多了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值