﻿1
00:00:00,000 --> 00:00:04,000

2
00:00:04,008 --> 00:00:08,008

3
00:00:08,010 --> 00:00:12,010

4
00:00:12,016 --> 00:00:16,016

5
00:00:16,021 --> 00:00:20,021

6
00:00:20,023 --> 00:00:24,023

7
00:00:24,026 --> 00:00:28,026

8
00:00:28,030 --> 00:00:32,030

9
00:00:32,034 --> 00:00:36,034

10
00:00:36,040 --> 00:00:40,040

11
00:00:40,045 --> 00:00:44,045

12
00:00:44,047 --> 00:00:48,047

13
00:00:48,050 --> 00:00:52,050

14
00:00:52,055 --> 00:00:56,055

15
00:00:56,060 --> 00:01:00,060

16
00:01:00,063 --> 00:01:04,063

17
00:01:04,066 --> 00:01:08,066

18
00:01:08,069 --> 00:01:12,069

19
00:01:12,072 --> 00:01:16,072

20
00:01:16,077 --> 00:01:20,077

21
00:01:20,082 --> 00:01:24,082

22
00:01:24,088 --> 00:01:28,088

23
00:01:28,091 --> 00:01:32,091

24
00:01:32,093 --> 00:01:36,093

25
00:01:36,096 --> 00:01:40,096

26
00:01:40,099 --> 00:01:44,099
(อาจารย์เกวลี) เดี๋ยวเริ่มเลย

27
00:01:44,101 --> 00:01:48,101
ก็ได้ค่ะ

28
00:01:48,104 --> 00:01:52,104
โอเค น่าจะประมาณนี้นะคะ

29
00:01:52,109 --> 00:01:56,109
วันนี้จะเป็นบทที่ 5 เกี่ยวกับกระบวนการ

30
00:01:56,110 --> 00:02:00,110
ปรับบรรทัดฐาน ภาษาอังกฤษก็จะเป็น

31
00:02:00,114 --> 00:02:04,114
Normalization

32
00:02:04,117 --> 00:02:08,117
เนื้อหาวันนี้ก็จะมีจุดมุ่งหมาย

33
00:02:08,119 --> 00:02:12,119
ของการทำ Nomanlization

34
00:02:12,121 --> 00:02:16,121
จะเกี่ยวกับฟังก์ชันการขึ้นต่อกัน แล้วก็หลักการขึ้น normal

35
00:02:16,125 --> 00:02:20,125
ด้วยนะคะ มีอยู่ 3 ข้อวันนี้

36
00:02:20,127 --> 00:02:24,127

37
00:02:24,128 --> 00:02:28,128
โดยการปรับมาตรฐานนะคะหรือ No

38
00:02:28,129 --> 00:02:32,129
Normalization มันจะเป็นทฤษฎีที่คนออกแบบฐานข้อมูล

39
00:02:32,134 --> 00:02:36,134
มาแปลงข้อมูลจากรูปที่ซับซ้อน

40
00:02:36,139 --> 00:02:40,139
นะคะ ให้มันง่าย เข้าใจ

41
00:02:40,143 --> 00:02:44,143
ก็งาน นำไปใช้งานก็ง่าย แล้วต้องเป็นระบบที่

42
00:02:44,147 --> 00:02:48,147
หลังจากออกแบบแล้ว แล้วนำไปใช้งานจริง ต้องเกิดปัญหาน้อยที่ส

43
00:02:48,150 --> 00:02:52,150
ุด โดยกระบวนการ

44
00:02:52,153 --> 00:02:56,153
ทำงานนะคะ ในการปรับบรรทัดฐานนี่ มันจะมี 3 ระดับ

45
00:02:56,155 --> 00:03:00,155
นะคะ จริง ๆ เราก็จะเรียกสั้น ๆ ระดับแรกจะเรียกว่

46
00:03:00,158 --> 00:03:04,158
า 1นะคะ 2NF 3NF นะคะ

47
00:03:04,163 --> 00:03:08,163
ในระดับปริญญาตรีนี่

48
00:03:08,167 --> 00:03:12,167
ถึง 3NF ได้ก็ถือว่าเก่งมากแล้ว

49
00:03:12,171 --> 00:03:16,171
แต่ถ้าเป็นระดับที่สูงขึ้นไปอีก ก็จะได้ถึง 5NF

50
00:03:16,176 --> 00:03:20,176
นะคะ

51
00:03:20,180 --> 00:03:24,180
อันนี้เป็น

52
00:03:24,184 --> 00:03:28,184
แผนภาพกระบวนการทำงานนะคะ ก่อนเราจะมาทำแผนภาพปรับบรรทัดฐาน

53
00:03:28,187 --> 00:03:32,187
ได้นี่ มันก็ต้องวิเคราะห์การใช้งานของผู้ใช้งานก่อน

54
00:03:32,191 --> 00:03:36,191
ว่าเขาต้องการระบบจัดการฐานข้อมูลแบบไหน  ต้องการ

55
00:03:36,195 --> 00:03:40,195
ใช้ตารางกี่ตารางในฐานข้อมูลนะคะ

56
00:03:40,199 --> 00:03:44,199
หลังจากนั้นก็จะมาวาดรูปเหมือนที่เราเรียนอาทิตย์ที่แล้วนะคะ

57
00:03:44,203 --> 00:03:48,203
มาวาดเป็นแผนถาพ เพื่อให้เข้าใจว่า

58
00:03:48,206 --> 00:03:52,206
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูลนี่ ตรง

59
00:03:52,210 --> 00:03:56,210
ตามความต้องการหรือเปล่านะคะ

60
00:03:56,211 --> 00:04:00,211
แต่รูปแบบของรูปที่เราวาดอาทิตย์ที่แล้วนี่ จะยังเป็นรูป

61
00:04:00,215 --> 00:04:04,215
แบบที่ที่เป็นบรรทัดฐาน

62
00:04:04,219 --> 00:04:08,219
หรือว่ายังไม่ได้มีการจัดระเบียบความคิดที่มันซับซ้อน

63
00:04:08,222 --> 00:04:12,222
กันออกไป หรืออาจจะคีย์หลักที่มันทับซ้อนกันนะคะ

64
00:04:12,224 --> 00:04:16,224
เราก็เลยจะต้องเอาข้อมูลจากที่เราวาดอาทิตย์ที่แล้วนี่มาเข้าสู่

65
00:04:16,227 --> 00:04:20,227
กระบวนการปรับบรรทัดฐานก่อน ซึี่งอย่างที่บอก

66
00:04:20,231 --> 00:04:24,231
เราทำแค่ถึง 3 NF นี่ ก็ถือว่าเก่งมากแล้ว

67
00:04:24,233 --> 00:04:28,233
แต่อย่างน้อยต้องถึง 3 นะคะ ไอ้บอยด์ คอดด์

68
00:04:28,235 --> 00:04:32,235
ไม่ทำก็ละไว้ได้นะคะ แต่อย่างน้อยต้อง

69
00:04:32,239 --> 00:04:36,239
ถึง 3 นะคะ

70
00:04:36,243 --> 00:04:40,243
โดยวัตถุประสงค์ของการปรับบรรทัดฐานนะคะ

71
00:04:40,248 --> 00:04:44,248
แน่นอนลดความซ้ำซ้อนกันของข้อมูล

72
00:04:44,251 --> 00:04:48,251
ก็ถือถ้าข้อมูลมันซ้ำกันนี่ เราต้องตัดออกไป เพราะถ้าซ้ำกัน

73
00:04:48,254 --> 00:04:52,254
มันยิ่งซ้ำกันมากเท่าไร เนือ้หา และพื้นที่

74
00:04:52,255 --> 00:04:56,255
ในการเก็บข้อมูลมันเยอะ แล้วก็สิ้นเปลืองงบประมาณ

75
00:04:56,259 --> 00:05:00,259
ด้วยเหมือนกันรวมถึงลดปัญหาความไม่ถูกต้อง

76
00:05:00,263 --> 00:05:04,263
ของข้อมูลนะคะ ข้อมูลนี่ นอกจากจะไม่เกิดความ

77
00:05:04,265 --> 00:05:08,265
ซ้ำซ้อนกันแล้วนี่ มันยังเกิดจากสาเหตุอื่น

78
00:05:08,267 --> 00:05:12,267
คือ ถ้าเหมือนที่อาจารย์เคยยกตัวอย่าง ก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่

79
00:05:12,272 --> 00:05:16,272
อย่างนักศึกษาเก็บข้อมูลที่คณะด้วย ที่มหาวิทลัย

80
00:05:16,275 --> 00:05:20,275
เก็บที่มหาวิทยาลัยด้วย เก็บที่สาขาด้วย วันหนึ่งคุณ

81
00:05:20,279 --> 00:05:24,279
อาจจะเปลี่ยนแปลงเบอร์โทรศัพท์ที่บ้าน

82
00:05:24,283 --> 00:05:28,283
เราก็ต้องไปตามเปลี่ยนทุกที่เลยนะคะ ซึ่งเสียเวลา

83
00:05:28,286 --> 00:05:32,286
แล้วคราวนี้ก็จะเป็นที่เถียงกันว่า

84
00:05:32,290 --> 00:05:36,290
เบอร์ไหนถูก เบอร์ไหนผิดนะคะ โดยวัตถุประสงค์ของ

85
00:05:36,292 --> 00:05:40,291
การปรับบรรทัดฐานนี่ ข้อมูลอาจจะเก็บที่แหล่ง

86
00:05:40,291 --> 00:05:44,291
นะคะ เก็บอยู่ที่เดียว แต่สามารถเรียนใช้งานหลาย ๆ

87
00:05:44,296 --> 00:05:48,296
ที่ พร้อม ๆ กันได้นะคะ แต่ถ้า

88
00:05:48,299 --> 00:05:52,299
มันมีการเปลี่ยนแปลงข้อมูล มีการลบหรือการเพิ่ม

89
00:05:52,304 --> 00:05:56,304
เป็นปัจจุบันที่สุด เราจึงเก็บข้อมูลไว้ที่เดียว

90
00:05:56,308 --> 00:06:00,308
มีแก้ไขก็ที่เดียวนะคะ เพราะฉะนั้น ข้อมูลถูกต้อง

91
00:06:00,313 --> 00:06:04,313
ก็เป็นปัจจุบันด้วย

92
00:06:04,315 --> 00:06:08,315
แล้วก็อย่างที่ให้เหตุผลเมื่อกี้นี้นะคะ การเก็บข้อมูล

93
00:06:08,318 --> 00:06:12,318
ที่เดียวนี่ มันก็จะลดการผิดพลาด การ

94
00:06:12,320 --> 00:06:16,320
เปลี่ยนแปลงข้อมูล ปรับปรุงข้อมูล อย่างที่บอก ก็คือ

95
00:06:16,321 --> 00:06:20,321
เปลี่ยนเบอร์โทรศัพท์หรือว่าเปลี่ยนบ้านเลขที่ ก็

96
00:06:20,326 --> 00:06:24,326
เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้ทุกที่

97
00:06:24,331 --> 00:06:28,331
นะคะ

98
00:06:32,336 --> 00:06:36,336
ผิดพลาดของการปรับปรุงของข้อมูลนะคะ แนวคิด

99
00:06:36,339 --> 00:06:40,339
ของการออกแบบฐานข้อมูลนี่ ก็คือการออกแบบข้อมูลที่

100
00:06:40,341 --> 00:06:44,341
ซ้ำซ้อนกันน้อยที่สุดนะคะ เพื่อประหยัดพื้นที่มนก่าร

101
00:06:44,344 --> 00:06:48,344
แล้วก็ลดปัญหาที่เกิดขึ้น ถ้าสมมติข้อมูลมันซ้ำซอนมาก

102
00:06:48,346 --> 00:06:52,346
เกินไปหรือปริมาณข้อมูลมีเยอะ

103
00:06:52,350 --> 00:06:56,350
เกินไปนะคะ

104
00:06:56,354 --> 00:07:00,354
อย่างเช่นตัวอย่างนะคะ

105
00:07:00,357 --> 00:07:04,357
ตารางด้านบน ตารางสีเทาด้านบน จะเป็นการออกแบบฐานข้อมูลที่ดี

106
00:07:04,361 --> 00:07:08,361
เดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่า

107
00:07:08,364 --> 00:07:12,364
ในตารางข้อมูลนี่ มันจะมีตารางของพนักงาน และตารางสาขา

108
00:07:12,365 --> 00:07:16,365
นะคะ จะเห็นได้ว่า

109
00:07:16,369 --> 00:07:20,369
ตารางพนักงานนี่ จะมีส่วนหนึ่งที่เป็นรหัสสาขา

110
00:07:20,371 --> 00:07:24,371
ห้อยไว้อยู่ ถามว่าทำไมไม่เอา

111
00:07:24,374 --> 00:07:28,374
ข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ ทำไมต้องแยก

112
00:07:28,375 --> 00:07:32,375
ออกนะคะ อย่าง

113
00:07:32,377 --> 00:07:36,377
ถ้านักศึกษาดูคนแรกนะคะ พนังงานคนแรก รหัสสาขา

114
00:07:36,390 --> 00:07:40,390
B005

115
00:07:40,394 --> 00:07:44,394
ก็คือสาขาเชียงใหม่

116
00:07:44,398 --> 00:07:48,398
ถ้าสมมติว่า

117
00:07:48,402 --> 00:07:52,402
พนักงานคนที่ 1 ลาออก

118
00:07:52,404 --> 00:07:56,404
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ

119
00:07:56,407 --> 00:08:00,407
มีการลบข้อมูล ลบคนนี้ออก

120
00:08:00,411 --> 00:08:04,411
ขีดฆ่าทิ้ง เดี๋ยวนะคะ

121
00:08:04,413 --> 00:08:08,413
ขีดฆ่าทิ้ง สิ่งไหนที่หายไปบ้าง

122
00:08:08,415 --> 00:08:12,415
แน่นอน สาขาเชียงใหม่จะหายไปด้วย สมมติ

123
00:08:12,419 --> 00:08:16,419
นะคะ ถ้าสมมติเราอยู่ด้วยกัน แต่ถ้าสมมติพนักงานคนนี้ลาออก

124
00:08:16,423 --> 00:08:20,423
สาขาเชียงใหม่ยังอยู่ไหม ยังอยู่นะคะ

125
00:08:20,427 --> 00:08:24,427
ซึ่งแตกต่างจากด้านล่างนะคะ ด้านล่าง เห็นไหมคะ ว่า

126
00:08:24,431 --> 00:08:28,431
ถ้าสมมติว่าอาจารย์ลบทิ้งหมดเลย

127
00:08:28,435 --> 00:08:32,435
ลบทิ้งหมดนี่ กากบาททิ้ง

128
00:08:32,437 --> 00:08:36,437
สาขาเชียงใหม่หายไปด้วย

129
00:08:36,440 --> 00:08:40,440
อันนี้คือการออกแบบที่ไม่ดีนะคะ เหมือน

130
00:08:40,445 --> 00:08:44,445
ว่าคนข้างล่าง คนนี้ออก

131
00:08:44,446 --> 00:08:48,446
สาขาพิษณุโลกก็หายไปด้วย

132
00:08:48,449 --> 00:08:52,449
แต่ถ้าเป็นตารางด้านบนนะคะ ถ้า

133
00:08:52,451 --> 00:08:56,451
คนนี้ลาออก สาขายังอยู่ไหม ยังอยู่เหมือนเดิมนะคะ

134
00:08:56,455 --> 00:09:00,455
อันนี้คือการออกแบบฐานข้อมูล

135
00:09:00,459 --> 00:09:04,459
ที่ดี ถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อกันเราจะต้องแยกตาราง

136
00:09:04,465 --> 00:09:08,465
ออกนะคะ

137
00:09:08,469 --> 00:09:12,469
ตัวอย่าง

138
00:09:12,471 --> 00:09:16,471
นะคะ ถ้าการออกแบบที่ดี เราจะลด

139
00:09:16,476 --> 00:09:20,476
ปัญหาความซ้ำซ้อนกันของข้อมูลออกได้นะคะ

140
00:09:20,480 --> 00:09:24,480
อย่างเช่นตรงนี้ อันนี้เป็นตารางที่ออกแบบไม่ดี

141
00:09:24,485 --> 00:09:28,485
นะคะ  เห็นไหมคะ ว่ามันจะมีรหัสสาขา แล้วก็

142
00:09:28,487 --> 00:09:32,487
ที่อยู่ อยู่ในตารางเดียวกัน

143
00:09:32,489 --> 00:09:36,489
ถ้าสมมติว่าอาจารย์เพิ่มเข้ามาใหม่

144
00:09:36,490 --> 00:09:40,490
อีก 1 คนนะคะ เป็น EM

145
00:09:40,494 --> 00:09:44,494
10 ตรงนี้นะคะ ถ้าอาจารย์ต้องการเพิ่ม

146
00:09:44,500 --> 00:09:48,500
พนักงานสาขาเชียงใหม่ อาจารย์ก็ต้องมา

147
00:09:48,502 --> 00:09:52,502
กรอกข้อมูลตรงนี้อีกว่าเชียงใหม่นะ โน่นนี่ นั่นโน่น

148
00:09:52,505 --> 00:09:56,505
นะคะ แต่ถ้าเป็นการออกแบบฐานข้อมูลที่ดีนี่

149
00:09:56,511 --> 00:10:00,511
เราแค่ใส่รหัสสาขานะคะ

150
00:10:00,515 --> 00:10:04,515
ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้นะคะ

151
00:10:04,519 --> 00:10:08,519
เหมือน

152
00:10:08,522 --> 00:10:12,522
เวลาคุณไปธนาคารใช่ไหมคะ คุณก็แค่ยื่นบตรั

153
00:10:12,524 --> 00:10:16,524
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณลงไป

154
00:10:16,525 --> 00:10:20,525
นะคะ หรืออาจจะเอาชิปการ์ดของคุณเสียบเข้าไปใน

155
00:10:20,529 --> 00:10:24,529
เครื่อง ถามว่าตอนนี้เราได้กรอกข้อมูลไหม ไม่ต้อง

156
00:10:24,531 --> 00:10:28,531
ขอแค่มีเลขบัตรประชาชน ข้อมูลทุกอย่างที่คุณมี

157
00:10:28,532 --> 00:10:32,532
เขาจะดึงออกมาจากระบบให้เลย เราไม่ต้องเสียเวลากรอกนะคะ

158
00:10:32,535 --> 00:10:36,535
เหมือนเมื่อก่อนนี่

159
00:10:36,539 --> 00:10:40,539
ต้องเขียนใส่กระดาษเลขบัตรประชาชนอะไร

160
00:10:40,543 --> 00:10:44,543
ชื่ออะไร นามสกุลอะไร ที่อยู่ที่ไหน เบอร์โทรศัพท์อะไร เด๋ยวนี้ไม่้องเลย ขอแค่ม

161
00:10:44,547 --> 00:10:48,547
ข้อมูลทุกอย่างเราสามารถดึงขึ้นมาได้อยู่แล้วนะคะ

162
00:10:48,550 --> 00:10:52,550
อันนี้ก็เช่นเดียวกันถ้ากรอกข้อมูลแบบไม่ดีนี่

163
00:10:52,554 --> 00:10:56,554
เราต้องกรอกข้อมูลทุกช่องทุกช่องเลยนี่

164
00:10:56,558 --> 00:11:00,558
คนเดียว ไม่เดือดร้อนค่ะ แต่ถ้าเป็พนักงานใหม่

165
00:11:00,565 --> 00:11:04,565
เป็นเหมือนโรงงานน่ะค่ะ ทีละ 1,000 คน ต้องนั่ง

166
00:11:04,569 --> 00:11:08,569
กรอกเชียงใหม่เป็นพัน ๆ ครั้งนี่ เสียเวลา

167
00:11:08,571 --> 00:11:12,571
มาก ๆ นะคะ อันนี้คือการออกแบบที่

168
00:11:12,574 --> 00:11:16,574
ไม่ดีนะคะ

169
00:11:16,579 --> 00:11:20,579
กับอีกอย่างหนึ่ง ถ้าสมมติว่า

170
00:11:20,583 --> 00:11:24,583
เมื่อกี้อาจารย์เพิ่มพนักงานแล้ว ถ้าอาจารย์อยากเพิ่มแค่สาขา

171
00:11:24,587 --> 00:11:28,587
นะคะ อยากเพิ่มแค่สาขา

172
00:11:28,590 --> 00:11:32,590
ซึ่งในตารางนี้ คีย์หลัก จำได้ไหมคะ

173
00:11:32,591 --> 00:11:36,591
จะเป็นคีย์ที่ขีดเส้นใต้

174
00:11:36,593 --> 00:11:40,593
ซึ่งอาจารย์อยากเพิ่มสาขา สมมติอาจารย์เพิ่ม

175
00:11:40,599 --> 00:11:44,599
B100 สกลนคร

176
00:12:28,639 --> 00:12:32,639
ปัญหาจากการออกแบบไม่ดี

177
00:12:32,641 --> 00:12:36,641
กับ

178
00:12:36,643 --> 00:12:40,643
ปัญหาต่อมา เป็นปัญหาการลบข้อมูลอย่างที่อาจารย์บอก

179
00:12:40,648 --> 00:12:44,648
นะคะ ถ้าพนัคนนี้ลาออก สาขาเชียงใหม่

180
00:12:44,651 --> 00:12:48,651
หายไปด้วยนะคะ โดน

181
00:12:48,655 --> 00:12:52,655
ลบไป กรณีความผิดพลาดจากการเปลี่ยนแปลง

182
00:12:52,659 --> 00:12:56,659
นะคะ เหมือน B003 นี่ค่ะ เป็นกรุงเทพฯ

183
00:12:56,663 --> 00:13:00,663
ใช่ไหมคะ แล้วคราวนี้ข้อมูลมันอยู่ใน

184
00:13:00,668 --> 00:13:04,668
ตารางเดียวกัน ถ้านักศึกษาจะแก้  สมมติว่าเราย้าย

185
00:13:04,670 --> 00:13:08,670
จากรุงเทพฯ ไปอยู่นนทบุรี

186
00:13:08,673 --> 00:13:12,673
สมมติมีพนักงาน 3,000 คน

187
00:13:12,675 --> 00:13:16,675
คุณต้องแก้กรุงเทพฯ 3000 ครั้ง

188
00:13:16,680 --> 00:13:20,680
เป็นนนทบุรีนะคะ

189
00:13:20,685 --> 00:13:24,685
ถ้าพนักงานมี คน 2 คน ไม่ใช้ปัญหาค่ะ แต่ถ้าเป็น

190
00:13:24,687 --> 00:13:28,687
โรงงานขนาดใหญ่ นั่งแก้ทีละ 3,000 คน ไม่ใช่เรื่องสนุกแน่ ๆ นะคะ

191
00:13:28,690 --> 00:13:32,690

192
00:13:32,692 --> 00:13:36,692
อันนี้ก็เป็นปัญหานะคะ

193
00:13:36,696 --> 00:13:40,696
เพราะฉะนั้น เราควรแยกตารางพนักงาน

194
00:13:40,701 --> 00:13:44,701
กับตารางสาขาออกจากกันนะคะ นี่คือเหตุผล

195
00:13:44,705 --> 00:13:48,705
อันนี้คือข้อมูลขนาดเล็กนะคะ เรายังเห็นปัญหาขนาดนี้ สมมติถ้า

196
00:13:48,708 --> 00:13:52,708
เป็นองค์กรขนาดใหญ่ เป็นบริษัท เป็นโรงงาน หรือ

197
00:13:52,711 --> 00:13:56,711
ระดับโรงเรียนมีนักเรียน 2-3 ร้อย หรือ 2-3 พันคน

198
00:13:56,715 --> 00:14:00,715
ก็ได้นะคะ มันก็จะมีปัญหาเยอะมาก ถ้าเกิดเราจัดกตารางไม่ดี

199
00:14:00,720 --> 00:14:04,720
นะคะ

200
00:14:04,725 --> 00:14:08,725
จากปัญหาที่เกิดขึ้นเมื่อกี้อย่างที่บอกค่ะ

201
00:14:08,727 --> 00:14:12,727
เราจะแก้ปัญหาโดยการแยกตารางเป็น 2 ตรารางแบบนี้

202
00:14:12,729 --> 00:14:16,729
นะคะ

203
00:14:16,733 --> 00:14:20,733
การขึ้นต่อกัน เดี๋ยว

204
00:14:20,735 --> 00:14:24,735
จะเป็นเกี่ยวกับตารางหนึ่งมีผลกับอีกตารางหนึ่ง เราเรียกฟังก์ชัน

205
00:14:24,738 --> 00:14:28,738
การขึ้นต่อกัน

206
00:14:28,740 --> 00:14:32,740
เดี๋ยวดูตัวอย่างเลยแล้วกันนะคะ อย่างเช่น ตารางนี้

207
00:14:32,743 --> 00:14:36,743
นะคะ ดูจากรหัสพนักงานนะคะ

208
00:14:36,744 --> 00:14:40,744
เราจะเห็นได้ว่ารหัสพนักงาน

209
00:14:40,747 --> 00:14:44,747
จะส่งผลกับชื่อตำแหน่ง

210
00:14:44,751 --> 00:14:48,751
สัญลักษณ์ของการขึ้นต่อกันนะคะ อันไหนเป็นตัวหลั

211
00:14:48,755 --> 00:14:52,755
กจะชี้ไปที่ตัวรองตามหัวลูกศรเลย

212
00:14:52,757 --> 00:14:56,757
ดูทิศทางตามหัวลูกศรนะคะ อันไหน

213
00:14:56,760 --> 00:15:00,760
เป็นตัวหลัก อันไหนเป็นตัวรองนะคะ

214
00:15:00,763 --> 00:15:04,763
อย่างเช่น ตัวนี้

215
00:15:04,767 --> 00:15:08,767
ถามว่าตำแหน่งมาชี้ที่รหัส

216
00:15:08,769 --> 00:15:12,769
พนักงานได้ไหมนะคะ ถามว่าไม่ได้

217
00:15:12,774 --> 00:15:16,774
นะคะ เพราะการขึ้นต่อกันจะต้องเป็นลักษณะ 1 ต่อ 1

218
00:15:16,775 --> 00:15:20,775
เท่านั้น นะคะ เป็น

219
00:15:20,779 --> 00:15:24,779
1 ต่อกลุ่ม ไม่ได้

220
00:15:24,783 --> 00:15:28,783

221
00:15:28,784 --> 00:15:32,784
ชนิดของการขึ้นต่อกัน

222
00:15:32,789 --> 00:15:36,789
นะคะ จะมีอยู่ 4 ชนิดนะคะ

223
00:15:36,792 --> 00:15:40,792
ชนิดแรก เป็นการขึ้นต่อกันโดยสมบูรณ์นะคะ

224
00:15:40,795 --> 00:15:44,795
ซึ่งอาจจะเป็นเกี่ยวกับ

225
00:15:44,799 --> 00:15:48,799
ตารางนะคะ จะมีคอลัมน์ 1 คอลัมน์

226
00:15:48,802 --> 00:15:52,802
หรือมากกว่า 1 คอมลัมน์มาประกอบกัน โดยใน 1 ค่านั้น ๆ จะ

227
00:15:52,806 --> 00:15:56,806
บรรจุค่าที่ระบุความพิเศษ

228
00:15:56,811 --> 00:16:00,811
ของแถวแถวหนึ่งได้อย่างชัดเจนนะคะ

229
00:16:00,815 --> 00:16:04,815
ก็คือ Attribute Attribute 1 นี่

230
00:16:04,820 --> 00:16:08,820
Record แถว ๆ นั้นนี่ จะมีลักษณะพิเศษอย่างไร

231
00:16:08,822 --> 00:16:12,822
นะคะ โดยในทุกความสัมพันธ์นี่จะต้อง

232
00:16:12,823 --> 00:16:16,823
ระบุค่าคีย์หลักไว้ด้วย ซึ่ง

233
00:16:16,828 --> 00:16:20,828
คีย์หลักนี่คือเป็นค่าเอกลักษณ์ ไม่ซ้ำกันอย

234
00:16:20,832 --> 00:16:24,832
ู่แลนะคะ

235
00:16:24,836 --> 00:16:28,836
อย่างเช่นการขึ้นต่อกันโดยสมบูรณ์

236
00:16:28,838 --> 00:16:32,838
อันแรกนะคะ Attribute ที่...

237
00:16:32,843 --> 00:16:36,843
จำได้ใช่ไหมคะ คีย์หลักจ

238
00:16:36,847 --> 00:16:40,847
ะเป็นที่มีขีดเส้นใต้นะคะ

239
00:16:40,851 --> 00:16:44,851
คอลัมน์ที่ไม่ใช่คีย์หลัก จะขึ้นตรง

240
00:16:44,855 --> 00:16:48,855
ต่อคอลัมน์ที่เป็นคีย์หลักคอลัมน์เดียวเท่านั้น

241
00:16:48,859 --> 00:16:52,859
นะคะ เช่น เลขบัตรประชาชนตัวนี้

242
00:16:52,863 --> 00:16:56,863
จะขึ้น จะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ

243
00:16:56,872 --> 00:17:00,872
เพราะฉะนั้น การขึ้นต่อกันโดยสมบูรณ์ จะเป็น

244
00:17:00,877 --> 00:17:04,877
แบบ 1 ต่อ 1 นะคะ เลขบัตรประชาชน 1 เลข

245
00:17:04,881 --> 00:17:08,881
จะต้องเป็นของคน ๆ เดียวเท่านั้น

246
00:17:08,884 --> 00:17:12,884
ไม่ใช่ว่าเลขบัตรประชาชนนี้ใช้ 10 คน เป็นไปไม่ได้นะคะ

247
00:17:12,887 --> 00:17:16,887

248
00:17:16,892 --> 00:17:20,892
ตัวอย่าง

249
00:17:20,896 --> 00:17:24,896
นะคะ ตารางที่มีคอลัมน์

250
00:17:24,900 --> 00:17:28,900
หลายตัวนะคะ ขึ้นอยู่กับคีย์หลักตัวเดียว เช่น คน 1 คนนี่

251
00:17:28,905 --> 00:17:32,905
ข้อมูล ชื่อ นามสกุล วันเกิด ปีเกิด วันที่ทำบัตร ใช่ไหมคะ

252
00:17:52,932 --> 00:17:56,932
นะคะ คืออะไร ซ้ำกันได้ทุกอย่างค่ะ ยกเว้นหมายเลข

253
00:17:56,939 --> 00:18:00,939
บัตรประชาชน

254
00:18:00,943 --> 00:18:04,943

255
00:18:04,947 --> 00:18:08,947
แต่

256
00:18:08,950 --> 00:18:12,950
บางตารางนะคะ ก็อาจจะเป็นการ

257
00:18:12,952 --> 00:18:16,952
รวมตัวกันของคีย์หลักมากกว่า 1 คีย์หลักนะคะ

258
00:18:16,955 --> 00:18:20,955
มารวมกัน เช่น นักศึกษา

259
00:18:20,959 --> 00:18:24,959
คนนี้นะคะ รหัสนักศึกษานี้

260
00:18:24,963 --> 00:18:28,963
ลงทะเบียนวิชานี้นะคะ ได้เกรด

261
00:18:28,964 --> 00:18:32,964
อะไรนะคะ อันนี้ก็เป็นความสัมพันธ์ที่เกิดขึ้นได้เหมือนกัน ถามว่ารหัสนั

262
00:18:32,967 --> 00:18:36,967
กศึกษาซ้ำกันได้ไหม ไม่ซ้ำนะคะ

263
00:18:36,969 --> 00:18:40,969
รหัสวิชาซ้ำกันได้ไหม ไม่ซ้ำนะคะ เหมือนชื่อ

264
00:18:40,972 --> 00:18:44,972
วิชาอาจารย์ก็รหัสหนึ่ง

265
00:18:44,976 --> 00:18:48,976
ชื่ออาจารย์คนอื่น ก็รหัสวิชาอีกอันหนึ่ง อันนี้ไม่ซ้ำกันอยู่แล้ว

266
00:18:48,979 --> 00:18:52,979
นะคะ ต่อมา

267
00:18:52,983 --> 00:18:56,983
จะเป็นการขึ้นต่อกันบางส่วน มันก็จะเป็น

268
00:18:56,986 --> 00:19:00,986
อาศัยความสัมพันธ์ที่เกิดขึ้นจาก

269
00:19:00,988 --> 00:19:04,988
คีย์ผสมนะคะ อาจจะเป็นตารางอื่น

270
00:19:04,993 --> 00:19:08,993
หรือ 2 ตารางรวมกัน อาจจะไม่ใช่คีย์หลักก็ได้แต่มันมี

271
00:19:08,997 --> 00:19:12,997
ความหมายกับอีกคอลัมน์หนึ่งนะคะ เดี๋ยวยกตัวอย่างเลยดีกว่า

272
00:19:12,999 --> 00:19:16,999
นะคะ

273
00:19:17,004 --> 00:19:21,004
อย่างเช่น เมื่อตารางที่อาจารย์ให้ดูเมื่อกี้นะคะ มีรหัสนักศึกษา

274
00:19:21,007 --> 00:19:25,007
รหัสวิชา มีเกรด แล้วก็มีการบอกด้วยว่า

275
00:19:25,011 --> 00:19:29,011
รหัสวิชานี้เป็นชื่อวิชาอะไร

276
00:19:29,012 --> 00:19:33,012
นะคะ มันจะเป็น

277
00:19:33,016 --> 00:19:37,016
การเกิดขึ้น เมื่อคีย์หลักประกอบกันด้วยคอลัมน์หลาย Attribute รวมกัน

278
00:19:37,016 --> 00:19:41,016
โดยบางส่วนของคีย์หลัก

279
00:19:41,020 --> 00:19:45,020
สามารถไประบุค่า Attribute อื่น

280
00:19:45,024 --> 00:19:49,024
ที่ไม่ใช่คีย์หลักได้นะคะ อย่างเช่น

281
00:19:49,029 --> 00:19:53,029
ในความสัมพันธ์นี้ คีย์หลักจะมี 2 ตัวนะคะ มีรหัสนักศึกษา

282
00:19:53,033 --> 00:19:57,033
กับรหัสวิชานะคะ

283
00:19:57,038 --> 00:20:01,038
ถามว่าถ้า

284
00:20:01,040 --> 00:20:05,040
มีแต่รหัสนักศึกษา เกรด

285
00:20:05,041 --> 00:20:09,041
นะคะ รหัสวิชา แล้วเราจะรู้ไหมว่าชื่อวิชาที่เรา

286
00:20:09,043 --> 00:20:13,043
เรียนไปนี่ ชื่อวิชาอะไร

287
00:20:13,045 --> 00:20:17,045
นะคะ เหมือนบางคน

288
00:20:17,049 --> 00:20:21,049
รู้รหัสวิชา แต่จำชื่อวิชาไม่ได้ก็มี

289
00:20:21,054 --> 00:20:25,054
นะคะ เพราะฉะนั้น รหัสวิชานี่ ก็สามารถไปส่งผลกับชื่อวิชา

290
00:20:25,058 --> 00:20:29,058
เหมือนกัน เพราะเป็นตัวระบุว่ารหัสวิชานี้

291
00:20:29,064 --> 00:20:33,064
ชื่อวิชาอะไรนะคะ ก็คือคีย์หลักในตารางนี้

292
00:20:33,069 --> 00:20:37,069
มี 2 อัน แต่มีคีย์หลัก 1 ตัวนี้ แต่

293
00:20:37,076 --> 00:20:41,076
ไปมีผลกับอีก Attribute หนึ่งได้นะคะ อันนี้คือการ

294
00:20:41,082 --> 00:20:45,082
ขึ้นต่อกันบางส่วน

295
00:20:45,083 --> 00:20:49,083
นะคะ อย่างเช่นตัวนี้

296
00:20:49,086 --> 00:20:53,086
ก็จะเป็นของจริง ถ้าสมมติว่าอาจารย์ตัดรห

297
00:20:53,087 --> 00:20:57,087
ัสนักษออก มีแค่รหัสวิชา มีเกรด มีชื่อวิชาดารเขียนโปปรแกรม

298
00:20:57,091 --> 00:21:01,091
แล้วถาม รู้ไหมคะ ว่าเกรด A นี้ของใคร

299
00:21:01,095 --> 00:21:05,095
ไม่รู้นะคะ

300
00:21:05,099 --> 00:21:09,099
หรือว่า เดี๋ยวลบอันนี้ออก

301
00:21:09,102 --> 00:21:13,102
ก่อนนะคะหรือว่าอาจารย์ลบรหัส

302
00:21:13,103 --> 00:21:17,103
วิชาออก เหลือแต่นักศึกษา

303
00:21:17,107 --> 00:21:21,107
เหลือเกรด เหลือชื่อวิชา แล้วถามว่า

304
00:21:21,111 --> 00:21:25,111
แล้วรหัสวิชาอะไรล่ะ

305
00:21:25,115 --> 00:21:29,115
ที่เราได้เกรด A เราก็ไม่ทราบอีกเหมือนกันนะคะ อันนี้คือ

306
00:21:29,120 --> 00:21:33,120
การขึ้นต่อกันบางส่วนนะคะ

307
00:21:33,122 --> 00:21:37,122

308
00:21:37,126 --> 00:21:41,126
ตัวอย่างนะคะ

309
00:21:41,131 --> 00:21:45,131
ต่อมา เป็นการขึ้นต่อกันแบบส่งต่อนะคะ ก็จะเป็นความสัมพันธ์

310
00:21:45,133 --> 00:21:49,133
ที่เกิดขึ้นก็ต่อเมื่อ มี Attribute อื่น ๆ ที่

311
00:21:49,135 --> 00:21:53,135
ไม่ใช่คีย์หลัก แต่

312
00:21:53,139 --> 00:21:57,139
ไปสามารถขึ้น สามารถระบุค่า

313
00:21:57,141 --> 00:22:01,141
ของ Attribute ใน Record ได้นะคะ ซึ่งเป็นการออกแบบ

314
00:22:01,146 --> 00:22:05,146
ไม่เหมาะสม นะคะ

315
00:22:05,149 --> 00:22:09,149
เพราะส่วนใหญ่แล้วในตารางนี่ ถ้า

316
00:22:09,152 --> 00:22:13,152
จะระบุค่าอื่นให้คอลัมน์อื่นได้ ก็

317
00:22:13,154 --> 00:22:17,154
ควรจะต้องเป็นคีย์หลักเท่านั้นนะคะ

318
00:22:17,159 --> 00:22:21,159
ดูตัวอย่างนะคะ

319
00:22:21,163 --> 00:22:25,163
เช่น  ตารางนี้เขาบอกว่าสิ่งที่เกิดขึ้น คือ

320
00:22:25,167 --> 00:22:29,167
Attribute ก็คือคอลัมน์ที่ไม่ใช่คีย์หลัก หรือ Primary Key

321
00:22:29,170 --> 00:22:33,170
นะคะ ก็คือไม่คอลัมน์ที่มีเส้นขีดนี่ มันไประบุค่าในคอม

322
00:22:33,176 --> 00:22:37,176
ได้เช่น ตารางนี่คีย์หลักก็คือเลขที่ประจำตัว

323
00:22:37,180 --> 00:22:41,180
นะคะ โดยเลขประจำตัวนี้จะไป

324
00:22:41,183 --> 00:22:45,183
มีผลกับชื่อ นามสกุล ที่อยู่ ตำแหน่ง

325
00:22:45,187 --> 00:22:49,187
ใช่ไหมคะ แต่คราวนี้ รถประจำตำแหน่ง

326
00:22:49,189 --> 00:22:53,189
มันไม่ถูกระบุโดยเลขประจำตัว

327
00:22:53,191 --> 00:22:57,191
มันถูกระบุโดยรหัสตำแหน่ง

328
00:22:57,195 --> 00:23:01,195
เหมือนถ้าเป็นผู้จัดการนี่

329
00:23:01,201 --> 00:23:05,201
แทนที่ผู้จัดการจะรู้เลยว่ารถประจำตำแหน่งคืออะไร แต่เขาไปเช็กเลข

330
00:23:05,205 --> 00:23:09,205
แทนที่จะเช็กกับเลขประจำตัว อันนี้

331
00:23:09,210 --> 00:23:13,210
คือการออกแบบที่ไม่ดี

332
00:23:13,216 --> 00:23:17,216
เพราะฉะนั้น ถ้าจะให้รถประจำตำแหน่ง

333
00:23:17,220 --> 00:23:21,220
วิธีการแก้ปัญหา ก็คือเราควรจะแยกตาราง

334
00:23:21,225 --> 00:23:25,225
นี้ ออก

335
00:23:25,229 --> 00:23:29,229
ไปสร้างตารางใหม่เลยค่ะ มันไม่ควรจะไปขึ้นกับตาราง

336
00:23:29,231 --> 00:23:33,231
ที่มีคีย์หลัก

337
00:23:41,241 --> 00:23:45,241
กับต่อมาเป็นการขึ้นต่อกันเชิงกลุ่ม

338
00:23:45,245 --> 00:23:49,245
นะคะ ก็จะเป็นความสัมพันธ์

339
00:23:49,248 --> 00:23:53,248
ระหว่างคอลัมน์ หรือ Attribute นี่ คือ ขึ้นต่อกันโดยสมบูรณ์นะคะ

340
00:23:53,253 --> 00:23:57,253
ก็ไปสามารถไประบุค่าอื่นได้

341
00:23:57,254 --> 00:24:01,254
นะคะ โดยที่อย่างเช่นตัวอย่างนะคะ

342
00:24:01,258 --> 00:24:05,258
ในตารางนี้นะคะ จะมีรหัส

343
00:24:05,263 --> 00:24:09,263
หลักสูตร สามารถระบุรหัสวิชาได้หลายวิชา เช่น

344
00:24:09,267 --> 00:24:13,267
จในรหัสนักศึกษาจะได้เห็นได้ว่ามีเลข

345
00:24:13,268 --> 00:24:17,268
122

346
00:24:17,269 --> 00:24:21,269
เป็นรหัสนักศึกษา 122 คืออะไร

347
00:24:21,273 --> 00:24:25,273
ก็คือหลักสูตรที่เราเรียนอยู่นะคะ

348
00:24:25,274 --> 00:24:29,274
ซึ่งในหลักสูตรที่เราเรียนนี่ มันมี

349
00:24:29,277 --> 00:24:33,277
วิชามากกว่า 20 วิชา

350
00:24:33,281 --> 00:24:37,281
นะคะ นั่นก็คือในรหัสหลักสูตรนี่

351
00:24:37,284 --> 00:24:41,284
มันสามารถระบุหรัสวิชาได้หลากหลาย

352
00:24:41,291 --> 00:24:45,291
วิชามาก ๆ นะคะ อันนี้ก็คือ

353
00:24:45,295 --> 00:24:49,295
การขึ้นต่อกันแบบมีค่ามากกว่า 1

354
00:24:49,297 --> 00:24:53,297
นะคะ รหัสหลักสูตร สามารถระบุรหัสวิชาได้หลายค่า

355
00:24:53,299 --> 00:24:57,299
นั่นเองนะคะ แล้วรหัสหลักสูตร ก็สามารถระบุค่า

356
00:24:57,303 --> 00:25:01,303
รหัสนักศึกษาได้หลายคนเช่นเดียวกัน

357
00:25:01,307 --> 00:25:05,307
เหมือนตอนนี้หลักสูตรที่เราเรียนนี่ มีนักศึกษามากกว่า 100 คน

358
00:25:05,311 --> 00:25:09,311
แต่รหัสหลักสูตรเดียวนะ

359
00:25:09,314 --> 00:25:13,314
นะคะ นี่คือความสัมพันธ์แบบระบุค่าได้มากกว่า 1 นั่นเอง

360
00:25:13,316 --> 00:25:17,316
แบบหลายค่านะคะ

361
00:25:17,320 --> 00:25:21,320
เพราะฉะนั้น

362
00:25:21,323 --> 00:25:25,323
วิธีการแก้ปัญหาของสิ่งที่เกิดขึ้นนะคะ

363
00:25:25,327 --> 00:25:29,327
เราเลยจะต้องมีการ กระบวนการปรับบรรทัดฐาน

364
00:25:29,331 --> 00:25:33,331
หรือว่ากระบวนการปรับปรุงโครงสร้างของ ที่มีความซ้ำซ้อนกัน

365
00:25:33,335 --> 00:25:37,335
ให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน เป็นรูปแบบ

366
00:25:37,340 --> 00:25:41,340
ที่พร้อมที่จะเอาไปพัฒนาเป็นฐานข้อมูลได้

367
00:25:41,342 --> 00:25:45,342
นะคะ โดยหลักการนะคะ อย่างที่บอก มี 5 ระดับ

368
00:25:45,344 --> 00:25:49,344
แต่ในระดับที่ 3 นี่ ก็ถือว่าเพียงพอสำหรับการออกแบบฐานข้อมูลในปัจจุบัน

369
00:25:49,347 --> 00:25:53,347
แล้วนะคะ โดย

370
00:25:53,352 --> 00:25:57,352
คีย์หลักของการทำงานนะคะ

371
00:25:57,355 --> 00:26:01,355
ขั้นที่ 1 นะคะ กำจัดกลุ่มของข้อมูลมีความซ้ำซ้อนกันออกไป

372
00:26:01,359 --> 00:26:05,359
ข้อแรกง่ายมาก ๆ

373
00:26:05,362 --> 00:26:09,362
ง่ายที่สุด ก็คือ 1NF นะคะ

374
00:26:09,365 --> 00:26:13,365
ต่้อมา ข้อที่ 2 หรือ 2 NF นะคะ

375
00:26:13,367 --> 00:26:17,367
จะกำจัดการขึ้นต่อกันบางส่วนออก

376
00:26:17,373 --> 00:26:21,373
นะคะ ขั้นสุดท้าย

377
00:26:21,377 --> 00:26:25,377
3NF นะคะ กำจัดการขึ้นต่อกันของ Attribute

378
00:26:25,381 --> 00:26:29,381
ที่ไม่ใช่คีย์หลักนะคะ เดี๋ยวจะมาดู

379
00:26:29,384 --> 00:26:33,384
ทีละขั้น ว่ามันจะต้องเป็นอย่างไรบ้างนะคะ

380
00:26:33,387 --> 00:26:37,387
ข้อแรกง่ายที่สุด ง่ายมาก ๆ นะคะ

381
00:26:37,388 --> 00:26:41,388
ให้นักศึกษาจำ

382
00:26:41,391 --> 00:26:45,391
กระบวนการหลัก ๆ ก็จะมี 3 ข้อนะคะ

383
00:26:45,392 --> 00:26:49,392
ดูก่อน ว่าข้อมูลมันซ้ำซ้อนกันไหม ขั้นที่ 2 ก็ดู

384
00:26:49,395 --> 00:26:53,395
มันขึ้นต่อกันแค่บางส่วนหรือเปล่านะคะ ขั้นที่ 3

385
00:26:53,399 --> 00:26:57,399
ค่าอันไหนไม่ใช่คีย์หลัก แต่มันไปส่งผลกระทบ

386
00:26:57,403 --> 00:27:01,403
กับข้อมูลอื่นได้หรือเปล่านะคะ

387
00:27:01,407 --> 00:27:05,407
ดูขั้นตอนที่ 1 ก่อนนะคะ ขั้นตอนที่ 1 ง่ายมาก

388
00:27:05,411 --> 00:27:09,411
นะคะ ทุก ๆ คอลัมน์

389
00:27:09,415 --> 00:27:13,415
หรือ Attribute ในแต่ละ Record จะต้องเป็นค่า Single Value

390
00:27:13,417 --> 00:27:17,417
คือมีค่าเดียวเท่านั้นนะคะ จะใส่แบบนี้

391
00:27:17,418 --> 00:27:21,418
ไม่ได้ เพราะฉะนั้น ข้อมูลทุกแถวจะต้องมีค่าที่ไม่ซ้ำกัน

392
00:27:21,422 --> 00:27:25,422
อย่างตัวนี้ นักศึกษาคนที่ 1

393
00:27:25,424 --> 00:27:29,424
แน่นอนนักศึกษา 1 เทอมนี้คุณลงทะเบียนประมาณ 6-7 วิชา

394
00:27:29,426 --> 00:27:33,426
ใช่ไหมคะ ข้อมูลมันก็จะเป็นแบบนี้

395
00:27:33,433 --> 00:27:37,433
ถ้าเราไม่มีการทำ Normalization

396
00:27:37,435 --> 00:27:41,435
แต่คราวนี้ขั้นตอนที่ 1 เราจะ

397
00:27:41,439 --> 00:27:45,439
ตัดข้อมูลที่ซ้ำซ้อนกันออก วิธีการง่ายมากค่ะ

398
00:27:45,440 --> 00:27:49,440
คือแยกข้อมูลออกเป็นอย่างละแถวที่ไม่ซ้ำกัน

399
00:27:49,443 --> 00:27:53,443
ดูตัวอย่างนะคะ วิธี

400
00:27:53,444 --> 00:27:57,444
การทำ 1 NF ง่ายมากค่ะ ถ้า

401
00:27:57,446 --> 00:28:01,446
ข้อมูลตัวไหนเปคนที่ 1 ลงวิชา... ลงทะเบียนเรียน 3 วิชาใช่ไหมคะ

402
00:28:01,449 --> 00:28:05,449
คนที่ 2 มี 2 วิชา สามารถทำ

403
00:28:05,450 --> 00:28:09,450
ในรูปแบบ 1NF ก็คือเอามากระจายออกมาค่ะ เอาข้อมูล

404
00:28:09,456 --> 00:28:13,456
พวกนี้ออกมา กระจายออกเห็นไหมคะ กระจายออก

405
00:28:13,458 --> 00:28:17,458
1NF ง่ายมากนะคะ

406
00:28:17,463 --> 00:28:21,463
ข้อมูลพวกนี้ก็ทำซ้ำลงมา ทำซ้ำลงมา

407
00:28:21,464 --> 00:28:25,464
ทำซ้ำลงมานะคะ ทำซ้ำลงมา

408
00:28:25,467 --> 00:28:29,467
ถามว่า เอ้า อาจารย์คะ ทำไม

409
00:28:29,470 --> 00:28:33,470
มัน... แล้วทำไม 001 มันซ้ำกันได้ล่ะ โนี่นั่นโน่น

410
00:28:33,474 --> 00:28:37,474
แตรหัสวิชาเขาไม่ซ้ำกัน

411
00:28:37,480 --> 00:28:41,480
เห็นไหมคะ 1 NF นี่ ง่ายมากค่ะ

412
00:28:41,484 --> 00:28:45,484
ข้อมูลถ้ามันเป็นก้อนอาจารย์นี้ เรากระจายมันออกเป็น

413
00:28:45,486 --> 00:28:49,486
บรรทัด ๆ เลย แค่นั้นเอง อย่าง

414
00:28:49,488 --> 00:28:53,488
น้อยในข้อสอบ ต้องทำ 1NF ให้ได้

415
00:29:25,512 --> 00:29:29,512
ที่มีคุณสมบัติเป็นคีย์หลักได้

416
00:29:29,515 --> 00:29:33,515
เราต้องแยกมันออก

417
00:29:33,518 --> 00:29:37,518
นะคะ กระบวนการ

418
00:29:37,522 --> 00:29:41,522
นะคะ ดูก่อนว่าตารางเมื่อกี้

419
00:29:41,526 --> 00:29:45,526
นะคะ สิ่งที่ขึ้นตรงกับคีย์หลักตัวนี้นะคะ จะเป็นตัวที่ 1 ตัวที่ 2

420
00:29:45,533 --> 00:29:49,533
ตัวที่ 3 สังเกตแล้วว่าคีย์หลัก

421
00:29:49,537 --> 00:29:53,537
มีตัวเดียว แต่ข้อมูลมีเยอะมากนะคะ เราแยกออกมาได้

422
00:29:53,540 --> 00:29:57,540
อันแรกเลย ก็จะมีรหัส

423
00:29:57,545 --> 00:30:01,545
โพรเจกต์นะคะ ใครเป็นผู้จัดการ เงินเดือน

424
00:30:01,550 --> 00:30:05,550
เท่าไร ไม่ใช่สิ

425
00:30:05,551 --> 00:30:09,551
งบประมาณเท่าไรนะคะ อันนี้คือมันจะเชื่อมโยงกับข้อมูลที่เป็นคีย์หลัก

426
00:30:09,555 --> 00:30:13,555
็้คือโพรเจกต์โค้ดตัวนี้นะคะ

427
00:30:13,557 --> 00:30:17,557
ส่วนตัวนี้ เป็น

428
00:30:17,563 --> 00:30:21,563
คีย์คู่แข่ง 2 ตัว

429
00:30:21,571 --> 00:30:25,571
นะคะ 2 ตัวนี่ มันสามารถทำหน้าที่เป็นคีย์หลักให้

430
00:30:25,576 --> 00:30:29,576
กับ... อย่างตัวนี้นะคะ มันจะเป็นคีย์หลัก

431
00:30:29,579 --> 00:30:33,579
ให้กับชื่อของพนักงาน อย่างตัวนี้

432
00:30:33,583 --> 00:30:37,583
ก็จะเป็นคีย์หลักสำหรับชื่อแผนก

433
00:30:37,588 --> 00:30:41,588
นะคะ ถามว่ามันขึ้นตรงกับ Project Code ไหม

434
00:30:41,591 --> 00:30:45,591
ไม่นะคะ

435
00:30:45,593 --> 00:30:49,593
เพราะฉะนั้น การทำขั้นตอน

436
00:30:49,595 --> 00:30:53,595
ต่อมานะคะ 2 NF ขั้นตอนที่ 1

437
00:30:53,596 --> 00:30:57,596
เราจะต้องทำ 1NF มาเรียบร้อยแล้ว ซึ่งง่ายมาก

438
00:30:57,600 --> 00:31:01,600
ๆ นะคะ แล้วก็ต้องมาตัดของการขึ้นบางส่วน

439
00:31:01,604 --> 00:31:05,604
ออกนะคะ ก็คือการกำจัด Attribute ที่

440
00:31:05,608 --> 00:31:09,608
ไม่ขึ้นกับคีย์หลักของตารางนั้น ๆ นั่นเอง

441
00:31:09,611 --> 00:31:13,611
กำจัดออกนะคะ

442
00:31:13,623 --> 00:31:17,617
อย่างเช่นตัวนี้นะคะ การขึ้นต่อกัน

443
00:31:17,617 --> 00:31:21,617
บางส่วน จะเห็นได้ว่ารหัสวิชากับชื่อวิชา

444
00:31:21,621 --> 00:31:25,621
มันไม่ขึ้นตรงกับรหัสนักศึกษาใช่ไหมคะ อนนี้จำได้ไหมคะ

445
00:31:25,625 --> 00:31:29,625
รูปเดิมนะคะ รูปเดิม

446
00:31:29,629 --> 00:31:33,629
วิธีกำจัดปัญหา

447
00:31:33,631 --> 00:31:37,631
เราก็ดึงสิ่งที่มันเป็นปัญหาค่ะ สิ่งที่มันไม่ขึ้นตรงกับคีย์หลักตัวนั้น

448
00:31:37,633 --> 00:31:41,633
ไปสร้าตารางใหม่ สร้างตารางเพิ่ม

449
00:31:41,638 --> 00:31:45,638
นะคะ เอาสิ่งที่เป็นปัญหาออกมาไปใส่ตารางใหม่

450
00:31:45,644 --> 00:31:49,644
กำหนดคีย์หลักใหม่นะคะ

451
00:31:49,647 --> 00:31:53,647
ในตารางเดิมนะคะ เราก็เอาคีย์หลักของตารางใหม่

452
00:31:53,651 --> 00:31:57,651
ไปใส่แค่นั้นเองนะคะ

453
00:31:57,656 --> 00:32:01,656
วิธีการ ก็คือเหมือนรูปนี้นะคะ

454
00:32:01,660 --> 00:32:05,660
สิ่งที่เป็นปัญหาที่อาจารย์ยกตัวอย่าง

455
00:32:05,663 --> 00:32:09,663
กับชื่อวิชานะคะ เพราะรหัสวิชามันไม่ได้

456
00:32:09,668 --> 00:32:13,668
ขึ้นตรงกับรหัสนักศึกษา

457
00:32:13,671 --> 00:32:17,671
นะคะ เพราะฉะนั้น ไอ้ 2 ตัวนี้คือสิ่ง

458
00:32:17,675 --> 00:32:21,675
ที่เป็นปัญหานะคะ วิธีแก้ปัญหาคือ

459
00:32:21,680 --> 00:32:25,680
เราสร้างตารางผลการเรียนใหม่ สร้างตารางวิชาใหม่

460
00:32:25,684 --> 00:32:29,684
เห็นไหมคะ ในตารางใหม่เราจะตัดชื่อวิชาออก

461
00:32:29,688 --> 00:32:33,688
แต่ต้องเหลือ

462
00:32:33,691 --> 00:32:37,691
รหัสวิชาไว้ เพื่อให้ไปเชื่อมโยงว่า

463
00:32:37,695 --> 00:32:41,695
รหัสวิชานี้ มันชื่อวิชาอะไร จากอีกตารางหนึ่ง

464
00:32:41,699 --> 00:32:45,699
แค่นั้นเองนะคะ

465
00:32:45,703 --> 00:32:49,703
โอเคค่ะ

466
00:32:49,707 --> 00:32:53,707
อันนี้เป็นตัวอย่างของ

467
00:32:53,709 --> 00:32:57,709
การปรับบรรทัดฐาน ในรูปแบบของ 2NF นะคะ แต่เดี๋ยว

468
00:32:57,713 --> 00:33:01,713
อันนี้จะ

469
00:33:01,720 --> 00:33:05,720
ให้ทำเป็นการบ้าน เดี๋ยวค่อยย้อนกลับมาแล้วกันนะคะ เดี๋ยวค่อยย้อนมาสั่ง

470
00:33:05,724 --> 00:33:09,724
อันนี้เป็น 1NF นะคะ

471
00:33:09,727 --> 00:33:13,727
อันนี้ก็แก้แล้ว ตารางเมื่อกี้นะคะ ต่อมา

472
00:33:13,728 --> 00:33:17,728
ขั้นตอนสุดท้ายนะคะ 3NF

473
00:33:17,731 --> 00:33:21,731
นะคะ โดยความสัมพันธ์

474
00:33:21,735 --> 00:33:25,735
นะคะ ก่อนที่จะเป็น 3NF ได้ จะต้องเป็น 2NF

475
00:33:25,739 --> 00:33:29,739
มาก่อน หลักของการทำขั้นตอนที่ 3 คือ

476
00:33:29,744 --> 00:33:33,744
ต้องเอาความสัมพันธ์ที่ไม่ใช่คีย์หลักออก

477
00:33:33,747 --> 00:33:37,747
นะคะ เช่น ไม่ใช่คีย์หลักแต่ไปมี

478
00:33:37,752 --> 00:33:41,752
ผลกับคอลัมน์อื่นไม่ได้นะคะ

479
00:33:41,755 --> 00:33:45,755
ไม่ได้ วิธีการแก้ปัญหา เช่นเดิมค่ะ

480
00:33:45,759 --> 00:33:49,759
สร้างตารางใหม่ขึ้นมาแก้ปัญหานั้น ๆ

481
00:33:49,764 --> 00:33:53,764
นะคะ อย่างเช่น

482
00:33:53,767 --> 00:33:57,767
ในตัวอย่างนะคะ รหัสพนักงาน

483
00:33:57,771 --> 00:34:01,771
นะคะ ชื่อ สกุล รหัสแผนก ชื่อแผนก เงินเดือน

484
00:34:01,775 --> 00:34:05,775
จะเห็นได้ว่าในตารางนี้ คีย์หลักก็คือรหัสพนักงาน

485
00:34:05,780 --> 00:34:09,780
นะคะ แต่มันมีรหัส

486
00:34:09,784 --> 00:34:13,784
แผนกกับชื่อแผนกติดมาด้วย ซึ่ง

487
00:34:13,788 --> 00:34:17,788
มันไม่ได้เกี่ยวกับรหัสพนักงานเลยนะคะ

488
00:34:17,793 --> 00:34:21,793
วิธีการแก้ปัญหาก็คือ เอารหัส

489
00:34:21,796 --> 00:34:25,796
แผนกกับชื่อแผนกไปสร้างตารางใหม่

490
00:34:25,801 --> 00:34:29,801

491
00:34:29,804 --> 00:34:33,804
แต่ต้องยังคงรหัสแผนกไว้ในตารางงานเดิมนะคะ

492
00:34:33,806 --> 00:34:37,806
เพื่อให้มันเชื่อมโยงได้ ไอ้แผนก

493
00:34:37,810 --> 00:34:41,810
A001 นี่คือแผนกอะไร

494
00:34:41,812 --> 00:34:45,812
นะคะ อันนี้คือการแก้ปัญหา ไม่ใช่คีย์หลัก

495
00:34:45,814 --> 00:34:49,814
แต่ไปส่งผลกับคอมลัมน์อื่นในตารางนะคะ

496
00:34:49,818 --> 00:34:53,818
อันนี้คือ 3 NF จริง ๆ แล้ว

497
00:34:53,819 --> 00:34:57,819
อยากให้ลองทำในห้องมากกว่า แต่ด้วยสัปดาห์นี้มันมีข้อกำจัดนะ ก็

498
00:34:57,823 --> 00:35:01,823
ไม่เป็นไรนะคะ

499
00:35:01,827 --> 00:35:05,827
อันนี้เป็นตัวอย่าง

500
00:35:09,834 --> 00:35:13,834
วิธีการทำ Normalization หรือการปรับบรรทัดฐานนะคะ

501
00:35:13,836 --> 00:35:17,836
ก็คือ ทุก ๆ  Attribute นะคะ ก็คือทุก ๆ คอลัมน์

502
00:35:17,839 --> 00:35:21,839
ในแต่ละแถวจะต้องมีค่าของข้อมูลเพียงค่าเดียวเท่านั้น

503
00:35:21,844 --> 00:35:25,844
นะคะ อย่างเช่นเหมือนเวลาเรากรอกเบอรโทรศัพท์

504
00:35:25,847 --> 00:35:29,847
เรามีโทรศัพท์ 3 เบอร์ก็จริง แต่เราจะกรอกได้เบอร์เดียว

505
00:35:29,850 --> 00:35:33,850
นะคะ ถ้าอยากใส่เบอร์ที่ 2 ที่ 3 ก็ต้อง

506
00:35:33,852 --> 00:35:37,852
เพิ่มข้อมูลแถวใหม่ขึ้นมานะคะ

507
00:35:37,857 --> 00:35:41,857
ต่อมา

508
00:35:41,861 --> 00:35:45,861
2NF นะคะ ก็ปัญหา ก็คือถ้า

509
00:35:45,865 --> 00:35:49,865
มีข้อมูลนะคะ ข้อมูลในทุกตัวในตารางนั้น จะต้องขึ้นก

510
00:35:49,870 --> 00:35:53,870
คีย์หลักของตารางตัวเดียวเท่านั้นนะคะ ข้อที่ 3 ถ้า

511
00:35:53,872 --> 00:35:57,872

512
00:35:57,875 --> 00:36:01,875
คอลัมน์ไหนที่ไม่ใช่คีย์หลัก

513
00:36:01,879 --> 00:36:05,879
นะคะ จะมาส่งผลกับคอลัมน์อื่นในตาราง

514
00:36:05,885 --> 00:36:09,885
ไม่ได้นะคะ เพราะฉะนั้น ไอ้ตาราง ข้อ 1 ก็คือ

515
00:36:09,890 --> 00:36:13,890
แค่กระจายตาราง อันที่ 2 อันที่ 3 ถ้ามีปัญญาปุ๊บ

516
00:36:13,892 --> 00:36:17,892
เราต้องสร้างตารางใหม่

517
00:36:17,897 --> 00:36:21,897
นะคะ

518
00:36:21,901 --> 00:36:25,901
การบ้าน เอาอย่างนี้ดีกว่านะคะ

519
00:36:25,903 --> 00:36:29,903
อาจารย์จะให้ทำน่าจะส่งวันนี้

520
00:36:29,905 --> 00:36:33,905
เอาแค่ข้อเดียว

521
00:36:33,907 --> 00:36:37,907
นะคะ ข้อเดียวพอเพราะว่าจริง ๆ

522
00:36:37,909 --> 00:36:41,909
อยากให้ทำในห้อง เดี๋ยวสัปดาห์หน้าให้ทำในห้อง

523
00:36:41,913 --> 00:36:45,913
ที่เรียนไปวันนี้เข้าใจไหมนะคะ ถ้าทำเสร็จแล้ว

524
00:36:45,914 --> 00:36:49,914
ก็ค่อยเอามาส่งที่ตู้ส่งงานอาจารย์ เอาเฉพาะข้อนี้นะ

525
00:36:49,918 --> 00:36:53,918
ข้อเดียว

526
00:36:53,919 --> 00:36:57,919
ข้อเดียวพอ วันนี้ข้อเดียวพอนะคะ ส่งในเวลานี่ล่ะ

527
00:36:57,923 --> 00:37:01,923
ให้ลองทำดูว่าเข้าใจไหม ข้อนี้ให้ทำ

528
00:37:01,924 --> 00:37:05,924
1NF ทำ 1NF ทำอย่างไร ง่ายมาก ๆ เลย

529
00:37:05,930 --> 00:37:09,930
นะคะ นี่อาจารย์เว้นช่องว่างให้แล้ว

530
00:37:09,934 --> 00:37:13,934
เติมมานะคะ 2 NF คุณ

531
00:37:13,935 --> 00:37:17,935
เห็นไหมว่า นี่มันมีรหัสวิชานี่

532
00:37:17,939 --> 00:37:21,939
ชื่อวิชานี่ ต้องทำอย่างไรกับมัน

533
00:37:21,943 --> 00:37:25,943
นะคะ แยกมันออกมาสิ

534
00:37:25,945 --> 00:37:29,945
แยกอย่างไรนะคะ เอาข้อเดียวก่อน แล้วลองส่งมาให้อาจารย์ดู

535
00:37:29,946 --> 00:37:33,946
่าเข้าใจมากน้อยขนาดไหนนะคะ จริง ๆ

536
00:37:33,949 --> 00:37:37,949
อยากให้เรียนในห้องมากกว่า แต่วันนี้ก็เอาประมาณนี้

537
00:37:37,954 --> 00:37:41,954
ก่อนแล้วกันนะคะ ให้ทุกคนหายดี

538
00:37:41,956 --> 00:37:45,956
กลับมา อาทิตย์หน้า ค่อยเดินดูในห้องดีกว่านะคะ

539
00:37:45,959 --> 00:37:49,959
วันนี้ก็จะประมาณนี้นะคะ

540
00:37:49,962 --> 00:37:53,962
เดี๋ยวเวลาที่เหลือให้ทำข้อนี้ แล้วมาส่งวันนี้เลยยิ่งดี

541
00:37:53,964 --> 00:37:57,964
นะคะ เวลาที่เหลือทำใส่กระดาษมาส่งอาจารย์

542
00:37:57,968 --> 00:38:01,968
แล้วกันนะ ก็ประมาณนี้ค่ะ เวลาที่เหลือทำให้เสร็จภายในวันนี้

543
00:38:01,971 --> 00:38:05,971
นะคะ ข้อเดียวเองนะคะ ข้อเดียว

544
00:38:05,975 --> 00:38:09,975
มีใครสงสัยไหมคะ ปุ๋ยสงสัย

545
00:38:09,977 --> 00:38:13,977
ไหม ปุ๋ยเปิดไมค์ได้เหลือเปล่า

546
00:38:13,979 --> 00:38:17,979
// ไม่มีค่ะ อาจารย์ เดี๋ยวถ้าอย่างไร เดี๋ยว

547
00:38:17,983 --> 00:38:21,983
ให้อุบลไปส่ง หรืออย่าอุบล

548
00:38:21,987 --> 00:38:25,987
กลับหอแล้วน่ะค่ะ (อาจารย์เกวลี) อ๋อ ส่วนมากอยู่ไหนกัน

549
00:38:25,991 --> 00:38:29,991
อยู่หอหรืออยู่ DSS

550
00:38:29,995 --> 00:38:33,995
//ตอนนี้เหลืออยู่ DSS ประมาณ 4 คนค่ะ (อาจารย์เกวลี)

551
00:38:33,999 --> 00:38:37,999
ก็รวม ๆ เท่าไรได้ก็เอามา (นักศึกษาหญิง) ค่ะ ๆ ๆ

552
00:38:38,003 --> 00:38:42,003
(อาจารย์เกวลี) ก็ให้เด็กทำนั่นแหละ

553
00:38:42,005 --> 00:38:46,005
โอเค Thk you

554
00:38:46,010 --> 00:38:50,010
(อาจารย์เกวลี) ค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ ที่

555
00:38:50,012 --> 00:38:54,012
ตั้งใจเรียนกันอยู่ ถ้าใครทำเสร็จ

556
00:38:54,016 --> 00:38:58,016
ก็ทำให้เสร็จแล้วฝากเพื่อนมากส่ง รวมกันมาส่งก็ได้นะคะ

557
00:38:58,021 --> 00:39:02,021
ถ้าใครอยู่หอก็มาส่งที่  DSS ก็ได้

558
00:39:02,027 --> 00:39:06,027
มาส่งที่โต๊ะอาจารย์ก็ได้นะคะ

559
00:39:06,030 --> 00:39:10,030
โอเคค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณล่ามfh;นะคะ

560
00:39:10,032 --> 00:39:14,032
ค่ะ ขอบคุณค่ะ

561
00:39:14,036 --> 00:39:18,036

562
00:39:18,039 --> 00:39:22,039

563
00:39:22,044 --> 00:39:26,044

564
00:39:26,047 --> 00:39:30,047

565
00:39:30,053 --> 00:39:34,053
ปุ๋ย

566
00:39:34,056 --> 00:39:38,056
วันนี้ครบนะ

567
00:39:38,062 --> 00:39:42,062
ปุ๋ยไปแล้ว โอเค

568
00:39:42,066 --> 00:39:46,066

569
00:39:46,070 --> 00:39:50,070

570
00:39:50,075 --> 00:39:54,075

571
00:39:54,079 --> 00:39:58,079

572
00:39:58,083 --> 00:40:02,083

573
00:40:02,090 --> 00:40:06,090


