



1
 00:00:00,280 --> 00:00:03,440
 下一个要探讨的模式是物品模式
2
 00:00:04,310 --> 00:00:08,300
 说是物品模式,实际上更多的说物品规格
3
 00:00:09,210 --> 00:00:12,560
 首先,我们要区分一下物品和物品规格的定义
4
 00:00:14,440 --> 00:00:18,770
 你看右边这个
5
 00:00:19,880 --> 00:00:22,230
 同样是这么多瓶可乐
6
 00:00:23,240 --> 00:00:25,180
 这是一个物品还是多个物品
7
 00:00:26,230 --> 00:00:27,620
 如果我们认为是一个
8
 00:00:28,120 --> 00:00:29,820
 实际上我们说的就是规格
9
 00:00:31,090 --> 00:00:31,950
 如果是多个
10
 00:00:32,790 --> 00:00:33,910
 它们是可以区分的
11
 00:00:34,560 --> 00:00:35,900
 或者说有必要区分的
12
 00:00:37,280 --> 00:00:38,590
 说的实际上就是物品
13
 00:00:44,040 --> 00:00:47,680
 比如说,像我们单位里面有很多台电脑
14
 00:00:47,690 --> 00:00:50,320
 当时采购的时候是批量采购回来的
15
 00:00:50,840 --> 00:00:53,210
 采购100台一模一样的电脑
16
 00:00:53,980 --> 00:00:56,000
 当然说一模一样,实际上也不是一模一样
17
 00:00:56,010 --> 00:01:00,090
 因为这100台里面,出厂的时候
18
 00:01:00,260 --> 00:01:03,270
 编号,每个产品上面
19
 00:01:03,280 --> 00:01:05,990
 应该有一个流水号
20
 00:01:06,120 --> 00:01:07,550
 应该也是不一样的
21
 00:01:08,060 --> 00:01:10,210
 因为生产也是有管控的
22
 00:01:10,970 --> 00:01:12,850
 但是我们买的时候是不管这个的
23
 00:01:13,660 --> 00:01:15,620
 商场也不管这个
24
 00:01:15,630 --> 00:01:17,890
 他卖给我的实际上是同一个商品
25
 00:01:18,280 --> 00:01:19,310
 卖了100件
26
 00:01:20,120 --> 00:01:21,600
 那么我们拿回单位以后
27
 00:01:22,960 --> 00:01:24,860
 我们就给它编上我们自己的号
28
 00:01:25,800 --> 00:01:29,830
 然后分给不同的员工来使用
29
 00:01:31,740 --> 00:01:36,590
 这时候每个电脑它就可以互相区分了
30
 00:01:37,430 --> 00:01:40,590
 很可能张三的电脑坏掉了
31
 00:01:41,440 --> 00:01:43,920
 拿去修理,李四的还是正常的
32
 00:01:44,530 --> 00:01:44,850
 33
 00:01:46,570 --> 00:01:48,000
 就可以有这样的区别
34
 00:01:48,780 --> 00:01:55,920
 但是针对同样规格的物品的单个单个
35
 00:01:56,370 --> 00:01:57,720
 这个不是我们
36
 00:01:57,730 --> 00:01:59,600
 这个模式的重点
37
 00:02:00,250 --> 00:02:01,330
 我们模式的重点是哪一个
38
 00:02:01,340 --> 00:02:04,630
 就是商场里面
39
 00:02:04,880 --> 00:02:06,460
 或者说物品规格
40
 00:02:06,470 --> 00:02:09,150
 众多的时候的
41
 00:02:09,160 --> 00:02:10,310
 一个管理的问题
42
 00:02:12,990 --> 00:02:15,120
 商场、药店,都可以
43
 00:02:15,290 --> 00:02:16,400
 包括公文
44
 00:02:16,410 --> 00:02:18,680
 包括,都可以
45
 00:02:18,690 --> 00:02:25,890
 很多东西,分类繁多
46
 00:02:25,900 --> 00:02:28,170
 而且不断变化的东西,都可以
47
 00:02:29,100 --> 00:02:30,900
 我们看,举例看这个
48
 00:02:31,770 --> 00:02:34,960
 商品分为食品、服装、电器
49
 00:02:36,240 --> 00:02:38,280
 电器分为洗衣机、电器、空调
50
 00:02:38,290 --> 00:02:40,400
 电视机分为液晶电视、等离子电视
51
 00:02:40,800 --> 00:02:44,720
 我们来看这个,它们的分类有很多层
52
 00:02:44,930 --> 00:02:45,800
 第二个,还可以不断
53
 00:02:45,810 --> 00:02:49,350
 往下面延伸,或者往横的加
54
 00:02:49,850 --> 00:02:50,330
 这是第一点
55
 00:02:50,340 --> 00:02:52,290
 第二点,就是特性各自不同
56
 00:02:53,710 --> 00:02:56,560
 食品的这里,有原料,有保质期
57
 00:02:57,210 --> 00:02:58,600
 电器就没有
58
 00:02:58,920 --> 00:02:59,990
 但电器有功率
59
 00:03:01,050 --> 00:03:03,650
 这是所有电器我们都要关注的
60
 00:03:04,650 --> 00:03:08,830
 但是,电视机又有自己的,屏幕尺寸
61
 00:03:09,160 --> 00:03:10,590
 分辨率,3D支持
62
 00:03:10,720 --> 00:03:13,740
 这些是空调洗衣机没有的
63
 00:03:14,970 --> 00:03:17,920
 然后电视里面又分液晶、等离子体电视
64
 00:03:17,930 --> 00:03:20,850
 而液晶电视里面又多一个背光方式
65
 00:03:23,050 --> 00:03:24,490
 这是液晶电视特有的
66
 00:03:25,440 --> 00:03:26,620
 别的电视可能就没有
67
 00:03:29,630 --> 00:03:33,080
 所以,你要说买一个液晶电视的话
68
 00:03:33,090 --> 00:03:38,420
 所有的,这个这个,上面还有的话
69
 00:03:39,360 --> 00:03:41,920
 上面肯定还有条码什么之类的
70
 00:03:41,930 --> 00:03:43,440
 所有商品都有
71
 00:03:43,810 --> 00:03:44,880
 这样一串上去
72
 00:03:45,010 --> 00:03:47,980
 都是液晶电视的特征
73
 00:03:48,270 --> 00:03:50,290
 都要关注的特征
74
 00:03:54,680 --> 00:03:56,470
 这样的一个结构
75
 00:03:58,210 --> 00:04:02,450
 当然,通过泛化关系来建模是可以的
76
 00:04:02,660 --> 00:04:04,880
 但是泛化建模的话
77
 00:04:06,190 --> 00:04:10,590
 如果说它行为上并没有什么特别的变化
78
 00:04:11,400 --> 00:04:13,310
 主要还是数据上的变化的话
79
 00:04:13,760 --> 00:04:15,350
 我们就可以把它转换一个
80
 00:04:15,980 --> 00:04:17,270
 那也就是我们前面讲的
81
 00:04:20,030 --> 00:04:23,980
 把泛化结构变成类类型的
82
 00:04:23,990 --> 00:04:26,280
 递归关联或自反关联
83
 00:04:28,230 --> 00:04:31,500
 那么这个类类型就是物品类别或商品类别
84
 00:04:35,190 --> 00:04:38,000
 然后自反关联,也就是说,这个时候
85
 00:04:38,010 --> 00:04:42,330
 就把这个类的这种树状结构
86
 00:04:42,340 --> 00:04:44,410
 就变成了
87
 00:04:45,240 --> 00:04:48,920
 类别对象的树状结构,都是类别对象
88
 00:04:49,580 --> 00:04:51,260
 实际上就变成自反关联了
89
 00:04:55,040 --> 00:04:57,590
 然后,这个特征怎么办呢
90
 00:04:57,990 --> 00:05:00,620
 那就是变成这4个类了
91
 00:05:02,430 --> 00:05:05,200
 物品类别,定义了一些物品类别特征
92
 00:05:05,910 --> 00:05:07,440
 然后这边放它的名称
93
 00:05:08,440 --> 00:05:12,110
 然后,物品定义了物品特征
94
 00:05:12,120 --> 00:05:13,190
 这边放它的值
95
 00:05:14,080 --> 00:05:16,590
 然后,物品特征关联到类别特征
96
 00:05:16,600 --> 00:05:18,070
 物品关联到物品类别
97
 00:05:20,880 --> 00:05:28,050
 这样来,我们来看这个类图怎么实现
98
 00:05:32,160 --> 00:05:35,560
 首先,这个是1对多的自反关联
99
 00:05:37,290 --> 00:05:41,270
 1对多的话,我们就不用添加一个新的表了
100
 00:05:41,440 --> 00:05:42,550
 直接在物品类别这里
101
 00:05:42,560 --> 00:05:45,810
 添加一个上级类别的ID就可以
102
 00:05:46,930 --> 00:05:47,770
 然后这个1对多
103
 00:05:47,780 --> 00:05:51,380
 就是这边1,这边多,物品类别特征
104
 00:05:51,390 --> 00:05:53,020
 这边有物品类别ID
105
 00:05:54,140 --> 00:05:55,380
 然后物品是多
106
 00:05:55,390 --> 00:05:58,520
 这是1,就是物品这边有物品类别ID
107
 00:05:59,250 --> 00:06:03,030
 然后这个多,这个1,那就是物品特征这边有物品ID
108
 00:06:03,040 --> 00:06:08,410
 还有一个什么,物品类别特征ID,映射过来
109
 00:06:09,670 --> 00:06:10,380
 就是这样
110
 00:06:12,670 --> 00:06:14,100
 这有上级类别ID
111
 00:06:15,140 --> 00:06:18,180
 然后物品类别ID
112
 00:06:19,080 --> 00:06:20,750
 物品ID,特征ID
113
 00:06:21,250 --> 00:06:26,050
 这两个,这边有类别ID作为外键
114
 00:06:27,660 --> 00:06:28,590
 这是数据库的映射
115
 00:06:34,400 --> 00:06:36,590
 我们来看,怎样来填数据
116
 00:06:38,580 --> 00:06:40,720
 这是刚才泛化的类图
117
 00:06:40,810 --> 00:06:44,400
 我们给它标个123456789
118
 00:06:44,410 --> 00:06:46,630
 这是9个类别
119
 00:06:46,800 --> 00:06:50,810
 物品类别我们就按照9个来填
120
 00:06:51,570 --> 00:06:53,220
 Id,123456789
121
 00:06:53,940 --> 00:06:56,930
 然后,你看商品这个是顶级的
122
 00:06:57,260 --> 00:06:58,210
 上级类别没有
123
 00:06:58,630 --> 00:07:01,790
 然后234,就是食品服装电器
124
 00:07:02,150 --> 00:07:04,540
 上级类别是1
125
 00:07:05,370 --> 00:07:08,560
 567,上级类别是4,电器
126
 00:07:08,830 --> 00:07:14,260
 89,上级类别是6,这是物品类别
127
 00:07:16,670 --> 00:07:20,400
 同样,我们来看,物品类别特征的数据
128
 00:07:20,410 --> 00:07:26,250
 你看,2,其他的没列出来的,我们就不管了
129
 00:07:26,260 --> 00:07:29,030
 我们就看列出来的,2有3个特征
130
 00:07:29,300 --> 00:07:30,480
 原料、保质期
131
 00:07:32,380 --> 00:07:33,350
 贮藏条件
132
 00:07:34,090 --> 00:07:36,880
 原料、保质期、贮藏条件
133
 00:07:36,890 --> 00:07:37,590
 物品类别ID是2
134
 00:07:38,210 --> 00:07:40,160
 同样的,电源功率是4
135
 00:07:40,520 --> 00:07:43,960
 屏幕尺寸、分辨率、3D支持,是6
136
 00:07:43,970 --> 00:07:47,410
 背光方式,8
137
 00:07:47,540 --> 00:07:49,210
 就这样照着填下来就行了
138
 00:07:49,220 --> 00:07:50,560
 139
 00:07:53,200 --> 00:07:54,150
 刚才我们说了
140
 00:07:56,260 --> 00:07:59,210
 当我们要买液晶电视的时候
141
 00:08:00,020 --> 00:08:02,470
 假设我们说,我要买一台液晶电视
142
 00:08:03,620 --> 00:08:06,530
 那么我们要首先第一个要解决的问题是
143
 00:08:06,540 --> 00:08:08,450
 如果你要作为一台液晶电视
144
 00:08:08,460 --> 00:08:09,770
 比如说,我这里有一个产品
145
 00:08:10,240 --> 00:08:12,590
 它归属于液晶电视这个类别
146
 00:08:13,230 --> 00:08:15,090
 那么这个产品,或者这个物品
147
 00:08:15,450 --> 00:08:17,740
 应该要标注哪些特征
148
 00:08:18,750 --> 00:08:20,440
 我们的第一个计算
149
 00:08:20,450 --> 00:08:24,020
 就是给你一个物品类别
150
 00:08:24,030 --> 00:08:28,060
 你告诉我这个类别应有的特征
151
 00:08:29,510 --> 00:08:31,720
 显然这个特征不只是它自己了
152
 00:08:31,730 --> 00:08:35,080
 比如说,给你物品类别液晶电视
153
 00:08:37,220 --> 00:08:38,840
 特征不只是包括它自己
154
 00:08:38,850 --> 00:08:40,670
 不能这个就完了
155
 00:08:40,680 --> 00:08:43,270
 你还有上级类别的特征
156
 00:08:44,420 --> 00:08:48,290
 上级类别的上级类别,再往上,一直到没有
157
 00:08:48,760 --> 00:08:49,860
 不能再往上为止
158
 00:08:49,990 --> 00:08:51,580
 这一串上去这样的
159
 00:08:52,470 --> 00:08:56,900
 所以,不是说select一下就完了
160
 00:08:57,310 --> 00:08:59,970
 那么就有一个什么,递归的运算
161
 00:09:00,530 --> 00:09:03,390
 如果说我们用SQL语句
162
 00:09:03,520 --> 00:09:05,430
 我们可以把它写成一个存储过程
163
 00:09:06,360 --> 00:09:09,610
 这里,计算物品类别应有的特征
164
 00:09:09,960 --> 00:09:11,500
 参数是一个物品类别ID
165
 00:09:13,610 --> 00:09:18,920
 然后,你看,我们首先定义一个表
166
 00:09:19,210 --> 00:09:21,740
 内部的表,类似于临时表
167
 00:09:21,990 --> 00:09:24,900
 这个表,计算完了就销毁了
168
 00:09:24,910 --> 00:09:27,980
 不在数据库里面持久存储的
169
 00:09:28,980 --> 00:09:30,770
 那么这个表就是类别闭包
170
 00:09:31,740 --> 00:09:32,580
 171
 00:09:32,590 --> 00:09:38,790
 就是把类别往上级的上级
172
 00:09:38,880 --> 00:09:40,410
 一直一直找上级
173
 00:09:40,620 --> 00:09:41,770
 所有的类别找出来


![[Cloud Networking] OSPF](https://img-blog.csdnimg.cn/direct/70fbaafc6078451cb23ec9e98b596777.png)
















