﻿1
00:00:18,812 --> 00:00:18,813

2
00:00:18,813 --> 00:00:22,813

3
00:00:22,815 --> 00:00:26,815

4
00:00:26,816 --> 00:00:28,152

5
00:00:28,152 --> 00:00:32,152

6
00:00:38,824 --> 00:00:42,824

7
00:00:42,826 --> 00:00:46,826

8
00:00:50,832 --> 00:00:54,832

9
00:00:54,833 --> 00:00:58,833

10
00:00:58,834 --> 00:01:02,834

11
00:01:02,834 --> 00:01:06,834

12
00:01:06,836 --> 00:01:10,836

13
00:01:10,838 --> 00:01:14,838

14
00:01:14,839 --> 00:01:18,839

15
00:01:18,844 --> 00:01:22,844

16
00:01:26,845 --> 00:01:30,845

17
00:01:30,848 --> 00:01:33,432

18
00:01:33,432 --> 00:01:37,432

19
00:01:46,854 --> 00:01:49,425

20
00:01:49,425 --> 00:01:49,896

21
00:01:49,896 --> 00:01:53,896
(อาจารย์เกวลี) เดี๋ยวเริ่มเลย

22
00:01:54,666 --> 00:01:57,685
ก็ได้ค่ะ โอเค น่าจะประมาณนี้นะคะ

23
00:01:57,685 --> 00:02:01,685
วันนี้จะเป็นบทที่ 5 เกี่ยวกับกระบวนการ

24
00:02:07,337 --> 00:02:10,466
ปรับบรรทัดฐาน ภาษาอังกฤษก็จะเป็น

25
00:02:10,466 --> 00:02:13,163
normalization

26
00:02:13,163 --> 00:02:17,163
เนื้อหาวันนี้ก็จะมีจุดมุ่งหมาย

27
00:02:18,884 --> 00:02:22,884
ของการทำ Nomanlization

28
00:02:25,997 --> 00:02:29,997
ด้วย จะเกี่ยวกับฟังก์ชันการขึ้นต่อกัน แล้วก็หลักการขึ้น normalization

29
00:02:30,879 --> 00:02:34,879
ด้วยนะคะ มีอยู่ 3 ข้อวันนี้โดยการปรับมาตรฐานหรือ No

30
00:02:42,880 --> 00:02:46,880
malization มันจะเป็นทฤษฎีที่คนออกแบบฐานข้อมูล มาแปลงข้อมูลจากรูปที่ซับซ้อน

31
00:02:49,461 --> 00:02:50,221
นะคะ ให้มันง่าย เข้าใจ

32
00:02:50,221 --> 00:02:54,221
ก็งาน นำไปใช้งานก็ง่าย แล้วต้องเป็นระบบที่

33
00:02:57,417 --> 00:03:01,417
หลังจากออกแบบแล้ว แล้วนำไปใช้งานจริงต้องเกิดปัญหาน้อยที่สุด

34
00:03:02,888 --> 00:03:06,573
โดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานนี่มันจะมี 3 ระดับ

35
00:03:06,573 --> 00:03:10,573
นะคะ จริง ๆ เราก็จะเรียกสั้น ๆ ระดับแรกจะเรียกว่

36
00:03:14,890 --> 00:03:16,940
า 1NF นะคะ 2NF 3NF นะคะ ในระดับปริญญาตรีนี่

37
00:03:16,940 --> 00:03:19,599
ถึง 3NF ได้ก็ถือว่าเก่งมากแล้ว

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

39
00:03:30,452 --> 00:03:34,452
นะคะ อันนี้เป็นแผนภาพกระบวนการทำงานนะคะ ก่อนเราจะมาทำแผนภาพปรับบรรทัดฐาน

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

41
00:03:46,903 --> 00:03:48,749
เขาต้องการระบบจัดการฐานข้อมูลแบบไหน ต้องการ

42
00:03:48,749 --> 00:03:52,749
ใช้ตารางกี่ตารางในฐานข้อมูลนะคะ หลังจากนั้นก็จะมาวาดรูปเหมือนที่เราเรียนอาทิตย์ที่แล้วนะคะ

43
00:03:56,890 --> 00:03:57,975
มาวาดเป็นแผนถาพ ให้เข้าใจว่า

44
00:03:57,975 --> 00:04:01,975
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูลนี่ ตรง

45
00:04:04,526 --> 00:04:04,612
ตามความต้องการหรือเปล่านะคะ

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

47
00:04:09,397 --> 00:04:13,254
แบบที่ที่เป็นบรรทัดฐาน

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

49
00:04:22,913 --> 00:04:25,383
คีย์หลักที่มันทับซ้อนกันนะคะ เราก็เลยจะต้องเอาข้อมูลจากที่เราวาดอาทิตย์ที่แล้วนี่มาเข้าสู่

50
00:04:25,383 --> 00:04:29,383
กระบวนการปรับบรรทัดฐานก่อน ซึี่งอย่างที่บอก

51
00:04:33,401 --> 00:04:34,238
เราทำแค่ถึง 3 NF นี่ก็ถือว่าเก่งมากแล้วนะคะ

52
00:04:34,238 --> 00:04:38,238
แต่อย่างน้อยต้องถึง 3 นะคะ ไอ้บอยด์คอดด์

53
00:04:42,916 --> 00:04:42,976
ไม่ทำก็ละไว้ได้นะคะ แต่อย่างน้อยต้อง

54
00:04:42,976 --> 00:04:46,976
ถึง 3 นะคะ โดยวัตถุประสงค์ของการปรับบรรทัดฐานนะคะ

55
00:04:52,725 --> 00:04:55,756
แน่นอนลดความซ้ำซ้อนกันของข้อมูล

56
00:04:55,756 --> 00:04:59,756
ก็ถือถ้าข้อมูลมันซ้ำกันนี่เราต้องตัดออกไป เพราะถ้ามันยิ่งซ้ำกัน

57
00:05:01,795 --> 00:05:04,238
มากเท่าไร เนื้อหาและพื้นที่

58
00:05:04,238 --> 00:05:07,808
ในการเก็บข้อมูลมันเยอะ แล้วก็สิ้นเปลืองงบประมาณ

59
00:05:07,808 --> 00:05:09,628
ด้วยเหมือนกัน รวมถึงลดปัญหาความไม่ถูกต้อง

60
00:05:09,628 --> 00:05:11,845
ของข้อมูลนะคะ ข้อมูลนี่นอกจากจะไม่เกิดความ

61
00:05:11,845 --> 00:05:15,845
ซ้ำซ้อนกันแล้วนี่ มันยังเกิดจากสาเหตุอื่น

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

63
00:05:25,879 --> 00:05:29,879
อย่างนักศึกษาเก็บข้อมูลที่คณะด้วย

64
00:05:30,580 --> 00:05:34,424
เก็บที่มหาวิทยาลัยด้วย เก็บที่สาขาด้วย วันหนึ่งคุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์ที่บ้าน

65
00:05:34,424 --> 00:05:37,711
เราก็ต้องไปตามเปลี่ยนทุกที่เลยนะคะ ซึ่งเสียเวลา

66
00:05:37,711 --> 00:05:40,933
แล้วคราวนี้ก็จะเป็นที่เถียงกันว่า

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

68
00:05:45,655 --> 00:05:49,655
การปรับบรรทัดฐานนี่ ข้อมูลอาจจะเก็บที่แหล่งเ

69
00:05:54,938 --> 00:05:58,938
ดียวนะคะ เก็บอยู่ที่เดียว แต่สามารถเรียนใช้งานหลาย ๆ ที่ พร้อม ๆ กันได้นะคะ แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูล มีการลบหรือการเพิ่ม

70
00:06:06,216 --> 00:06:09,126
เป็นปัจจุบันที่สุด เราจึงเก็บข้อมูลไว้ที่เดียว

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

72
00:06:14,642 --> 00:06:18,642
ก็เป็นปัจจุบันด้วย แล้วก็อย่างที่ให้เหตุผลเมื่อกี้นี้นะคะ การเก็บข้อมูล

73
00:06:18,870 --> 00:06:22,870
ที่เดียวนี่ มันก็จะลดการผิดพลาด การ

74
00:06:23,566 --> 00:06:27,368
เปลี่ยนแปลงข้อมูล ปรับปรุงข้อมูล อย่างที่บอก ก็คือ

75
00:06:27,368 --> 00:06:31,368
เปลี่ยนเบอร์โทรศัพท์หรือว่าเปลี่ยนบ้านเลขที่ ก็

76
00:06:31,741 --> 00:06:34,799
เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้ทุกที่

77
00:06:34,799 --> 00:06:38,799
ถ้าต้องการข้อมูลนะคะ ความซ้ำซ้อนกันของข้อมูลนี่

78
00:06:43,368 --> 00:06:47,368
แนวคิดที่ผิดพลาดของการปรับปรุงของข้อมูลนะคะ แนวคิด

79
00:06:48,733 --> 00:06:52,733
ของการออกแบบฐานข้อมูลนี่ ก็คือการออกแบบข้อมูลที่ซ้ำซ้อนกันน้อยที่สุดนะคะ เพื่อประหยัดพื้นที่ในการ

80
00:06:58,967 --> 00:07:02,957
แล้วก็ลดปัญหาที่เกิดขึ้น ถ้าข้อมูลมันซ้ำซอนมาก

81
00:07:02,957 --> 00:07:05,876
เกินไปหรือปริมาณข้อมูลมีเยอะเกินไปนะคะ อย่างเช่นตัวอย่างนะคะ

82
00:07:05,876 --> 00:07:09,876
ตารางด้านบน ตารางสีเทาด้านบน จะเป็นการออกแบบฐานข้อมูลที่ดี+

83
00:07:17,651 --> 00:07:21,651
เดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่า ในตารางข้อมูลนี่มันจะมีตารางของพนักงานและตารางสาขา

84
00:07:21,847 --> 00:07:22,980
นะคะ จะเห็นได้ว่า

85
00:07:22,980 --> 00:07:26,980
ตารางพนักงานนี่ จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขา

86
00:07:30,954 --> 00:07:31,540
ห้อยไว้อยู่ ถามว่าทำไมไม่เอา

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

88
00:07:37,849 --> 00:07:41,849
ออกนะคะ อย่าง

89
00:07:42,021 --> 00:07:46,021
ถ้านักศึกษาดูคนแรกนะคะ ดูคนแรก รหัสสาขา

90
00:07:49,874 --> 00:07:50,813
B005 ก็คือสาขาเชียงใหม่

91
00:07:50,813 --> 00:07:54,813
ถ้าสมมติว่า

92
00:07:55,244 --> 00:07:57,713
พนักงานคนที่ 1 ลาออก

93
00:07:57,713 --> 00:08:01,713
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ

94
00:08:03,269 --> 00:08:07,269
มีการลบข้อมูล ลบคนนี้ออก

95
00:08:08,779 --> 00:08:12,779
ขีดฆ่าทิ้ง เดี๋ยวนะคะ

96
00:08:14,270 --> 00:08:18,050
สิ่งไหนที่หายไปบ้าง

97
00:08:18,050 --> 00:08:20,206
แน่นอนสาขาเชียงใหม่จะหายไปด้วย สมมติ

98
00:08:20,206 --> 00:08:24,206
นะคะ ถ้าสมมติเราอยู่ด้วยกัน ถ้าสมมติพนักงานคนนี้ลาออก

99
00:08:25,079 --> 00:08:29,079
สาขาเชียงใหม่ยังอยู่ไหม ยังอยู่นะคะ

100
00:08:30,046 --> 00:08:33,861
ซึ่งแตกต่างจากด้านล่างนะคะ ด้านล่าง เห็นไหมคะ ว่า

101
00:08:33,861 --> 00:08:36,317
ถ้าสมมติว่าอาจารย์ลบทิ้งหมดเลย

102
00:08:36,317 --> 00:08:37,494
ลบทิ้งหมดนี่ กากบาททิ้ง

103
00:08:37,494 --> 00:08:41,494
สาขาเชียงใหม่หายไปด้วย

104
00:08:45,571 --> 00:08:49,571
อันนี้คือการออกแบบที่ไม่ดีนะคะ เหมือน

105
00:08:51,564 --> 00:08:55,517
ลบคนข้างล่างลบคนนี้ออก สาขาพิษณุโลกก็หายไปด้วย

106
00:08:55,517 --> 00:08:59,517
แต่ถ้าเป็นตารางด้านบนนะคะ ถ้า

107
00:09:06,501 --> 00:09:07,023
คนนี้ลาออก สาขายังอยู่ไหม ยังอยู่เหมือนเดิมนะคะ

108
00:09:07,023 --> 00:09:07,741
อันนี้คือการออกแบบฐานข้อมูล

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

110
00:09:13,841 --> 00:09:17,841
ออกนะคะ ตัวอย่าง

111
00:09:19,210 --> 00:09:23,210
นะคะ ถ้าการออกแบบที่ดีนี่ เราจะลด

112
00:09:24,974 --> 00:09:26,960
ปัญหาความซ้ำซ้อนกันของข้อมูลออกได้นะคะ

113
00:09:26,960 --> 00:09:30,960
อย่างเช่นตรงนี้ อันนี้เป็นตารางที่ออกแบบไม่ดี

114
00:09:35,419 --> 00:09:36,533
นะคะ เห็นไหมคะ ว่ามันจะมีรหัสสาขาแล้วก็

115
00:09:36,533 --> 00:09:37,493
ที่อยู่อยู่ในตารางเดียวกัน

116
00:09:37,493 --> 00:09:41,493
ถ้าสมมติว่าอาจารย์เพิ่มเข้ามาใหม่

117
00:09:44,456 --> 00:09:48,456
อีก 1 คนนะคะ เป็น EM

118
00:09:52,258 --> 00:09:55,348
10 ตรงนี้นะคะ ถ้าต้องการเพิ่ม

119
00:09:55,348 --> 00:09:59,348
พนักงานสาขาเชียงใหม่ อาจารย์ก็ต้องมากรอกข้อมูลตรงนี้อีกว่าเชียงใหม่นะ โน่นนี่นั่นโน่น

120
00:10:03,337 --> 00:10:07,036
นะคะ แต่ถ้าเป็นการออกแบบฐานข้อมูลที่ดีนี่

121
00:10:07,036 --> 00:10:11,036
เราแค่ใส่รหัสสาขานะคะ ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้นะคะ

122
00:10:13,649 --> 00:10:15,230
เหมือน

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

124
00:10:27,011 --> 00:10:29,790
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณลงไป

125
00:10:29,790 --> 00:10:33,486
นะคะ หรืออาจจะเอาชิปการ์ดของคุณเสียบเข้าไปใน

126
00:10:33,486 --> 00:10:37,486
เครื่อง ถามว่าตอนนี้เราได้กรอกข้อมูลไหม ไม่ต้อง ขอแค่มีเลขบัตรประชาชน ข้อมูลทุกอย่างที่คุณมี

127
00:10:40,645 --> 00:10:41,940
เขาจะดึงออกมาจากระบบให้เลย เราไม่ต้องเสียเวลากรอกนะคะ

128
00:10:41,940 --> 00:10:43,134
เหมือนเมื่อก่อนนี่

129
00:10:43,134 --> 00:10:47,134
ต้องเขียนใส่กระดาษเลขบัตรประชาชนอะไร

130
00:10:49,975 --> 00:10:53,975
ที่อยู่ที่ไหน เบอร์โทรศัพท์อะไร เด๋ยวนี้ไม่ต้องเลย ขอแค่ม

131
00:10:59,022 --> 00:11:03,022
ีบัตรประชาชนข้อมูลทุกอย่าง เราสามารถดึงขึ้นมาได้อยู่แล้วนะคะ อันนี้ก็เช่นเดียวกันถ้ากรอกข้อมูลแบบไม่ดีนี่

132
00:11:03,760 --> 00:11:05,135
เราต้องกรอกข้อมูลทุกช่องทุกช่องเลยนี่

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

134
00:11:13,466 --> 00:11:16,800
เป็นเหมือนโรงงานน่ะค่ะ ทีละ 1,000 คน ต้องนั่งกรอกเชียงใหม่เป็นพัน ๆ ครั้งนี่ เสียเวลา

135
00:11:16,800 --> 00:11:20,127
มาก ๆ นะคะ อันนี้คือการออกแบบที่

136
00:11:20,127 --> 00:11:21,074
ไม่ดีนะคะ

137
00:11:21,074 --> 00:11:25,074
กับอีกอย่างหนึ่ง ถ้าสมมติว่า

138
00:11:29,918 --> 00:11:33,918
เมื่อกี้อาจารย์เพิ่มพนักงานแล้ว ถ้าอาจารย์อยากเพิ่มแค่สาขา

139
00:11:36,748 --> 00:11:40,748
นะคะ อยากเพิ่มแค่สาขา ซึ่งในตารางนี้ คีย์หลัก จำได้ไหมคะ

140
00:11:45,569 --> 00:11:49,569
คีย์หลักจะเป็นคีย์ที่ขีดเส้นใต้ ซึ่งอาจารย์อยากเพิ่มสาขา สมมติอาจารย์เพิ่ม

141
00:11:51,815 --> 00:11:55,815
B100 สกลนคร สกลนครนะคะ เพิ่มได้ไหม

142
00:11:57,978 --> 00:12:01,978
อาจจะเป็นการตั้งสาขา แต่ยังไม่มีพนักงานหรอกนะคะ

143
00:12:06,540 --> 00:12:08,697
ถ้าจากตารางนี้นะคะ เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้ เนื่องจากเรายังไม่มี

144
00:12:08,697 --> 00:12:12,697
รหัสพนักงาน เพราะรหัสพนักงานเป็นคีย์หลัก

145
00:12:17,259 --> 00:12:18,344
คีย์หลักนะคะ คือ คุณสมบัติมัน คือ เป็นค่าว่างไม่ได้

146
00:12:18,344 --> 00:12:19,397
นะคะ อันนี้จะทำให้เราเพิ่ม

147
00:12:19,397 --> 00:12:23,397
สาขาไม่ได้ เพราะเราไม่มีพนักงาน อันนี้ก็เป็น

148
00:12:23,551 --> 00:12:27,551
ข้อผิดพลาดในการเพิ่มข้อมูล

149
00:12:31,833 --> 00:12:35,833
ถ้าเราออกแบบตารางแบบนี้นะคะ นี่ก็คือปัญญาที่เกิดขึ้นจากการออก

150
00:12:39,704 --> 00:12:43,704
แบบตารางไม่ดี กับ

151
00:12:48,002 --> 00:12:52,002
ปัญหาต่อมา เป็นปัญหาการลบข้อมูลอย่างที่อาจารย์บอก

152
00:12:53,667 --> 00:12:56,135
ถ้าพนักงานคนนี้ลาออก สาขาเชียงใหม่หายไปด้วยนะคะ โดน

153
00:12:56,135 --> 00:13:00,135
ลบไป กรณีความผิดพลาดจากการเปลี่ยนแปลง

154
00:13:06,001 --> 00:13:07,630
นะคะ เหมือน B003 นี่ค่ะ เป็นกรุงเทพฯ ใช่ไหมคะ แล้วคราวนี้ข้อมูลมันอยู่ใน

155
00:13:07,630 --> 00:13:10,977
ตารางเดียวกัน ถ้านักศึกษาจะแก้ สมมติว่าเราย้าย

156
00:13:10,977 --> 00:13:14,977
จากรุงเทพฯ ไปอยู่นนทบุรี

157
00:13:18,440 --> 00:13:19,192
สมมติมีพนักงาน 3,000 คน

158
00:13:19,192 --> 00:13:23,192
คุณต้องแก้กรุงเทพฯ 3,000 ครั้ง

159
00:13:25,024 --> 00:13:28,320
เป็นนนทบุรีนะคะ

160
00:13:28,320 --> 00:13:32,320
ถ้าพนักงานมี คนสองคน ไม่ใช้ปัญหาค่ะ แต่ถ้าเป็น

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

162
00:13:41,095 --> 00:13:43,560
อันนี้ก็เป็นปัญหานะคะ

163
00:13:43,560 --> 00:13:47,560
เพราะฉะนั้น เราควรแยกตารางพนักงาน

164
00:13:51,201 --> 00:13:54,043
กับตารางสาขาออกจากกันนะคะ นี่เป็นเหตุผล

165
00:13:54,043 --> 00:13:58,043
ข้อมูลขนาดเล็กนะคะ เรายังเห็นปัญหาขนาดนี้ สมมติถ้า

166
00:14:03,080 --> 00:14:07,080
เป็นองค์กรขนาดใหญ่ เป็นบริษัท เป็นโรงงาน หรือระดับโรงเรียนมีนักเรียน 2-3 ร้อย หรือ 2-3 พันคน

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

168
00:14:13,492 --> 00:14:17,492
นะคะ จากปัญหาที่เกิดขึ้นเมื่อกี้อย่างที่บอกค่ะ

169
00:14:18,393 --> 00:14:22,393
เราจะแก้ปัญหาโดยการแยกตารางออกเป็น 2 ตารางแบบนี้

170
00:14:24,930 --> 00:14:28,930
นะคะ การขึ้นต่อกัน เดี๋ยว

171
00:14:30,000 --> 00:14:34,000
จะเป็นเกี่ยวกับตารางหนึ่งมีผลกับอีกตารางหนึ่ง เราเรียกฟังก์ชันที่มี

172
00:14:35,783 --> 00:14:36,599
การขึ้นต่อกัน

173
00:14:36,599 --> 00:14:40,599
เดี๋ยวดูตัวอย่างเลยแล้วกันนะคะ อย่างเช่น ตารางนี้

174
00:14:41,828 --> 00:14:45,666
นะคะ ดูจากรหัสพนักงานนะคะ เราจะเห็นได้ว่ารหัสพนักงาน

175
00:14:45,666 --> 00:14:49,666
จะส่งผลกับชื่อตำแหน่ง

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

177
00:15:03,093 --> 00:15:05,857
กจะชี้ไปที่ตัวรองตามหัวลูกศรเลย ดูทิศทางตามหัวลูกศรนะคะ อันไหน

178
00:15:05,857 --> 00:15:09,857
เป็นตัวหลักอันไหนเป็นตัวรองนะคะ

179
00:15:11,735 --> 00:15:15,735
อย่างเช่น ตัวนี้ถามว่าตำแหน่งมาชี้ที่รหัส

180
00:15:18,723 --> 00:15:18,970
พนักงานได้ไหมนะคะ ถามว่าไม่ได้

181
00:15:18,970 --> 00:15:22,970
นะคะ เพราะการขึ้นต่อกันจะต้องเป็นลักษณะ 1 ต่อ 1

182
00:15:29,172 --> 00:15:32,456
เท่านั้นนะคะ เป็น 1 ต่อกลุ่มไม่ได้

183
00:15:32,456 --> 00:15:36,456
ชนิดของการขึ้นต่อกัน

184
00:15:42,914 --> 00:15:46,914
นะคะ จะมีอยู่ 4 ชนิดนะคะ ชนิดแรกเป็นการขึ้นต่อกันโดยสมบูรณ์นะคะ

185
00:15:49,906 --> 00:15:50,449
ซึ่งอาจจะเป็นเกี่ยวกับ

186
00:15:50,449 --> 00:15:54,449
ตารางนะคะ จะมีคอลัมน์ 1 คอลัมน์

187
00:16:00,664 --> 00:16:04,664
หรือมากกว่า 1 คอมลัมน์มาประกอบกันนะคะ โดยใน 1 ค่านั้น ๆ นี่ จะ

188
00:16:06,623 --> 00:16:10,453
บรรจุค่าที่ระบุความพิเศษของแถวแถวหนึ่งได้อย่างชัดเจนนะคะ

189
00:16:10,453 --> 00:16:14,453
ก็คือ Attribute Attribute 1 นี่

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

191
00:16:21,327 --> 00:16:22,593
นะคะ โดยในทุกความสัมพันธ์นี่จะต้อง

192
00:16:22,593 --> 00:16:23,585
ระบุค่าคีย์หลักไว้ด้วย ซึ่ง

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

194
00:16:35,119 --> 00:16:38,416
ู่แล้วนะคะ อย่างเช่น การขึ้นต่อกันโดยสมบูรณ์

195
00:16:38,416 --> 00:16:42,416
อันแรกนะคะ Attribute ที่...

196
00:16:43,370 --> 00:16:47,370
จำได้ใช่ไหมคะ คีย์หลัก

197
00:16:51,121 --> 00:16:55,121
ที่มีขีดเส้นใต้นะคะ คอลัมน์ที่ไม่ใช่คีย์หลักจะขึ้นตรง

198
00:16:56,104 --> 00:16:58,636
ต่อคอลัมน์ที่เป็นคีย์หลักคอลัมน์เดียวเท่านั้น

199
00:16:58,636 --> 00:17:01,759
เช่น เลขบัตรประชาชนตัวนี้

200
00:17:01,759 --> 00:17:05,207
จะขึ้นจะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ

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

202
00:17:15,034 --> 00:17:16,592
แบบ 1 ต่อ 1 นะคะ เลขบัตรประชาชน 1 เลข จะต้องเป็นของคน ๆ เดียวเท่านั้น

203
00:17:16,592 --> 00:17:20,592
นะคะ ไม่ใช่ว่าเลขบัตรประชาชนนี้ใช้ 10 คน เป็นไปไม่ได้นะคะ

204
00:17:24,208 --> 00:17:27,898
ตัวอย่าง

205
00:17:27,898 --> 00:17:31,898
นะคะ ตารางที่มีคอลัมน์

206
00:17:36,766 --> 00:17:40,766
หลายตัวนะคะ ขึ้นอยู่กับคีย์หลักตัวเดียว เช่น คน 1 คนนี่

207
00:17:40,940 --> 00:17:44,314
ก็จะมีข้อมูล ชื่อ นามสกุล วันเดือนปีเกิด วันที่ทำบัตร ใช่ไหมคะ

208
00:17:44,314 --> 00:17:45,506
แต่ว่าเขาจะต้องขึ้นตรงกับเลขบัตรประชาชนเดียว

209
00:17:45,506 --> 00:17:49,506
เท่านั้น ถามว่า 3 คนนี้ อาจจะเกิดวันเดียวกันก็ได้ค่ะ

210
00:17:55,082 --> 00:17:57,169
แต่เลขบัตรประชาชนเขาไม่เหมือนกัน หรือเขาอาจจะมาทำบัตรวันเดียวกัน

211
00:17:57,169 --> 00:18:00,340
แต่เลขบัตรประชาชนเขาจะไม่ซ้ำกัน

212
00:18:00,340 --> 00:18:04,340
นะคะ คืออะไร ซ้ำกันได้ทุกอย่างค่ะ ยกเว้นหมายเลข

213
00:18:07,928 --> 00:18:08,560
บัตรประชาชน

214
00:18:08,560 --> 00:18:12,560
แต่

215
00:18:14,321 --> 00:18:18,321
บางตารางนะคะ ก็อาจจะเป็นการ

216
00:18:20,366 --> 00:18:24,366
รวมตัวกันของคีย์หลักมากกว่า 1 คีย์หลักนะคะ

217
00:18:26,576 --> 00:18:30,539
มารวมกัน เช่น นักศึกษาคนนี้นะคะ รหัสนักศึกษานี้

218
00:18:30,539 --> 00:18:34,539
ลงทะเบียนวิชานี้นะคะ ได้เกรด

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

220
00:18:47,169 --> 00:18:47,900
กศึกษาซ้ำกันได้ไหม ไม่ซ้ำนะคะ รหัสวิชาซ้ำกันได้ไหม ไม่ซ้ำนะคะ เหมือนชื่อ

221
00:18:47,900 --> 00:18:51,900
วิชาอาจารย์ก็รหัสหนึ่ง

222
00:18:58,965 --> 00:19:02,539
ชื่ออาจารย์คนอื่นก็รหัสวิชาอีกอันหนึ่ง อันนี้ไม่ซ้ำกันอยู่แล้ว

223
00:19:02,539 --> 00:19:03,643
ต่อมาขึ้นต่อกันบางส่วนนะคะ มันก็จะเป็น

224
00:19:03,643 --> 00:19:07,643
อาศัยความสัมพันธ์ที่เกิดขึ้นจาก

225
00:19:10,222 --> 00:19:14,222
คีย์ผสมนะคะ อาจจะเป็นตารางอื่น

226
00:19:18,660 --> 00:19:22,660
อาจจะไม่ใช่คีย์หลักก็ได้แต่มันมีความหมายกับอีกคอลัมน์หนึ่งนะคะ เดี๋ยวยกตัวอย่างเลยดีกว่า

227
00:19:23,886 --> 00:19:27,886
นะคะ อย่างเช่น เมื่อตารางที่อาจารย์ให้ดูเมื่อกี้นะคะ  ก็จะมีรหัสนักศึกษา

228
00:19:34,670 --> 00:19:35,556
วิชา มีเกรดแล้วก็มีการบอกด้วยว่ารหัสวิชานี้เป็นชื่อวิชาอะไร

229
00:19:35,556 --> 00:19:39,556
นะคะ มันจะเป็น

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

231
00:19:50,830 --> 00:19:54,824
โดยบางส่วนของคีย์หลักสามารถไประบุค่า Attribute อื่น

232
00:19:54,824 --> 00:19:58,824
ที่ไม่ใช่คีย์หลักได้นะคะ อย่างเช่น

233
00:20:00,638 --> 00:20:02,461
ในความสัมพันธ์นี้ คีย์หลักจะมี 2 ตัวนะคะ มีรหัสนักศึกษา

234
00:20:02,461 --> 00:20:06,461
กับรหัสวิชานะคะ ถามว่าถ้า

235
00:20:06,819 --> 00:20:10,819
มีแต่รหัสนักศึกษา เกรด

236
00:20:15,117 --> 00:20:19,117
นะคะ รหัสวิชา แล้วเราจะรู้ไหมว่าชื่อวิชาที่เรา

237
00:20:19,117 --> 00:20:23,117
เรียนไปนี่ ชื่อวิชาอะไรนะคะ เหมือนบางคน

238
00:20:23,682 --> 00:20:27,682
รู้รหัสวิชา แต่จำชื่อวิชาไม่ได้ก็มี

239
00:20:31,173 --> 00:20:35,173
เพราะฉะนั้น รหัสวิชานี่ ก็สามารถไปส่งผลกับชื่อวิชา

240
00:20:35,973 --> 00:20:39,450
ได้เหมือนกัน เพราะเป็นตัวระบุว่ารหัสวิชานี้ เป็น

241
00:20:39,450 --> 00:20:41,157
ชื่อวิชาอะไรนะคะ ก็คือคีย์หลักในตารางนี้

242
00:20:41,157 --> 00:20:45,157
มี 2 อัน แต่มีคีย์หลัก 1 ตัวนี่

243
00:20:49,357 --> 00:20:49,945
แต่ไปมีผลกับอีก Attribute หนึ่งได้นะคะ อันนี้คือการขึ้นต่อกันบางส่วน

244
00:20:49,945 --> 00:20:53,945
นะคะ อย่างเช่นตัวนี้

245
00:20:55,396 --> 00:20:59,396
ก็จะเป็นของจริง ถ้าสมมติว่าอาจาย์ตัด

246
00:21:07,218 --> 00:21:10,598
รหัสนักศึกษาออก มีแค่รหัสวิชา มีเกรด มีชื่อวิชาอาจารย์เขียนโปปรแกรม

247
00:21:10,598 --> 00:21:10,787
แล้วถาม รู้ไหมคะ ว่าเกรด A นี้ของใคร

248
00:21:10,787 --> 00:21:12,628
ไม่รู้นะคะ

249
00:21:12,628 --> 00:21:16,628
หรือว่าเดี๋ยวลบอันนี้ออกก่อนนะ

250
00:21:18,539 --> 00:21:20,101
หรือว่าอาจารย์ลบรหัส

251
00:21:20,101 --> 00:21:23,936
วิชาออก เหลือแต่นักศึกษา

252
00:21:23,936 --> 00:21:27,936
เหลือเกรด เหลือชื่อวิชา แล้วถามว่า

253
00:21:30,376 --> 00:21:33,851
แล้วรหัสวิชาอะไรล่ะ

254
00:21:33,851 --> 00:21:37,851
ที่เราได้เกรด A เราก็ไม่ทราบอีกเหมือนกันนะคะ อันนี้คือ

255
00:21:39,114 --> 00:21:40,755
การขึ้นต่อกันบางส่วนนะคะ

256
00:21:40,755 --> 00:21:44,755
ตัวอย่างนะคะ

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

258
00:21:55,641 --> 00:21:58,330
ที่เกิดขึ้นก็ต่อเมื่อ มี Attribute หรือว่าคอลัมน์อื่น ๆ ที่

259
00:21:58,330 --> 00:22:02,330
ไม่ใช่คีย์หลัก แต่ไปสามารถขึ้น สามารถระบุค่า

260
00:22:08,620 --> 00:22:11,839
ของ Attribute ใน Record ได้นะคะ ซึ่งเป็นการออกแบบ

261
00:22:11,839 --> 00:22:15,839
ที่ไม่เหมาะสมนะคะ เพราะส่วนใหญ่แล้วในตารางนี่ ถ้า

262
00:22:19,038 --> 00:22:23,038
เราจะระบุค่าอื่นให้คอลัมน์อื่นได้ ก็

263
00:22:24,307 --> 00:22:27,377
ควรจะต้องเป็นคีย์หลักเท่านั้นนะคะ ดูตัวอย่างนะคะ

264
00:22:27,377 --> 00:22:31,377
เช่น ตารางนี้เขาบอกว่าสิ่งที่เกิดขึ้น คือ

265
00:22:32,096 --> 00:22:36,096
Attribute ก็คือคอลัมน์ที่ไม่ใช่คีย์หลัก หรือ Primary Key

266
00:22:43,244 --> 00:22:47,244
นะคะ ก็คือไม่ใช่คอลัมน์ที่มีเส้นขีดนี่ มันไประบุค่าในคอม

267
00:22:47,246 --> 00:22:48,004
ได้ เช่น ตารางนี่คีย์หลักก็คือเลขที่ประจำตัว

268
00:22:48,004 --> 00:22:49,285
นะคะ โดยเลขประจำตัวนี้จะไป

269
00:22:49,285 --> 00:22:53,285
มีผลกับชื่อ นามสกุล ที่อยู่ ตำแหน่ง

270
00:22:56,036 --> 00:22:59,371
ใช่ไหมคะ แต่คราวนี้ รถประจำตำแหน่ง มันไม่ถูกระบุโดยเลขประจำตัว

271
00:22:59,371 --> 00:23:02,925
มันถูกระบุโดยรหัสตำแหน่ง

272
00:23:02,925 --> 00:23:06,925
เหมือนถ้าเป็นผู้จัดการนี่

273
00:23:11,179 --> 00:23:15,179
จะรู้เลยว่ารถประจำตำแหน่งคืออะไร แต่เขาไปเช็กเลข

274
00:23:18,987 --> 00:23:21,571
แทนที่จะเช็กกับเลขประจำตัว อันนี้

275
00:23:21,571 --> 00:23:25,571
คือการออกแบบที่ไม่ดี เพราะฉะนั้น ถ้าจะให้รถประจำตำแหน่ง

276
00:23:28,125 --> 00:23:31,361
วิธีการแก้ปัญหา ก็คือเราควรจะแยกตาราง

277
00:23:31,361 --> 00:23:31,379
นี้ ออก

278
00:23:31,379 --> 00:23:35,379
ไปสร้างตารางใหม่เลยค่ะ มันไม่ควรจะมาขึ้นกับตาราง

279
00:23:38,232 --> 00:23:39,769
ที่มีคีย์หลัก

280
00:23:39,769 --> 00:23:43,769
แต่ไม่สามารถระบุค่าข้อมูลตรงนี้ได้นี่

281
00:23:50,835 --> 00:23:52,366
มันไม่ควรทำนะคะ กับต่อมาเป็นการขึ้นต่อกันเชิงกลุ่ม

282
00:23:52,366 --> 00:23:56,366
นะคะ ก็จะเป็นความสัมพันธ์

283
00:23:58,745 --> 00:24:02,745
ระหว่างคอลัมน์ หรือ Attribute นี่ คือ ขึ้นต่อกันโดยสมบูรณ์นะคะ

284
00:24:05,999 --> 00:24:06,475
ก็ไปสามารถไประบุค่าอื่นได้

285
00:24:06,475 --> 00:24:10,475
นะคะ โดยที่อย่างเช่นตัวอย่างนะคะ ในตารางนี้นะคะ จะมีรหัส

286
00:24:16,035 --> 00:24:19,625
หลักสูตร สามารถระบุรหัสวิชาได้หลายวิชา เช่น

287
00:24:19,625 --> 00:24:22,596
ในรหัสนักศึกษาจะได้เห็นได้ว่ามีเลข

288
00:24:22,596 --> 00:24:26,596
122

289
00:24:27,750 --> 00:24:31,750
เลขรหัสนักศึกษา 122 คืออะไร

290
00:24:35,280 --> 00:24:38,220
ก็คือหลักสูตรที่เราเรียนอยู่นะคะ ซึ่งในหลักสูตรที่เราเรียนนี่ มันมี

291
00:24:38,220 --> 00:24:40,070
วิชามากกว่า 20 วิชา

292
00:24:40,070 --> 00:24:44,070
นะคะ นั่นก็คือในรหัสหลักสูตรนี่

293
00:24:47,329 --> 00:24:51,329
มันสามารถระบุรหัสวิชาได้หลากหลาย

294
00:24:55,100 --> 00:24:55,265
มาก ๆ นะคะ อันนี้ก็คือการขึ้นต่อกันแบบมีค่ามากกว่า 1

295
00:24:55,265 --> 00:24:59,265
นะคะ รหัสหลักสูตร สามารถระบุรหัสวิชาได้หลายค่า

296
00:25:07,290 --> 00:25:11,290
นั่นเองนะคะ แล้วรหัสหลักสูตร ก็สามารถระบุค่ารหัสนักศึกษษได้หลายคนเช่นเดียวกัน เหมือนตอนนี้หลักสูตรที่เราเรียนนี่ มีนักศึกษามากกว่า 100 คน

297
00:25:16,765 --> 00:25:18,897
แต่รหัสหลักสูตรเดียวนะ

298
00:25:18,897 --> 00:25:22,897
นะคะ นี่คือความสัมพันธ์แบบสามารถระบุค่าได้มากกว่า 1 นั่นเอง

299
00:25:23,037 --> 00:25:26,917
แบบหลายค่านะคะ เพราะฉะนั้น

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

301
00:25:35,755 --> 00:25:37,980
เราเลยจะต้องมีการกระบวนการปรับบรรทัดฐาน หรือว่ากระบวนการปรับปรุง

302
00:25:37,980 --> 00:25:41,980
โครงสร้างของข้อมูล ที่มีความซ้ำซ้อนกัน

303
00:25:44,812 --> 00:25:48,225
ให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน เป็นรูปแบบ

304
00:25:48,225 --> 00:25:52,225
ที่พร้อมที่จะเอาไปพัฒนาเป็นฐานข้อมูลได้

305
00:25:55,041 --> 00:25:59,041
นะคะ โดยหลักการนะคะ อย่างที่บอก มี 5 ระดับ แต่ในระดับที่ 3 นี่ ก็เพียงพอสำหรับการออกแบบฐานข้อมูลในปัจจุบัน

306
00:26:01,663 --> 00:26:05,663
แล้วนะคะ โดยคีย์หลักของการทำงานนะคะ

307
00:26:05,866 --> 00:26:09,866
ขั้นที่ 1 นะคะ กำจัดกลุ่มของข้อมูลมีความซ้ำซ้อนกันออกไป

308
00:26:14,944 --> 00:26:15,976
ข้อแรกง่ายมาก ๆ ง่ายที่สุด ก็คือ 1NF  นะคะ

309
00:26:15,976 --> 00:26:19,976
ต่อมาขั้นที่ 2 หรือ 2 NF นะคะ

310
00:26:24,985 --> 00:26:27,071
จะกำจัดการขึ้นต่อกันบางส่วนออก

311
00:26:27,071 --> 00:26:31,071
นะคะ ขั้นสุดท้าย 3NF นะคะ กำจัดการขึ้นต่อกันของ Attribute

312
00:26:33,551 --> 00:26:37,551
ที่ไม่ใช่คีย์หลักนะคะ เดี๋ยวจะมาดู

313
00:26:41,843 --> 00:26:43,806
ทีละขั้น ว่ามันจะต้องเป็นอย่างไรบ้างนะคะ ข้อแรกง่ายที่สุด ง่ายมาก ๆ นะคะ

314
00:26:43,806 --> 00:26:46,290
ให้นักศึกษาจำ

315
00:26:46,290 --> 00:26:50,290
กระบวนการหลัก ๆ ก็จะมีอยู่ 3 ข้อนี้ค่ะ

316
00:26:57,737 --> 00:27:01,737
ดูก่อน ว่าข้อมูลมันซ้ำซ้อนกันไหม ขั้นที่ 2 ก็ดู

317
00:27:01,942 --> 00:27:05,591
มันขึ้นต่อกันแค่บางส่วนหรือเปล่านะคะ ขั้นที่ 3 ค่าอันไหนไม่ใช่คีย์หลัก แต่มันไปส่งผลกระทบ

318
00:27:05,591 --> 00:27:09,591
กับข้อมูลอื่นได้หรือเปล่านะคะ

319
00:27:10,809 --> 00:27:14,809
ดูขั้นตอนที่ 1 ก่อนนะคะ ขั้นต้อนที่ 1 ง่ายมาก

320
00:27:18,666 --> 00:27:22,666
นะคะ ทุก ๆ คอลัมน์นะคะ หรือ Attribute ในแต่ละ Record จะต้องเป็นค่า Single Value

321
00:27:24,316 --> 00:27:25,585
หรือมีค่าเดียวเท่านั้นนะคะ จะใส่แบบนี้

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

323
00:27:33,320 --> 00:27:34,372
อย่างตัวนี้ นักศึกษาคนที่ 1

324
00:27:34,372 --> 00:27:38,372
1 เทอมนี้คุณลงทะเบียนประมาณ 6-7 วิชา

325
00:27:39,679 --> 00:27:43,120
ใช่ไหมคะ ข้อมูลมันก็จะเป็นแบบนี้

326
00:27:43,120 --> 00:27:47,120
ถ้าเราไม่มีการทำ Normalization

327
00:27:47,339 --> 00:27:51,339
แต่คราวนี้ขั้นตอนที่ 1 เราจะตัดข้อมูลที่ซ้ำซ้อนกันออก วิธีการง่ายมากค่ะ

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

329
00:28:00,226 --> 00:28:04,226
ดูตัวอย่างนะคะ วิธีการทำ 1 NF ง่ายมากค่ะ ถ้า

330
00:28:09,086 --> 00:28:11,786
ข้อมูลคนไหนเป็นกลุ่ม คนที่ 1 ลงวิชา... ลงทะเบียนเรียน 3 วิชาใช่ไหมคะ

331
00:28:11,786 --> 00:28:13,161
คนที่ 2 มี 2 วิชา สามารถทำ

332
00:28:13,161 --> 00:28:17,161
ในรูปแบบ 1NF ก็คือเอามากระจายออกมาค่ะ  เอาข้อมูล

333
00:28:23,000 --> 00:28:24,365
พวกนี้ออกมา กระจายออกเห็นไหมคะ กระจายออก

334
00:28:24,365 --> 00:28:28,365
1NF ง่ายมากนะคะ   ข้อมูลพวกนี้ก็ทำซ้ำลงมา ทำซ้ำลงมา

335
00:28:31,024 --> 00:28:35,024
นะคะ ทำซ้ำลงมา ถามว่าอาจารย์คะ ทำไม

336
00:28:38,718 --> 00:28:42,718
มัน... แล้วทำไม 001 มันซ้ำกันได้ล่ะ นี่นั่นโน่น

337
00:28:46,763 --> 00:28:48,479
แต่รหัสวิชาเขาไม่ซ้ำกัน

338
00:28:48,479 --> 00:28:49,151
เห็นไหมคะ 1 NF นี่ ง่ายมากค่ะ

339
00:28:49,151 --> 00:28:53,151
ข้อมูลถ้ามันเป็นก้อนอาจารย์นี้ เรากระจายมันออกเป็น

340
00:28:57,223 --> 00:29:01,223
บรรทัด ๆ เลย แค่นั้นเอง อย่างน้อยในข้อสอบ ต้องทำ 1NF ให้ได้

341
00:29:02,991 --> 00:29:06,991
เพราะมันง่ายที่สุดแล้วนะคะ  อย่างเช่นตัวนี้นะคะ ก็กระจายออกมา

342
00:29:08,814 --> 00:29:08,896

343
00:29:08,896 --> 00:29:12,896
แล้วคราวนี้ถ้าเรากระจายข้อมูล

344
00:29:19,696 --> 00:29:23,696
เรียบร้อยแล้วนะคะ ก็จะมาดูว่าอย่างในตารางนี้น่ะค่ะ เป็นตาราง

345
00:29:26,829 --> 00:29:27,057
เป็นของพนักงานใช่ไหมคะ เขาจะมีคีย์หลัก 1 ตัวแล้ว แต่ว่ามันยังมี

346
00:29:27,057 --> 00:29:31,057
ตัวนี้ค่ะ ตัวที่  1 ตัวที่ 2

347
00:29:34,033 --> 00:29:35,697
ที่มีคุณสมบัติเป็นคีย์หลักได้

348
00:29:35,697 --> 00:29:38,727
เราต้องแยกมันออก

349
00:29:38,727 --> 00:29:42,727
นะคะ กระบวนการ

350
00:29:42,809 --> 00:29:46,809
นะคะ ดูก่อนว่าตารางเมื่อกี้

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

352
00:29:58,260 --> 00:29:59,186
ตัวที่ 3 สังเกตแล้วว่าคีย์หลักมีตัวเดียว แต่ข้อมูลมีเยอะมากนะคะ เราแยกออกมาได้

353
00:29:59,186 --> 00:30:03,186
อันแรกเลย ก็จะมีรหัส

354
00:30:10,417 --> 00:30:13,443
โพรเจกต์นะคะ  ชื่อโพรเจกต์ ใครเป็นผู้จัดการ เงินเดือน

355
00:30:13,443 --> 00:30:13,583
เท่าไร ไม่ใช่สิ

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

357
00:30:18,500 --> 00:30:22,231
ก็คือโพรเจกต์โค้ดตัวนี้นะคะ

358
00:30:22,231 --> 00:30:23,210
ส่วนตัวนี้ เป็น

359
00:30:23,210 --> 00:30:25,981
คีย์คู่แข่ง 2 ตัว

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

361
00:30:33,098 --> 00:30:37,098
กับอย่างตัวนี้นะคะ มันจะเป็นคีย์หลัก

362
00:30:38,823 --> 00:30:40,572
ให้กับชื่อของพนักงาน อย่างตัวนี้

363
00:30:40,572 --> 00:30:43,223
ก็จะเป็นคีย์หลักสำหรับชื่อแผนก

364
00:30:43,223 --> 00:30:47,223
นะคะ ถามว่ามันขึ้นตรงกับ Project Code ไหม

365
00:30:49,058 --> 00:30:53,058
ไม่นะคะ เพราะฉะนั้น การทำขั้นตอน

366
00:30:58,108 --> 00:31:02,108
ต่อมานะคะ 2 NF ขั้นตอนที่ 1 เราจะต้องทำ 1NF มาเรียบร้อยแล้ว ง่ายมาก

367
00:31:07,276 --> 00:31:11,276
ๆ นะคะ แล้วก็ต้องมาตัดการขึ้นต่อกันบางส่วน

368
00:31:11,806 --> 00:31:15,806
ออกนะคะ ก็คือการกำจัด Attribute ที่ไม่ขึ้นกับคีย์หลักของตารางนั้น ๆ นั่งเอง

369
00:31:16,944 --> 00:31:17,650
กำจัดออกนะคะ

370
00:31:17,650 --> 00:31:21,650
อย่างเช่นตัวนี้นะคะ การขึ้นต่อกัน

371
00:31:24,928 --> 00:31:28,928
บางส่วน จะเห็นได้ว่ารหัสวิชากับชื่อวิชา

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

373
00:31:39,241 --> 00:31:43,241
รูปเดิมนะคะ รูปเดิม วิธีกำจัดปัญหา

374
00:31:43,559 --> 00:31:47,559
เราก็ดึงสิ่งที่มันเป็นปัญหาค่ะ สิ่งที่มันไม่ขึ้นตรงกับคีย์หลักนั้น

375
00:31:51,305 --> 00:31:54,187
ไปสร้างตารางใหม่ สร้างตารางเพิ่มนะคะ เอาสิ่งที่เป็นปัญหาออกมาไปใส่ตารางใหม่

376
00:31:54,187 --> 00:31:56,374
กำหนดคีย์หลักใหม่นะคะ

377
00:31:56,374 --> 00:32:00,374
ในตารางเดิมนะคะ เราก็เอาคีย์หลักของตารางใหม่

378
00:32:02,239 --> 00:32:06,239
ไปใส่ แค่นั้นเองนะคะ วิธีการ ก็คือเหมือนรูปนี้นะคะ

379
00:32:07,299 --> 00:32:11,299
สิ่งที่เป็นปัญหาที่อาจารย์ยกตัวอย่าง

380
00:32:19,279 --> 00:32:23,279
ก็คือรหัสวิชากับชื่อวิชานะคะ เพราะรหัสวิชามันไม่ได้ขึ้นตรงกับรหัสนักศึกษานะคะ เพราะฉะนั้น ไอ้ 2 ตัวนี้คือสิ่ง

381
00:32:25,485 --> 00:32:29,485
ที่เป็นปัญหานะคะ วิธีแก้ปัญหาคือ

382
00:32:31,269 --> 00:32:35,269
เราสร้างตารางผลการเรียนใหม่ สร้างตารางวิชาใหม่

383
00:32:36,273 --> 00:32:37,754
เห็นไหมคะ ในตารางใหม่เราจะตัดชื่อวิชาออก

384
00:32:37,754 --> 00:32:38,482
แต่ต้องเหลือ

385
00:32:38,482 --> 00:32:42,482
รหัสวิชาไว้ เพื่อให้ไปเชื่อมโยงว่า

386
00:32:48,029 --> 00:32:50,008
รหัสวิชานี้ มันชื่อวิชาอะไร จากอีกตารางหนึ่ง

387
00:32:50,008 --> 00:32:53,402
แค่นั้นเองนะคะ โอเคค่ะ

388
00:32:53,402 --> 00:32:57,402
อันนี้เป็นตัวอย่างของ

389
00:33:02,047 --> 00:33:06,047
การปรับบรรทัดฐานในรูปแบบของ 2NF นะคะ แต่เดี๋ยว 2

390
00:33:09,479 --> 00:33:13,479
อันนี้จะให้ทำเป็นการบ้าน เดี๋ยวค่อยย้อนกลับมาแล้วกันนะคะ เดี๋ยวค่อยย้อนมาสั่ง

391
00:33:14,536 --> 00:33:17,501
อันนี้เป็น 1NF นะคะ

392
00:33:17,501 --> 00:33:19,561
อันนี้ก็แก้แล้ว ตารางเมื่อกี้นะคะ ต่อมา

393
00:33:19,561 --> 00:33:22,409
ขั้นตอนสุดท้ายนะคะ 3NF

394
00:33:22,409 --> 00:33:26,409
นะคะ โดยความสัมพันธ์

395
00:33:27,314 --> 00:33:31,314
นะคะ ก่อนที่จะทำเป็น 3NF ได้จะต้องเป็น 2NF

396
00:33:39,319 --> 00:33:41,267
มาก่อน หลักของการทำขั้นตอนที่ 3 คือ ต้องเอาความสัมพันธ์ที่ไม่ใช่คีย์หลักออก

397
00:33:41,267 --> 00:33:43,939
นะคะ เช่น ไม่ใช่คีย์หลักแต่ไปมี

398
00:33:43,939 --> 00:33:47,939
ผลกับคอลัมน์อื่นไม่ได้นะคะ

399
00:33:49,637 --> 00:33:53,637
ไม่ได้ วิธีการแก้ปัญหา เช่นเดิมค่ะ

400
00:33:54,025 --> 00:33:55,169
สร้างตารางใหม่ขึ้นมาแก้ปัญหานั้น ๆ

401
00:33:55,169 --> 00:33:58,379
นะคะ อย่างเช่น

402
00:33:58,379 --> 00:34:02,379
ในตัวอย่างนะคะ รหัสพนักงาน

403
00:34:07,469 --> 00:34:11,469
นะคะ ชื่อ สกุล รหัสแผนก ชื่อแผนก เงินเดือน

404
00:34:13,056 --> 00:34:16,466
จะเห็นได้ว่าในตารางนี้ คีย์หลัก ก็คือรหัสพนักงาน

405
00:34:16,466 --> 00:34:19,700
นะคะ แต่มันมีรหัส

406
00:34:19,700 --> 00:34:23,101
แผนกกับชื่อแผนกติดมาด้วย ซึ่ง

407
00:34:23,101 --> 00:34:23,936
มันไม่ได้เกี่ยวกับรหัสพนักงานเลยนะคะ

408
00:34:23,936 --> 00:34:27,936
วิธีการแก้ปัญหา ก็คือเอารหัส

409
00:34:32,376 --> 00:34:34,555
แผนกกับชื่อแผนกไปสร้างตารางใหม่

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

411
00:34:44,003 --> 00:34:45,922
เพื่อให้มันเชื่อมโยงได้ว่าไอ้แผนก

412
00:34:45,922 --> 00:34:46,780
A001 นี่คือแผนกอะไร

413
00:34:46,780 --> 00:34:50,780
นะคะ อันนี้คือการแก้ปัญหา ไม่ใช่คีย์หลัก

414
00:34:57,260 --> 00:34:57,835
แต่ไปส่งผลกับคอมลัมน์อื่นในตารางนะคะ

415
00:34:57,835 --> 00:35:00,335
อันนี้คือ 3NF จริง ๆ แล้ว

416
00:35:00,335 --> 00:35:04,335
อยากให้ลองทำในห้องมากกว่า แต่ด้วยสัปดาห์นี้มันมีข้อกำจัดนะ ก็

417
00:35:07,247 --> 00:35:11,178
ไม่เป็นไรนะคะ อันนี้เป็นตัวอย่าง

418
00:35:11,178 --> 00:35:15,008
นะคะ สรุปนะคะ

419
00:35:15,008 --> 00:35:19,008
วิธีการทำ Normalization หรือการปรับบรรทัดฐานนะคะ

420
00:35:20,861 --> 00:35:24,861
1NF ก็คือทุก ๆ  Attribute นะคะ ก็คือทุก ๆ คอลัมน์

421
00:35:29,276 --> 00:35:31,292
ในแต่ละแถวจะต้องมีค่าของข้อมูลเพียงค่าเดียวเท่านั้น

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

423
00:35:36,651 --> 00:35:38,710
เรามีโทรศัพท์ 3 เบอร์ก็จริง แต่เราจะกรอกได้เบอร์เดียว

424
00:35:38,710 --> 00:35:42,710
นะคะ ถ้าอยากใส่เบอร์ที่ 2 ที่ 3 ก็ต้อง

425
00:35:44,196 --> 00:35:47,448
เพิ่มข้อมูลแถวใหม่ขึ้นมานะคะ ต่อมา

426
00:35:47,448 --> 00:35:51,156
2NF นะคะ ก็ปัญหา ก็คือถ้า

427
00:35:51,156 --> 00:35:55,156
มีข้อมูลนะคะ ข้อมูลทุกตัวในตารางนั้นจะต้องขึ้น

428
00:36:03,508 --> 00:36:07,398
กับคีย์หลักของตารางตัวเดียวเท่านั้นนะคะ

429
00:36:07,398 --> 00:36:09,718
ข้อที่ 3 ถ้าคอลัมน์ไหนที่ไม่ใช่คีย์หลัก

430
00:36:09,718 --> 00:36:13,718
นะคะ จะมาส่งผลกับคอลัมน์อื่นในตาราง

431
00:36:15,877 --> 00:36:16,853
ไม่ได้นะคะ เพราะฉะนั้น ไอ้ตารางข้อ 1 ก็คือ

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

433
00:36:25,963 --> 00:36:29,963
เราต้องสร้างตารางใหม่นะคะ การบ้านเอาอย่างนี้ดีกว่านะคะ

434
00:36:30,606 --> 00:36:34,606
อาจารย์จะให้ทำน่าจะส่งวันนี้

435
00:36:34,889 --> 00:36:38,388
เอาแค่ข้อเดียว

436
00:36:38,388 --> 00:36:42,388
นะคะ ข้อเดียวพอ เพราะว่าจริง ๆ

437
00:36:46,205 --> 00:36:50,205
อยากให้ทำในห้อง เดี๋ยวสัปดาห์หน้าให้ทำในห้อง

438
00:36:51,983 --> 00:36:54,819
ว่าที่เรียนไปวันนี้เข้าใจไหมนะคะ ถ้าทำเสร็จแล้ว

439
00:36:54,819 --> 00:36:58,819
ก็ค่อยเอามาส่งที่ตู้ส่งงานอาจารย์ เอาเฉพาะข้อนี้นะ

440
00:36:59,611 --> 00:37:02,443
ข้อเดียว

441
00:37:02,443 --> 00:37:04,764
ข้อเดียวพอ วันนี้ข้อเดียวพอนะคะ ส่งในเวลานี่ล่ะนะคะ

442
00:37:04,764 --> 00:37:08,764
ให้ลองทำดูว่าเข้าใจไหม ข้อนี้ทำ

443
00:37:10,521 --> 00:37:13,221
1NF ทำ 1NF ทำอย่างไร ง่ายมาก ๆ เลย

444
00:37:13,221 --> 00:37:17,221
นะคะ อาจารย์เว้นช่องว่างให้แล้ว

445
00:37:19,276 --> 00:37:23,276
เติมมานะคะ 2 NF คุณเห็นไหมว่า นี่มันมีรหัสวิชานี่

446
00:37:23,418 --> 00:37:27,418
ชื่อวิชานี่ต้องทำอย่างไรกับมัน

447
00:37:28,534 --> 00:37:32,534
นะคะ แยกมันออกมาสิ

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

449
00:37:43,264 --> 00:37:44,831
เข้าใจมากน้อยขนาดไหนนะคะ จริง ๆ อยากให้เรียนในห้องมากกว่า แต่วันนี้ก็เอาประมาณนี้

450
00:37:44,831 --> 00:37:48,831
ก่อนแล้วกันนะคะ ให้ทุกคนหายดี

451
00:37:51,634 --> 00:37:55,634
กลับมา อาทิตย์หน้าค่อยเดินดูในห้องดีกว่านะคะ

452
00:37:56,055 --> 00:37:56,168
วันนี้ก็จะประมาณนี้นะคะ

453
00:37:56,168 --> 00:38:00,168
เดี๋ยวเวลาที่เหลือให้ทำข้อนี้แล้วมาส่งวันนี้เลยยิ่งดี

454
00:38:04,466 --> 00:38:08,466
นะคะ เวลาที่เหลือทำใส่กระดาษมาส่งอาจารย์

455
00:38:11,211 --> 00:38:12,847
แล้วกันนะ ก็ประมาณนี้ค่ะ เวลาที่เหลือทำให้เสร็จภายในวันนี้

456
00:38:12,847 --> 00:38:16,847
นะคะ ข้อเดียวเองนะคะ ข้อเดียว มีใครสงสัยไหมคะ ปุ๋ยสงสัย

457
00:38:19,598 --> 00:38:23,598
ไหม ปุ๋ยเปิดไมค์ได้เหลือเปล่า

458
00:38:25,396 --> 00:38:28,967
// ไม่มีค่ะ อาจารย์ เดี๋ยวถ้าอย่างไร เดี๋ยว

459
00:38:28,967 --> 00:38:30,488
ให้อุบลไปส่ง อุบล

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

461
00:38:36,313 --> 00:38:40,313
อยู่หอหรืออยู่ DSS

462
00:38:40,632 --> 00:38:44,286
// ตอนนี้เหลืออยู่ DSS ประมาณ 4 คนค่ะ (อาจารย์เกวลี)

463
00:38:44,286 --> 00:38:47,962
ก็รวม ๆ เท่าไรได้ก็เอามา (นักศึกษาหญิง) ค่ะ ๆ ๆ

464
00:38:47,962 --> 00:38:50,693
(อาจารย์เกวลี) ก็ให้เด็กทำนั่

465
00:38:50,693 --> 00:38:54,693
นล่ะ โอเค Thank you

466
00:38:59,555 --> 00:39:02,392
ค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ ที่อาจารย์เกวลี) ค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ ที่

467
00:39:02,392 --> 00:39:06,234
ตั้งใจเรียนกันอยู่ ถ้าใครทำเสร็จ

468
00:39:06,234 --> 00:39:06,983
ก็ทำให้เสร็จแล้วฝากเพื่อนมากส่ง รวมกันมาส่งก็ได้นะคะ

469
00:39:06,983 --> 00:39:10,983
ถ้าใครอยู่หอก็มาส่งที่  DSS ก็ได้

470
00:39:15,448 --> 00:39:19,448
มาส่งที่โต๊ะอาจารย์ก็ได้นะคะ โอเคค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณล่ามด้วยนะคะ

471
00:39:22,634 --> 00:39:24,768
ค่ะ ขอบคุณค่ะ

472
00:39:24,768 --> 00:39:28,768

473
00:39:35,565 --> 00:39:39,565
ปุ๋ย

474
00:39:43,150 --> 00:39:43,358
วันนี้ครบนะ

475
00:39:43,358 --> 00:39:47,358
ปุ๋ยไปแล้ว โอเค

476
00:40:01,803 --> 00:41:03,402
[สิ้นสุดการถอดความ]

477
00:39:45,665 --> 00:39:49,084

478
00:39:49,084 --> 00:39:53,084

479
00:39:53,880 --> 00:39:57,880

480
00:40:07,579 --> 00:40:11,579

481
00:40:11,586 --> 00:40:15,586

482
00:40:15,588 --> 00:40:15,588

483
00:40:15,588 --> 00:40:19,588

484
00:40:19,591 --> 00:40:19,591

485
00:40:19,591 --> 00:40:23,591

486
00:40:23,596 --> 00:40:23,597

487
00:40:23,597 --> 00:40:27,597

488
00:40:35,601 --> 00:40:35,601

489
00:40:35,601 --> 00:40:39,601

490
00:40:39,603 --> 00:40:43,603

491
00:40:43,606 --> 00:40:47,606

492
00:40:47,610 --> 00:40:51,610

493
00:40:51,611 --> 00:40:55,611

494
00:40:55,613 --> 00:40:59,613

495
00:40:59,613 --> 00:41:03,613

496
00:41:03,618 --> 00:41:07,618


