WEBVTT
Kind: captions
Language: th

00:00:00.000 --> 00:00:07.384
(อาจารย์เกวลี) บรรทัดฐานก่อนนะคะ ซึ่งอย่างที่บอก เราทำแค่ถึง 3NF ได้ก็ถือว่าเก่งมากแล้วนะคะ

00:00:08.288 --> 00:00:14.930
แต่อย่างน้อยต้องถึง 3 นะคะ ไอ้บอยด์คอดด์กับถึง 4 นี่ ไม่ทำก็ละไว้ได้นะคะ

00:00:14.930 --> 00:00:17.322
แต่อย่างน้อยต้องถึง 3 นะคะ

00:00:21.911 --> 00:00:27.260
โดยวัตถุประสงค์ของการปรับบรรทัดฐานนะคะ แน่นอน ลดความซ้ำซ้อนกันของข้อมูล

00:00:27.260 --> 00:00:32.813
ก็ถือถ้าข้อมูลมันซ้ำกันนี่ เราก็ต้องตัดออกไป เพราะถ้ามันยิ่งซ้ำกันมากเท่าไร

00:00:32.813 --> 00:00:37.850
เนื้อหาและก็พื้นที่ในการเก็บข้อมูลนี่มันก็จะเยอะนะคะ

00:00:37.989 --> 00:00:40.796
มันก็จะทำให้สิ้นเปลืองงบประมาณด้วยเหมือนกัน

00:00:41.676 --> 00:00:48.867
รวมถึงลดปัญหาความไม่ถูกต้องของข้อมูลนะคะ ข้อมูลนี่ นอกจากจะไม่เกิดความซ้ำซ้อนกันแล้วนี่

00:00:49.794 --> 00:00:53.452
มันยังอาจจะเกิดจากสาเหตุอื่น คือ ถ้าเหมือนที่อาจารย์เคยยกตัวอย่าง

00:00:53.452 --> 00:01:00.209
ก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่นะคะ อย่างนักศึกษาเก็บข้อมูลที่คณะด้วยเก็บที่มหาวิทยาลัยด้วย

00:01:00.209 --> 00:01:01.572
เก็บที่สาขาด้วยนี่

00:01:01.827 --> 00:01:05.954
บางทีถ้าวันหนึ่งคุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์ที่บ้าน

00:01:06.858 --> 00:01:09.556
เราก็ต้องไปตามเปลี่ยนทุกที่เลยนะคะ

00:01:10.599 --> 00:01:17.511
ซึ่งเสียเวลา แล้วคราวนี้ก็จะเป็นที่เถียงกันว่า สรุปแล้วเบอร์ไหนถูก เบอร์ไหนผิดนะคะ

00:01:17.905 --> 00:01:24.955
โดยวัตถุประสงค์ของการปรับบรรทัดฐานนี่ ก็คือข้อมูลจะถูกเก็บอยู่แหล่งเดียวนะคะ เก็บอยู่ที่เดียว

00:01:25.279 --> 00:01:30.456
แต่สามารถเรียนใช้งานได้หลาย ๆ ที่ พร้อม ๆ กันได้นะคะ

00:01:31.221 --> 00:01:37.212
แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูล หรือมีการลบหรือมีการเพิ่มข้อมูลนี่ เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด

00:01:37.212 --> 00:01:41.225
เราจึงเก็บข้อมูลไว้ที่เดียว มีแก้ไขก็ที่เดียวนะคะ

00:01:41.410 --> 00:01:45.450
เพราะฉะนั้น ข้อมูลก็จะเป็นข้อมูลที่ถูกต้อง แล้วก็เป็นปัจจุบันด้วย

00:01:48.162 --> 00:01:52.541
แล้วก็อย่างที่ให้เหตุผลเมื่อกี้นี้นะคะ การเก็บข้อมูลที่เดียวนี่

00:01:52.541 --> 00:01:58.193
มันก็จะลดความผิดพลาดที่เกิดจากการเปลี่ยนแปลงข้อมูล ปรับปรุงข้อมูลนะคะ เหมือนที่บอกก็คือ

00:01:58.633 --> 00:02:03.442
ถ้าเปลี่ยนเบอร์โทรศัพท์หรือเปลี่ยนบ้านเลขที่ ก็เปลี่ยนแปลงที่เดียว

00:02:03.442 --> 00:02:08.138
เราสามารถเรียกใช้ข้อมูลได้ทุกที่พร้อม ๆ กัน ถ้าต้องการข้อมูลนะคะ

00:02:13.213 --> 00:02:17.803
ความซ้ำซ้อนกันของข้อมูลนี่ บางทีมันอาจจะเกิดความผิดพลาดของการปรับปรุงของข้อมูลนะคะ

00:02:18.000 --> 00:02:20.946
แนวคิดที่สำคัญของการออกแบบฐานข้อมูลนี่

00:02:21.294 --> 00:02:25.480
ก็คือการออกแบบข้อมูลที่ซ้ำซ้อนกันน้อยที่สุดนะคะ

00:02:25.758 --> 00:02:32.399
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลแล้วก็ลดปัญหาที่จะเกิดขึ้น ถ้าข้อมูลมันซ้ำซ้อนมากเกินไป

00:02:32.399 --> 00:02:35.243
หรือปริมาณข้อมูลมีเยอะเกินไปนะคะ

00:02:39.252 --> 00:02:44.728
อย่างเช่นตัวอย่างนะคะ ตารางด้านบน ตารางสีเทาข้างบนนะคะ

00:02:44.728 --> 00:02:47.677
จะเป็นตัวอย่างการออกแบบฐานข้อมูลที่ดี

00:02:48.812 --> 00:02:51.362
เดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่า

00:02:51.547 --> 00:02:57.883
ในตารางข้อมูลนี่มันจะมีตารางของพนักงานและก็ตารางสาขานะคะ จะเห็นได้ว่า

00:02:58.856 --> 00:03:04.818
ตารางพนักงานนี่ จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขาห้อยไว้อยู่

00:03:05.258 --> 00:03:10.706
ถามว่าทำไมไม่เอาข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ

00:03:11.077 --> 00:03:13.885
ทำไมต้องแยกออกนะคะ

00:03:14.534 --> 00:03:17.706
อย่างถ้านักศึกษาดูคนแรกนะคะ

00:03:18.000 --> 00:03:21.244
พนักงานคนแรก รหัสสาขา B005

00:03:24.280 --> 00:03:26.958
ก็คือสาขาเชียงใหม่

00:03:30.527 --> 00:03:33.040
ถ้าสมมติว่าพนักงานคนที่ 1 ลาออก

00:03:35.914 --> 00:03:38.774
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ

00:03:40.920 --> 00:03:42.285
มีการลบข้อมูล

00:03:42.795 --> 00:03:43.682
ลบคนนี้ออก

00:03:44.632 --> 00:03:45.707
ขีดฆ่าทิ้ง

00:03:46.240 --> 00:03:48.320
เดี๋ยวนะคะ ขีดฆ่าทิ้ง

00:03:49.479 --> 00:03:51.365
สิ่งไหนที่หายไปบ้าง

00:03:52.130 --> 00:03:57.244
แน่นอนสาขาเชียงใหม่จะหายไปด้วยนะคะ ถ้าสมมติเราอยู่ด้วยกัน

00:03:57.684 --> 00:04:03.052
แต่ถ้าสมมติพนักงานคนนี้ลาออก สาขาเชียงใหม่ยังอยู่ไหม ยังอยู่นะคะ

00:04:03.724 --> 00:04:08.311
ซึ่งแตกต่างจากด้านล่างนะคะ ด้านล่าง เห็นไหมคะว่า

00:04:09.331 --> 00:04:14.753
ถ้าสมมติว่าอาจารย์ลบทิ้งหมดเลย ลบทิ้งหมดนี่ กากบาททิ้ง

00:04:17.279 --> 00:04:18.855
สาขาเชียงใหม่หายไปด้วย

00:04:19.481 --> 00:04:26.274
อันนี้คือการออกแบบที่ไม่ดีนะคะ เหมือนลบคนข้างล่าง คนนี้ออก

00:04:27.224 --> 00:04:29.841
สาขาพิษณุโลกก็หายไปด้วย

00:04:31.950 --> 00:04:36.028
แต่ถ้าเป็นตารางด้านบนนะคะ ถ้าคนนี้ลาออก

00:04:36.352 --> 00:04:39.451
สาขายังอยู่ไหม ยังอยู่เหมือนเดิมนะคะ

00:04:41.537 --> 00:04:46.883
อันนี้คือการออกแบบฐานข้อมูลที่ดี ถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อกัน

00:04:46.883 --> 00:04:48.938
เราจะต้องแยกตารางออกนะคะ

00:04:55.258 --> 00:05:02.715
ตัวอย่างนะคะ ถ้าการออกแบบที่ดีนี่ เราจะลดปัญหาความซ้ำซ้อนกันของข้อมูลออกได้นะคะ

00:05:03.712 --> 00:05:07.517
อย่างเช่นตรงนี้ อันนี้เป็นตารางที่ออกแบบไม่ดีนะคะ

00:05:08.212 --> 00:05:14.698
เห็นไหมคะว่ามันจะมีรหัสสาขาแล้วก็ที่อยู่ อยู่ในตารางเดียวกัน

00:05:16.784 --> 00:05:21.328
ถ้าสมมติว่าอาจารย์เพิ่มเข้ามาใหม่อีก 1 คนนะคะ

00:05:21.699 --> 00:05:26.057
เป็น EM10 ตรงนี้นะคะ

00:05:26.984 --> 00:05:34.652
ถ้าต้องการเพิ่มพนักงานสาขาเชียงใหม่ อาจารย์ก็ต้องมากรอกข้อมูลตรงนี้อีกว่าเชียงใหม่นะ

00:05:34.652 --> 00:05:39.382
นู่นนี่นั่นโน่นนะคะ แต่ถ้าเป็นการออกแบบฐานข้อมูลที่ดีนี่

00:05:39.567 --> 00:05:42.736
เราแค่ใส่รหัสสาขานะคะ

00:05:44.196 --> 00:05:47.835
ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้นะคะ

00:05:51.381 --> 00:05:55.875
เหมือนเวลาคุณไปธนาคารใช่ไหมคะ คุณก็แค่ยื่นบัตรประชาชน

00:05:56.130 --> 00:06:00.454
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณลงไปนะคะ

00:06:01.033 --> 00:06:06.189
หรืออาจจะเอาชิปการ์ดของคุณนี่ เสียบเข้าไปในเครื่อง ถามว่าตอนนี้เราได้กรอกข้อมูลไหม

00:06:06.444 --> 00:06:09.498
ไม่ต้องนะคะ ขอแค่มีเลขบัตรประชาชน

00:06:09.660 --> 00:06:15.640
ข้อมูลทุกอย่างที่คุณมี เขาจะดึงออกมาจากระบบให้เลย เราไม่ต้องมาเสียเวลากรอกนะคะ

00:06:19.255 --> 00:06:23.166
เหมือนเมื่อก่อนนี่ต้องเขียนใส่กระดาษเลขบัตรประชาชนอะไร ชื่ออะไร

00:06:23.166 --> 00:06:25.885
นามสกุลอะไร ที่อยู่ที่ไหน เบอร์โทรศัพท์อะไร เดี๋ยวนี้ไม่ต้องเลย

00:06:26.140 --> 00:06:30.813
ขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่าง เราสามารถดึงขึ้นมาได้อยู่แล้วนะคะ

00:06:32.389 --> 00:06:33.701
อันนี้ก็เช่นเดียวกัน

00:06:34.304 --> 00:06:37.832
ถ้าการออกแบบไม่ดีนี่ เราต้องกรอกข้อมูลทุกช่อง ๆ เลยนี่

00:06:37.971 --> 00:06:41.285
มันทำให้การ อาจจะคนเดียว ไม่เดือดร้อนค่ะ

00:06:42.000 --> 00:06:45.561
แต่ถ้าเป็นพนักงานใหม่ เป็นเหมือนโรงงานน่ะค่ะ ทีละ 1,000 คน

00:06:47.415 --> 00:06:53.218
ต้องนั่งกรอกเชียงใหม่เป็นพัน ๆ ครั้งนี่ เสียเวลามาก ๆ นะคะ

00:06:54.493 --> 00:06:57.397
อันนี้คือการออกแบบที่ไม่ดีนะคะ

00:07:01.823 --> 00:07:05.713
กับอีกอย่างหนึ่ง ถ้าสมมติว่าเมื่อกี้อาจารย์เพิ่มพนักงานแล้ว

00:07:06.153 --> 00:07:12.159
ถ้าอาจารย์อยากเพิ่มแค่สาขานะคะ อยากเพิ่มแค่สาขา

00:07:12.159 --> 00:07:17.511
ซึ่งในตารางนี้ คีย์หลัก จำได้ไหมคะ คีย์หลักจะเป็นคีย์ที่ขีดเส้นใต้

00:07:20.733 --> 00:07:29.357
ซึ่งอาจารย์อยากเพิ่มสาขา สมมติอาจารย์จะเพิ่ม B100 สกลนคร สกลนครนะคะ

00:07:30.000 --> 00:07:34.098
ถามว่าเพิ่มได้ไหม อาจจะเป็นการตั้งสาขา แต่ยังไม่มีพนักงานหรอกนะคะ

00:07:35.604 --> 00:07:41.043
ถ้าจากตารางนี้นะคะ เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้

00:07:41.854 --> 00:07:47.274
เนื่องจากเรายังไม่มีรหัสพนักงาน เพราะรหัสพนักงานเป็นคีย์หลักนะคะ

00:07:47.482 --> 00:07:53.036
คีย์หลัก คือ คุณสมบัติมันคือ เป็นค่าว่างไม่ได้นะคะ

00:07:54.241 --> 00:07:56.504
อันนี้ก็ทำให้เราเพิ่มสาขาไม่ได้

00:07:57.130 --> 00:07:58.332
เพราะเราไม่มีพนักงาน

00:07:59.027 --> 00:08:06.050
อันนี้ก็เป็นข้อผิดพลาดในการเพิ่มข้อมูล ถ้าเราออกแบบตารางแบบนี้นะคะ

00:08:08.808 --> 00:08:12.278
นี่ก็คือปัญหาที่เกิดขึ้นจากการออกแบบตารางไม่ดี

00:08:17.289 --> 00:08:22.407
กับปัญหาต่อมา เป็นปัญหาการลบข้อมูลอย่างที่อาจารย์บอกนะคะ

00:08:22.824 --> 00:08:25.463
ถ้าพนักงานคนนี้ลาออก

00:08:26.668 --> 00:08:30.640
สาขาเชียงใหม่หายไปด้วยนะคะ

00:08:31.845 --> 00:08:32.697
โดนลบไป

00:08:33.300 --> 00:08:38.995
กรณีความผิดพลาดจากการเปลี่ยนแปลงนะคะ เหมือน B03... B003 นี่ค่ะ

00:08:39.598 --> 00:08:41.118
เป็นกรุงเทพฯ ใช่ไหมคะ

00:08:42.000 --> 00:08:44.263
แล้วคราวนี้ข้อมูลมันอยู่ในตารางเดียวกัน

00:08:45.190 --> 00:08:49.903
ถ้านักศึกษาจะแก้ สมมติว่าเราย้ายจากกรุงเทพฯ ไปอยู่นนทบุรี

00:08:52.522 --> 00:08:54.539
สมมติมีพนักงาน 3,000 คน

00:08:56.115 --> 00:08:58.380
คุณต้องแก้กรุงเทพฯ 3,000 ครั้ง

00:09:00.628 --> 00:09:03.383
เป็นนนทบุรีนะคะ

00:09:04.310 --> 00:09:08.676
ถ้าพนักงานมีคน 2 คน ไม่ใช้ปัญหาค่ะ แต่ถ้าคุณเป็นโรงงานขนาดใหญ่

00:09:09.626 --> 00:09:13.666
นั่งแก้ทีละ 3,000 คน ไม่ใช่เรื่องสนุกแน่ ๆ นะคะ

00:09:18.301 --> 00:09:25.329
อันนี้ก็เป็นปัญหานะคะ เพราะฉะนั้น เราควรแยกตารางพนักงานกับตารางสาขาออกจากกันนะคะ

00:09:25.329 --> 00:09:31.208
นี่เป็นเหตุผล อันนี้คือข้อมูลขนาดเล็กนะคะ เรายังเห็นปัญหาขนาดนี้ ถ้าสมมติว่า

00:09:31.579 --> 00:09:37.857
เป็นองค์กรขนาดใหญ่ เป็นบริษัท เป็นโรงงาน หรือระดับโรงเรียนมีนักเรียน

00:09:37.857 --> 00:09:39.827
200-300 หรือ 2,000-3,000 คนก็ได้

00:09:40.128 --> 00:09:44.849
นะคะ มันก็จะมีปัญหาเยอะมาก ถ้าสมมติว่าเราจัดการตารางไม่ดีนะคะ

00:09:49.762 --> 00:09:54.685
จากปัญหาที่เกิดขึ้นเมื่อกี้อย่างที่บอกค่ะ เราจะแก้ปัญหาโดยการแยกตารางออกเป็น 2 ตาราง

00:09:54.685 --> 00:09:55.901
แบบนี้นะคะ

00:10:00.000 --> 00:10:02.662
ฟังก์ชันการขึ้นต่อกันนะคะ อันนี้เดี๋ยว

00:10:04.029 --> 00:10:08.916
จะเป็นเกี่ยวกับตารางหนึ่งมีผลกับอีกตารางหนึ่ง เราจะเรียกว่าเป็นฟังก์ชันที่มีการขึ้นต่อกัน

00:10:10.816 --> 00:10:13.331
เดี๋ยวดูตัวอย่างเลยแล้วกันนะคะ

00:10:14.212 --> 00:10:16.787
อย่างเช่น ตารางนี้นะคะ

00:10:17.505 --> 00:10:19.963
ดูจากรหัสพนักงานนะคะ

00:10:20.542 --> 00:10:22.533
เราจะเห็นได้ว่ารหัสพนักงาน

00:10:24.364 --> 00:10:26.862
จะส่งผลกับชื่อตำแหน่ง

00:10:29.388 --> 00:10:35.618
สัญลักษณ์ของการขึ้นต่อกันนะคะ อันไหนเป็นตัวหลักจะชี้ไปที่ตัวรองนะคะ ตามหัวลูกศรเลย

00:10:37.773 --> 00:10:42.278
ดูทิศทางตามหัวลูกศรนะคะ อันไหนเป็นตัวหลัก อันไหนเป็นตัวรองนะคะ

00:10:46.241 --> 00:10:52.177
อย่างเช่น ตัวนี้ถามว่าตำแหน่งมาชี้ที่รหัสพนักงานได้ไหมนะคะ

00:10:52.548 --> 00:10:59.534
ถามว่าไม่ได้นะคะ เพราะการขึ้นต่อกันจะต้องเป็นลักษณะ 1 ต่อ 1 เท่านั้น

00:11:02.176 --> 00:11:05.575
นะคะ เป็น 1 ต่อกลุ่มไม่ได้

00:11:14.710 --> 00:11:17.830
ชนิดของการขึ้นต่อกันนะคะ จะมีอยู่ 4 ชนิดนะคะ

00:11:20.356 --> 00:11:23.598
ชนิดแรกเป็นการขึ้นต่อกันโดยสมบูรณ์นะคะ

00:11:25.916 --> 00:11:34.320
ซึ่งอาจจะเป็นเกี่ยวกับตารางนะคะ จะมีคอลัมน์ 1 คอลัมน์ หรือมากกว่า 1 คอลัมน์มาประกอบกันนะคะ

00:11:34.459 --> 00:11:38.464
โดยในคอลัมน์นั้น ๆ นี่ จะบรรจุค่าที่ระบุ

00:11:39.924 --> 00:11:43.533
ความพิเศษของแถวแถวหนึ่งได้อย่างชัดเจนนะคะ

00:11:43.834 --> 00:11:47.414
ก็คือ Attribute Attribute หนึ่งนี่ จะเป็นค่าเฉพาะที่บอกได้ว่า

00:11:47.854 --> 00:11:53.055
Record ข้อมูลแถว ๆ นั้นนี่ มันมีลักษณะพิเศษเฉพาะตัวอย่างไรนะคะ

00:11:54.422 --> 00:11:58.507
โดยในทุกความสัมพันธ์นี่จะต้องระบุค่าคีย์หลักไว้ด้วยนะคะ

00:11:58.507 --> 00:12:03.516
ซึ่งคีย์หลักนี่คือต้องเป็นค่าเอกลักษณ์ ไม่ซ้ำกันอยู่แล้วนะคะ

00:12:08.962 --> 00:12:15.736
อย่างเช่น การขึ้นต่อกันอย่างสมบูรณ์ อันแรกนะคะ Attribute ที่... ก็คือคอลัมน์ที่ไม่ใช่คีย์หลัก

00:12:15.736 --> 00:12:21.320
คีย์หลัก จำได้ใช่ไหมคะ คีย์หลักจะเป็นคอลัมน์ที่มีขีดเส้นใต้นะคะ

00:12:25.028 --> 00:12:31.680
คอลัมน์ที่ไม่ใช่คีย์หลักจะขึ้นตรงต่อคอลัมน์ที่เป็นคีย์หลักคอลัมน์เดียวเท่านั้นนะคะ

00:12:32.004 --> 00:12:34.774
เช่น เลขบัตรประชาชนตัวนี้

00:12:35.701 --> 00:12:39.996
จะขึ้นจะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ

00:12:41.456 --> 00:12:47.039
เพราะฉะนั้น การขึ้นต่อกันโดยสมบูรณ์จะเป็นลักษณะแบบ 1 ต่อ 1 นะคะ เลขบัตรประชาชน 1 เลข

00:12:47.503 --> 00:12:55.556
จะต้องเป็นของคนคนเดียวเท่านั้นนะคะ ไม่ใช่ว่าเลขบัตรประชาชนนี้ใช้ 10 คน เป็นไปไม่ได้นะคะ

00:13:02.151 --> 00:13:07.152
ตัวอย่างนะคะ ตารางที่มีคอลัมน์หลายตัวนะคะ

00:13:07.685 --> 00:13:10.224
ขึ้นอยู่กับคีย์หลักตัวเดียว เช่น

00:13:10.595 --> 00:13:15.700
คน 1 คนนี่ ก็จะมีข้อมูล ชื่อ นามสกุล วันเดือนปีเกิด วันที่ทำบัตรใช่ไหมคะ

00:13:16.256 --> 00:13:20.633
แต่ว่าเขาจะต้องขึ้นตรงกับเลขบัตรประชาชนเดียวเท่านั้น

00:13:20.818 --> 00:13:26.356
ถามว่า 3 คนนี้ อาจจะเกิดวันเดียวกันก็ได้ค่ะ แต่เลขบัตรประชาชนเขาจะไม่เหมือนกัน

00:13:28.210 --> 00:13:31.247
หรือเขาอาจจะมาทำบัตรวันเดียวกันนะคะ

00:13:31.479 --> 00:13:35.272
แต่เลขบัตรประชาชนเขาจะไม่ซ้ำกันนะคะ

00:13:36.315 --> 00:13:39.717
คืออะไรซ้ำกันได้ทุกอย่างค่ะ ยกเว้นหมายเลขบัตรประชาชน

00:13:51.209 --> 00:13:53.686
แต่บางตารางนะคะ

00:13:54.520 --> 00:13:57.028
ก็อาจจะเป็นการรวมตัวกันของคีย์หลัก

00:13:58.001 --> 00:13:59.922
มากกว่า 1 คีย์หลักนะคะ

00:14:01.104 --> 00:14:12.601
มารวมกัน เช่น นักศึกษาคนนี้นะคะ รหัสนักศึกษานี้ ลงทะเบียนวิชานี้นะคะ ได้เกรดอะไรนะคะ

00:14:12.786 --> 00:14:19.778
อันนี้ก็เป็นความสัมพันธ์ที่เกิดขึ้นได้เหมือนกัน ถามว่ารหัสนักศึกษาซ้ำกันได้ไหม ไม่ซ้ำนะคะ

00:14:20.218 --> 00:14:25.014
รหัสวิชาซ้ำกันได้ไหม ไม่ซ้ำนะคะ เหมือนชื่อวิชาอาจารย์

00:14:25.825 --> 00:14:29.483
ก็รหัสหนึ่งนะคะ ชื่ออาจารย์คนอื่นก็รหัสวิชาอีกอันหนึ่ง

00:14:30.109 --> 00:14:32.346
อันนี้จะไม่ซ้ำกันอยู่แล้วนะคะ

00:14:36.000 --> 00:14:44.733
ต่อมาขึ้นต่อกันบางส่วนนะคะ มันก็จะเป็นอาศัยความสัมพันธ์ที่เกิดขึ้นจากคีย์ผสมนะคะ อาจจะเป็น

00:14:44.895 --> 00:14:50.555
ขึ้นตรงกับตารางอื่น หรือ 2 ตารางมารวมกันนะคะ อาจจะไม่ใช่คีย์หลักก็ได้

00:14:50.671 --> 00:14:56.445
แต่มันมีความหมายกับอีกคอลัมน์หนึ่งนะคะ เดี๋ยวจะยกตัวอย่างเลยดีกว่านะคะ

00:14:57.418 --> 00:14:58.330
อย่างเช่น

00:15:00.740 --> 00:15:05.895
เมื่อตารางที่อาจารย์ให้ดูเมื่อกี้นะคะ ก็จะมีรหัสนักศึกษา รหัสวิชา มีเกรด

00:15:06.219 --> 00:15:12.076
แล้วก็มีการบอกด้วยว่ารหัสวิชานี้เป็นชื่อวิชาอะไรนะคะ

00:15:12.540 --> 00:15:16.936
มันจะเป็นการเกิดขึ้น เมื่อคีย์หลักประกอบกันด้วย

00:15:17.121 --> 00:15:20.427
คอลัมน์หรือว่า Attribute หลาย ๆ Attribute รวมกันนะคะ

00:15:21.841 --> 00:15:23.315
โดยบางส่วนของคีย์หลัก

00:15:24.798 --> 00:15:29.729
สามารถไประบุค่า Attribute อื่นที่ไม่ใช่คีย์หลักได้นะคะ

00:15:30.000 --> 00:15:34.677
อย่างเช่น ในความสัมพันธ์นี้ คีย์หลักจะมี 2 ตัวนะคะ

00:15:34.677 --> 00:15:38.604
มีรหัสนักศึกษากับรหัสวิชานะคะ

00:15:40.643 --> 00:15:49.157
ถามว่าถ้ามีแต่รหัสนักศึกษา เกรดนะคะ รหัสวิชา

00:15:49.922 --> 00:15:57.697
แล้วเราจะรู้ไหมว่าชื่อวิชาที่เราเรียนไปนี่ ชื่อวิชาอะไรนะคะ

00:15:59.366 --> 00:16:04.320
เหมือนบางคนรู้รหัสวิชา แต่จำชื่อวิชาไม่ได้ก็มีนะคะ เพราะฉะนั้น

00:16:04.320 --> 00:16:11.670
รหัสวิชานี่มันเลยสามารถไปส่งผลกับชื่อวิชาได้เหมือนกัน เพราะเป็นตัวระบุว่าไอ้รหัสวิชานี้

00:16:12.134 --> 00:16:16.758
ชื่อวิชาอะไรนะคะ ก็คือคีย์หลักในตารางนี้มี 2 อัน

00:16:17.453 --> 00:16:19.239
แต่มีคีย์หลัก 1 ตัวนี่

00:16:20.073 --> 00:16:25.422
ไปมีผลกับอีก Attribute หนึ่งได้นะคะ อันนี้คือความขึ้นต่อกันบางส่วน

00:16:30.312 --> 00:16:36.150
นะคะ อย่างเช่นตัวนี้ก็จะเป็นของจริง ถ้าสมมติว่าอาจาย์ตัดรหัสนักศึกษาออก

00:16:36.938 --> 00:16:42.526
มีแค่รหัสวิชา มีเกรด มีชื่อวิชาการเขียนโปรแกรม แล้วถาม รู้ไหมคะว่าเกรด A นี้ของใคร

00:16:44.959 --> 00:16:47.617
ไม่รู้นะคะ หรือว่า

00:16:49.428 --> 00:16:50.626
เดี๋ยวลบอันนี้ออกก่อนนะ

00:16:54.000 --> 00:16:56.834
หรือว่าอาจารย์ลบรหัสวิชาออก

00:16:59.314 --> 00:17:04.083
เหลือแต่นักศึกษา เหลือเกรด เหลือชื่อวิชา แล้วถามว่า

00:17:04.755 --> 00:17:06.957
แล้วรหัสวิชาอะไรล่ะที่เราได้เกรด A

00:17:08.185 --> 00:17:14.894
เราก็ไม่ทราบอีกเหมือนกันนะคะ อันนี้ก็คือเป็นการขึ้นต่อกันบางส่วนนะคะ

00:17:20.538 --> 00:17:22.116
ดูตัวอย่างนะคะ

00:17:23.275 --> 00:17:26.837
ต่อมา เป็นการขึ้นต่อกันแบบส่งต่อนะคะ

00:17:27.092 --> 00:17:33.299
ก็จะเป็นความสัมพันธ์ที่เกิดขึ้นก็ต่อเมื่อ มี Attribute หรือว่าคอลัมน์อื่น ๆ ที่ไม่ใช่คีย์หลัก

00:17:33.971 --> 00:17:37.022
แต่ไปสามารถขึ้น

00:17:38.042 --> 00:17:42.224
สามารถระบุค่าของ Attribute อื่นใน Record ได้นะคะ

00:17:42.409 --> 00:17:46.423
ซึ่งเป็นการออกแบบที่ไม่เหมาะสมนะคะ

00:17:48.671 --> 00:17:55.244
เพราะส่วนใหญ่แล้วในตารางนี่ ถ้าเราจะระบุค่าอื่นให้กับคอลัมน์อื่นได้

00:17:55.244 --> 00:17:57.868
ควรจะต้องเป็นคีย์หลักเท่านั้นนะคะ

00:18:01.391 --> 00:18:07.577
ดูตัวอย่างนะคะ เช่น ตารางนี้ เขาบอกว่าสิ่งที่เกิดขึ้น คือ

00:18:08.342 --> 00:18:14.244
Attribute ก็คือคอลัมน์ที่ไม่ใช่คีย์หลัก หรือ Primary Key นะคะ ก็คือไม่ใช่คอลัมน์ที่มีเส้นขีดนี่

00:18:14.383 --> 00:18:17.662
มันไประบุค่าอื่น ๆ ในตารางได้ เช่น

00:18:17.801 --> 00:18:21.346
ตารางนี้ คีย์หลักก็คือเลขที่ประจำตัวนะคะ

00:18:21.740 --> 00:18:27.604
โดยเลขประจำตัวนี่ จะไปมีผลกับชื่อ นามสกุล ที่อยู่ ตำแหน่ง ใช่ไหมคะ

00:18:28.207 --> 00:18:30.898
แต่คราวนี้ รถประจำตำแหน่ง

00:18:32.775 --> 00:18:35.022
มันไม่ถูกระบุโดยเลขประจำตัว

00:18:36.830 --> 00:18:38.741
มันถูกระบุโดยรหัสตำแหน่ง

00:18:40.850 --> 00:18:46.067
เหมือนถ้าเป็นผู้จัดการนี่ แทนที่ผู้จัดการนะคะจะรู้เลยว่ารถประจำตำแหน่งคืออะไร

00:18:46.809 --> 00:18:50.582
แต่เขาไปเช็กที่รหัสตำแหน่ง แทนที่จะเช็กกับเลขประจำตัว

00:18:51.300 --> 00:18:53.593
อันนี้ คือการออกแบบที่ไม่ดี

00:18:56.026 --> 00:18:59.910
เพราะฉะนั้น ถ้าสมมติว่าจะให้รถประจำตำแหน่ง

00:19:00.350 --> 00:19:04.797
วิธีการแก้ปัญหาก็คือเราควรจะแยกตารางนี้

00:19:06.953 --> 00:19:08.941
ออกไปสร้างตารางใหม่เลยค่ะ

00:19:09.613 --> 00:19:14.477
มันไม่ควรจะมาขึ้นกับตารางที่มีคีย์หลัก

00:19:15.983 --> 00:19:20.831
แต่ไม่สามารถระบุค่าข้อมูลตรงนี้ได้นี่ มันไม่ควรทำนะคะ

00:19:25.605 --> 00:19:29.223
กับต่อมา เป็นการขึ้นต่อกันเชิงกลุ่มนะคะ

00:19:29.571 --> 00:19:36.127
ก็จะเป็นความสัมพันธ์ระหว่างคอลัมน์ หรือว่า Attribute นี่แบบขึ้นต่อกันแบบสมบูรณ์นะคะ

00:19:36.243 --> 00:19:39.027
ก็ไปสามารถไประบุค่าอื่นได้นะคะ

00:19:40.232 --> 00:19:47.962
โดยที่อย่างเช่นตัวอย่างนะคะ ในตารางนี้นะคะ จะมีรหัสหลักสูตร

00:19:48.773 --> 00:19:51.437
สามารถระบุรหัสวิชาได้หลายวิชา เช่น

00:19:51.877 --> 00:19:55.386
จริง ๆ ในรหัสนักศึกษาจะได้เห็นได้ว่ามีเลข

00:19:56.220 --> 00:19:57.525
122

00:19:59.703 --> 00:20:08.259
ในรหัสนักศึกษานี่ มี 122 คืออะไร 122 ก็คือหลักสูตรที่เราเรียนอยู่นะคะ

00:20:09.441 --> 00:20:16.522
ซึ่งในหลักสูตรที่เราเรียนนี่ มันมีวิชามากกว่า 20 วิชานะคะ

00:20:17.194 --> 00:20:24.947
นั่นก็คือในรหัสหลักสูตรนี่ มันสามารถระบุรหัสวิชาได้หลากหลายรหัสวิชามาก ๆ นะคะ

00:20:26.940 --> 00:20:32.493
อันนี้ก็คือการขึ้นต่อกันแบบมีค่ามากกว่า 1 นะคะ

00:20:32.493 --> 00:20:36.901
รหัสหลักสูตร สามารถระบุรหัสวิชาได้หลายค่านั่นเองนะคะ

00:20:37.550 --> 00:20:42.340
แล้วรหัสหลักสูตร ก็สามารถระบุค่ารหัสนักศึกษาได้หลายคนเช่นเดียวกัน

00:20:43.985 --> 00:20:47.608
เหมือนตอนนี้ หลักสูตรที่เราเรียนนี่ มีนักศึกษาเกือบ 100 คน

00:20:48.581 --> 00:20:51.665
แต่รหัสหลักสูตรเดียวนะ นะคะ

00:20:51.966 --> 00:20:57.954
นี่คือความสัมพันธ์แบบสามารถระบุค่าได้มากกว่า 1 นั่นเอง แบบหลายค่านะคะ

00:21:03.261 --> 00:21:06.705
เพราะฉะนั้น วิธีการแก้ปัญหาของสิ่งที่เกิดขึ้นนะคะ

00:21:06.890 --> 00:21:10.887
เราเลยจะต้องมีการ... กระบวนการปรับบรรทัดฐาน

00:21:10.980 --> 00:21:15.955
หรือว่ากระบวนการปรับปรุงโครงสร้างของข้อมูลนะคะ ที่มีความซ้ำซ้อนกัน

00:21:16.094 --> 00:21:23.046
ให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน ก็คือ เป็นรูปแบบที่พร้อมที่จะเอาไปพัฒนาเป็นฐานข้อมูลได้นะคะ

00:21:23.602 --> 00:21:30.052
โดยหลักการนะคะ อย่างที่บอก มี 5 ระดับ แต่ในระดับที่ 3 นี่ ก็ถือว่าเพียงพอ

00:21:30.052 --> 00:21:32.911
สำหรับการออกแบบฐานข้อมูลในปัจจุบันแล้วนะคะ

00:21:35.483 --> 00:21:44.221
โดยคีย์หลักของการทำงานนะคะ ขั้นที่ 1 นะคะ กำจัดกลุ่มของข้อมูลมีความซ้ำซ้อนกันออกไป

00:21:44.939 --> 00:21:46.452
ข้อแรกง่ายมาก ๆ

00:21:49.140 --> 00:21:51.396
ง่ายที่สุด ก็คือ 1NF นะคะ

00:21:52.601 --> 00:22:01.268
ต่อมาขั้นที่ 2 หรือ 2 NF นะคะ จะกำจัดการขึ้นต่อกันบางส่วนออกนะคะ

00:22:02.983 --> 00:22:05.433
ขั้นสุดท้าย 3NF นะคะ

00:22:06.000 --> 00:22:11.680
กำจัดการขึ้นต่อกันของ Attribute ที่ไม่ใช่คีย์หลักนะคะ เดี๋ยวจะมาดูทีละขั้น

00:22:12.000 --> 00:22:14.756
ว่ามันจะต้องเป็นอย่างไรบ้างนะคะ

00:22:16.842 --> 00:22:19.316
ข้อแรกง่ายที่สุด ง่ายมาก ๆ นะคะ

00:22:22.352 --> 00:22:28.544
ให้นักศึกษาจำกระบวนการหลัก ๆ จะมีอยู่ 3 ข้อนี้ค่ะ ขั้นตอนอันแรกเลย ดูก่อนว่า

00:22:28.799 --> 00:22:35.568
ข้อมูลมันซ้ำซ้อนกันไหมนะคะ ขั้นที่ 2 ก็คือ มันขึ้นต่อกันแค่บางส่วนหรือเปล่านะคะ

00:22:35.568 --> 00:22:42.833
ขั้นที่ 3 ค่าอันไหนไม่ใช่คีย์หลัก แต่มันไปส่งผลกระทบกับข้อมูลอื่นได้หรือเปล่านะคะ

00:22:43.297 --> 00:22:52.004
ดูขั้นตอนที่ 1 ก่อนนะคะ ขั้นตอนที่ 1 ง่ายมากนะคะ ทุก ๆ คอลัมน์นะคะ

00:22:52.004 --> 00:22:58.450
หรือ Attribute ในแต่ละ Record จะต้องเป็นค่า Single Value คือมีค่าเดียวเท่านั้นนะคะ

00:22:58.589 --> 00:23:03.317
จะใส่แบบนี้ไม่ได้ เพราะฉะนั้น ข้อมูลทุกแถวจะต้องมีค่าที่ไม่ซ้ำกัน

00:23:04.151 --> 00:23:12.302
อย่างตัวนี้ นักศึกษาคนที่ 1 แน่นอนนักศึกษา 1 เทอมนี่ คุณลงทะเบียนประมาณ 6-7 วิชาใช่ไหมคะ

00:23:14.341 --> 00:23:22.536
ข้อมูลมันก็จะเป็นแบบนี้ ถ้าเราไม่มีการทำ Normalization แต่คราวนี้ ขั้นตอนที่ 1

00:23:23.255 --> 00:23:26.099
เราจะตัดข้อมูลที่ซ้ำซ้อนกันออก

00:23:26.887 --> 00:23:31.098
วิธีการง่ายมากค่ะ คือแยกข้อมูลออกเป็นอย่างละแถวที่ไม่ซ้ำกัน

00:23:32.674 --> 00:23:33.807
ดูตัวอย่างนะคะ

00:23:36.310 --> 00:23:40.272
วิธีการทำ 1 NF ง่ายมากค่ะ ถ้าข้อมูลคนไหนเป็นกลุ่มนี่ค่ะ

00:23:41.176 --> 00:23:45.983
คนที่ 1 ลงวิชา... ลงทะเบียนเรียน 3 วิชาใช่ไหมคะ คนที่ 2 มี 2 วิชา

00:23:46.632 --> 00:23:50.968
สามารถทำในรูปแบบ 1NF ก็คือเอามันกระจายออกมาค่ะ

00:23:51.825 --> 00:23:55.997
กระจายข้อมูลพวกนี้ออกมา กระจายออกเห็นไหมคะ กระจายออก

00:23:57.388 --> 00:24:07.095
1NF ง่ายมากนะคะ ข้อมูลพวกนี้ก็ทำซ้ำลงมา ทำซ้ำลงมา ทำซ้ำลงมานะคะ ทำซ้ำลงมา

00:24:10.085 --> 00:24:16.487
ถามว่าอาจารย์คะ ทำไม มัน... แล้วทำไม 001 มันซ้ำกันได้ล่ะ นู่นนี่นั่นโน่น

00:24:17.066 --> 00:24:19.382
แต่รหัสวิชาเขาไม่ซ้ำกันเห็นไหมคะ

00:24:22.997 --> 00:24:28.778
1NF นี่ง่ายมากค่ะ ข้อมูลถ้ามันเป็นก้อนอย่างนี้ เรากระจายออกมาเป็นแยกออกมาเป็นบรรทัด ๆ เลย

00:24:28.778 --> 00:24:33.961
แค่นั้นเอง อย่างน้อยในข้อสอบ ต้องทำ 1NF ให้ได้

00:24:36.000 --> 00:24:38.686
เพราะมันง่ายที่สุดแล้วนะคะ

00:24:41.745 --> 00:24:44.159
อย่างเช่นตัวนี้นะคะ ก็กระจายออกมา

00:24:49.119 --> 00:24:54.798
แล้วคราวนี้ถ้าเรากระจายข้อมูลเรียบร้อยแล้วนะคะ ก็จะมาดูว่าอย่างในตารางนี้น่ะค่ะ

00:24:55.354 --> 00:25:05.117
เป็นตารางเป็นของพนักงานใช่ไหมคะ เขาจะมีคีย์หลัก 1 ตัวแล้ว แต่ว่ามันยังมีตัวนี้ค่ะ

00:25:05.581 --> 00:25:11.223
ตัวที่  1 ตัวที่ 2 ที่มีคุณสมบัติเป็นคีย์หลักได้

00:25:13.517 --> 00:25:16.947
เราต้องแยกมันออกนะคะ

00:25:19.473 --> 00:25:27.095
กระบวนการนะคะ ดูก่อนว่า นี่ตารางเมื่อกี้นี้นะคะ สิ่งที่ขึ้นตรงกับคีย์หลักตัวนี้นะคะ

00:25:27.095 --> 00:25:29.666
ก็จะเป็นตัวที่ 1 ตัวที่ 2 ตัวที่ 3

00:25:30.871 --> 00:25:36.916
สังเกตแล้วว่าคีย์หลักมีตัวเดียว แต่ข้อมูลมีเยอะมากนะคะ เราแยกออกมาได้อันแรกเลย

00:25:38.075 --> 00:25:45.854
ก็จะมีรหัสโพรเจกต์นะคะ แล้วก็ชื่อโพรเจกต์ ใครเป็นผู้จัดการ เงินเดือนเท่าไร ไม่ใช่สิ

00:25:46.132 --> 00:25:48.767
งบประมาณเท่าไรนะคะ อันนี้

00:25:49.231 --> 00:25:54.589
คือมันจะเชื่อมโยงกับข้อมูลที่เป็นคีย์หลัก ก็คือ ProjectCode ตัวนี้นะคะ

00:25:57.092 --> 00:26:00.052
ส่วนตัวนี้ เป็นคีย์คู่แข่ง

00:26:02.601 --> 00:26:10.007
2 ตัวนะคะ 2 ตัวนี่มันสามารถทำหน้าที่เป็นคีย์หลักให้กับอย่างตัวนี้นะคะ

00:26:10.841 --> 00:26:13.780
มันจะเป็นคีย์หลักให้กับชื่อของพนักงาน

00:26:15.055 --> 00:26:26.090
อย่างตัวนี้ ก็จะเป็นคีย์หลักสำหรับชื่อแผนกนะคะ ถามว่ามันขึ้นตรงกับ ProjectCode ไหม ไม่นะคะ

00:26:30.000 --> 00:26:34.040
เพราะฉะนั้น การทำขั้นตอนต่อมานะคะ 2NF

00:26:34.642 --> 00:26:40.004
ขั้นตอนที่ 1 เราจะต้องทำ 1NF มาเรียบร้อยแล้ว ซึ่งง่ายมาก ๆ นะคะ

00:26:40.282 --> 00:26:44.837
แล้วก็ต้องมาตัดการขึ้นต่อกันบางส่วนออกนะคะ

00:26:45.022 --> 00:26:51.930
ก็คือการกำจัด Attribute ที่ไม่ขึ้นกับคีย์หลักของตารางนั้น ๆ นั่นเอง

00:26:52.996 --> 00:26:54.800
กำจัดออกนะคะ

00:26:56.654 --> 00:26:58.455
อย่างเช่นตัวนี้นะคะ

00:26:59.498 --> 00:27:04.792
การขึ้นต่อกันบางส่วน จะเห็นได้ว่า รหัสวิชากับชื่อวิชา

00:27:05.325 --> 00:27:10.390
มันไม่ขึ้นตรงกับรหัสนักศึกษาใช่ไหมคะ อันนี้จำได้นะ รูปเดิมนะคะ รูปเดิม

00:27:13.426 --> 00:27:21.477
วิธีกำจัดปัญหา เราก็ดึงสิ่งที่มันเป็นปัญหาค่ะ สิ่งที่มันไม่ขึ้นตรงกับคีย์หลักตัวนั้นไปสร้างตารางใหม่

00:27:23.377 --> 00:27:28.504
สร้างตารางเพิ่มนะคะ เอาสิ่งที่เป็นปัญหาออกมา ไปใส่ตารางใหม่

00:27:28.620 --> 00:27:31.452
กำหนดคีย์หลักใหม่นะคะ

00:27:31.962 --> 00:27:34.322
ในตารางเดิมนะคะ

00:27:34.693 --> 00:27:39.054
เราก็เอาคีย์หลักของตารางใหม่ไปใส่ แค่นั้นเองนะคะ

00:27:39.425 --> 00:27:40.768
วิธีการก็คือ

00:27:42.228 --> 00:27:43.290
เหมือนรูปนี้นะคะ

00:27:44.055 --> 00:27:50.059
สิ่งที่เป็นปัญหาที่อาจารย์ยกตัวอย่าง ก็คือรหัสวิชา กับชื่อวิชานะคะ

00:27:50.314 --> 00:27:54.420
เพราะรหัสวิชามันไม่ได้ขึ้นตรงกับรหัสนักศึกษา

00:27:57.016 --> 00:28:02.107
นะคะ เพราะฉะนั้น ไอ้ 2 ตัวนี้คือสิ่งที่เป็นปัญหานะคะ

00:28:02.200 --> 00:28:05.925
วิธีการแก้ปัญหาคือเราสร้างตารางผลการเรียนใหม่

00:28:06.528 --> 00:28:09.025
สร้างตารางวิชาใหม่ นี่เห็นไหมคะ

00:28:09.674 --> 00:28:12.358
ในตารางใหม่เราจะตัดชื่อวิชาออก

00:28:14.768 --> 00:28:21.858
แต่ต้องเหลือรหัสวิชาไว้ เพื่อให้ไปเชื่อมโยงว่ารหัสวิชานี้ มันชื่อวิชาอะไร

00:28:21.951 --> 00:28:25.621
จากอีกตารางหนึ่งแค่นั้นเองนะคะ

00:28:29.353 --> 00:28:30.688
โอเคค่ะ

00:28:33.793 --> 00:28:43.910
อันนี้เป็นตัวอย่างของการปรับบรรทัดฐานในรูปแบบของ 2NF นะคะ แต่เดี๋ยวอันนี้จะให้ทำเป็นการบ้าน

00:28:43.910 --> 00:28:47.317
เดี๋ยวค่อยย้อนกลับมาแล้วกันนะคะ เดี๋ยวค่อยย้อนมาสั่ง

00:28:49.565 --> 00:28:56.788
อันนี้เป็น 1NF นะคะ อันนี้ก็แก้แล้ว ตารางเมื่อกี้นะคะ ต่อมา

00:28:56.997 --> 00:29:01.472
ขั้นตอนสุดท้ายนะคะ 3NF นะคะ

00:29:03.210 --> 00:29:07.772
โดยความสัมพันธ์นะคะ ก่อนที่จะทำเป็น 3NF ได้จะต้องทำ 2NF มาก่อน

00:29:09.672 --> 00:29:16.779
หลักของการทำขั้นตอนที่ 3 คือ ต้องเอาความสัมพันธ์ที่ไม่ใช่คีย์หลักออกนะคะ

00:29:18.332 --> 00:29:24.775
เช่น ไม่ใช่คีย์หลักแต่ไปมีผลกับคอลัมน์อื่นไม่ได้นะคะ ไม่ได้

00:29:26.838 --> 00:29:33.120
วิธีการแก้ปัญหา เช่นเดิมค่ะ สร้างตารางใหม่ขึ้นมาแก้ปัญหานั้น ๆ นะคะ

00:29:35.484 --> 00:29:40.813
อย่างเช่น ในตัวอย่างนะคะ รหัสพนักงานนะคะ

00:29:41.694 --> 00:29:49.753
ชื่อ สกุล รหัสแผนก ชื่อแผนก เงินเดือน จะเห็นได้ว่าในตารางนี้นี่ คีย์หลักก็คือรหัสพนักงานนะคะ

00:29:50.240 --> 00:29:54.309
แต่มันมีรหัสแผนกกับชื่อแผนกติดมาด้วย

00:29:56.233 --> 00:29:59.300
ซึ่งมันไม่ได้เกี่ยวกับรหัสพนักงานเลยนะคะ

00:30:00.760 --> 00:30:05.887
วิธีการแก้ปัญหา ก็คือเอารหัสแผนกกับชื่อแผนก

00:30:06.513 --> 00:30:07.912
ไปสร้างตารางใหม่

00:30:11.207 --> 00:30:16.374
แต่ต้องยังคงรหัสแผนกไว้ในตารางเดิมนะคะ

00:30:17.255 --> 00:30:22.256
เพื่อให้มันเชื่อมโยงได้ว่าไอ้แผนก A001 นี่คือแผนกอะไร

00:30:24.689 --> 00:30:32.022
นะคะ อันนี้คือการแก้ปัญหา ไม่ใช่คีย์หลักแต่ไปส่งผลกับคอมลัมน์อื่นในตารางนะคะ

00:30:33.459 --> 00:30:34.775
อันนี้คือ 3NF

00:30:35.679 --> 00:30:42.347
จริง ๆ แล้ว อยากให้ลองทำในห้องมากกว่า แต่ด้วยสัปดาห์นี้มันมีข้อกำจัดนะ ก็ไม่เป็นไรนะคะ

00:30:45.893 --> 00:30:47.638
อันนี้เป็นตัวอย่างนะคะ

00:30:49.585 --> 00:30:56.025
สรุปนะคะ วิธีการทำ Normalization หรือว่าการปรับบรรทัดฐานนะคะ 1NF

00:30:56.396 --> 00:31:01.124
ก็คือทุก ๆ Attribute นะคะ ก็คือทุก ๆ คอลัมน์ ในแต่ละแถว

00:31:01.355 --> 00:31:07.444
จะต้องมีค่าของข้อมูลเพียงค่าเดียวเท่านั้นนะคะ อย่างเช่น เหมือนเวลาเรากรอกเบอร์โทรศัพท์

00:31:07.606 --> 00:31:12.727
เราจะไม่... เรามีโทรศัพท์ 3 เบอร์ก็จริง แต่เราจะกรอกได้เบอร์เดียวนะคะ

00:31:13.978 --> 00:31:18.646
ถ้าอยากใส่เบอร์ที่ 2 ที่ 3 ก็ต้องเพิ่มข้อมูลแถวใหม่ขึ้นมานะคะ

00:31:21.427 --> 00:31:24.036
ต่อมา 2NF นะคะ

00:31:24.639 --> 00:31:32.732
ก็ปัญหาก็คือ ถ้ามีข้อมูลนะคะ ข้อมูลทุกตัวในตารางนั้นจะต้องขึ้นกับคีย์หลัก

00:31:33.636 --> 00:31:36.878
ของตารางตัวเดียวเท่านั้นนะคะ

00:31:39.242 --> 00:31:49.564
ข้อที่ 3 ถ้าคอลัมน์ไหนที่ไม่ใช่คีย์หลักนะคะ จะมาส่งผลกับคอลัมน์อื่นในตารางไม่ได้นะคะ

00:31:49.680 --> 00:31:53.701
เพราะฉะนั้น ไอ้ตารางข้อ 1 นี้คือแค่กระจายตาราง

00:31:54.000 --> 00:31:58.060
อันที่ 2 อันที่ 3 ถ้ามีปัญหาปึ๊บ เราต้องสร้างตารางใหม่

00:32:01.490 --> 00:32:02.241
นะคะ

00:32:05.571 --> 00:32:17.440
การบ้านเอาอย่างนี้ดีกว่านะคะ อาจารย์จะให้ทำ น่าจะส่งวันนี้ เอาแค่ข้อเดียวนะคะ ข้อเดียวพอ

00:32:17.440 --> 00:32:21.749
เพราะว่าจริง ๆ อยากให้ทำในห้อง เดี๋ยวสัปดาห์หน้าค่อยทำในห้องนะคะ

00:32:21.981 --> 00:32:26.875
แต่อันนี้จะให้ลองทำดูก่อนว่าที่เรียนไปวันนี้เข้าใจไหมนะคะ

00:32:27.153 --> 00:32:33.060
ถ้าทำเสร็จแล้วก็ค่อยเอามาส่งที่ตู้ส่งงานอาจารย์ เอาเฉพาะข้อนี้นะข้อเดียว

00:32:35.609 --> 00:32:40.543
ข้อเดียวพอ วันนี้ข้อเดียวพอนะคะ ส่งในเวลานี่แหละนะคะ

00:32:41.169 --> 00:32:45.426
ให้ลองทำดูว่าเข้าใจไหม ข้อนี้ทำ 1NF

00:32:45.890 --> 00:32:53.334
ทำ 1NF ทำอย่างไร ง่ายมาก ๆ เลยนะคะ นี่อาจารย์เว้นช่องว่างให้แล้ว เติมมานะคะ

00:32:54.470 --> 00:32:57.214
2NF คุณเห็นไหมว่า

00:32:58.442 --> 00:33:04.161
นี่ มันมีรหัสวิชานี่ ชื่อวิชานี่ ต้องทำอย่างไรกับมันนะคะ

00:33:05.691 --> 00:33:11.073
แยกมันออกมาสิ แยกอย่างไรนะคะ เอาข้อเดียวก่อนนะคะ แล้วลอง

00:33:11.444 --> 00:33:18.017
ส่งมาให้อาจารย์ดูเข้าใจมากน้อยขนาดไหนนะคะ จริง ๆ อยากให้เรียนในห้องมากกว่า

00:33:18.017 --> 00:33:22.390
แต่วันนี้ก็เอาประมาณนี้ก่อนแล้วกันนะคะ

00:33:22.761 --> 00:33:28.719
ให้ทุกคนหายดีกลับมา อาทิตย์หน้าค่อยเดินดูในห้องดีกว่านะคะ

00:33:29.901 --> 00:33:37.216
วันนี้ก็จะประมาณนี้นะคะ เดี๋ยวเวลาที่เหลือให้ทำข้อนี้แล้วมาส่งวันนี้เลยยิ่งดีนะคะ

00:33:37.587 --> 00:33:41.058
เวลาที่เหลือทำใส่กระดาษมาส่งอาจารย์แล้วกันนะ

00:33:42.518 --> 00:33:47.367
ก็ประมาณนี้ค่ะ เวลาที่เหลือทำให้เสร็จภายในวันนี้นะคะ ข้อเดียวเองนะคะ ข้อเดียว

00:33:49.128 --> 00:33:53.076
มีใครสงสัยไหมคะ ปุ๋ยสงสัยไหม

00:33:54.698 --> 00:33:56.011
ปุ๋ยเปิดไมค์ได้เหลือเปล่า

00:33:59.093 --> 00:34:03.004
(นักศึกษาหญิง) ไม่มีค่ะ อาจารย์ เดี๋ยวถ้าอย่างไร เดี๋ยวให้อุบลไปส่งหรืออย่างไรคะ

00:34:03.004 --> 00:34:05.031
เพราะว่าอุบลกลับหอแล้วน่ะค่ะ

00:34:05.031 --> 00:34:11.165
(อาจารย์เกวลี) อ๋อ ไม่ ๆ ส่วนมากอยู่ไหนกัน อยู่หอหรืออยู่ DSS

00:34:11.512 --> 00:34:15.211
(นักศึกษาหญิง) ตอนนี้เหลืออยู่ DSS ประมาณ 4 คนค่ะ

00:34:15.953 --> 00:34:19.239
(อาจารย์เกวลี) ก็รวม ๆ เท่าไรได้ก็เอามา

00:34:20.004 --> 00:34:20.972
(นักศึกษาหญิง) ค่ะ ๆ ๆ

00:34:20.972 --> 00:34:23.147
(อาจารย์เกวลี) ก็ให้เด็กทำ DSS นั่นแหละ

00:34:24.677 --> 00:34:25.893
โอเค Thank you.

00:34:28.350 --> 00:34:33.964
ค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ ที่ยังตั้งใจเรียนกันอยู่

00:34:33.964 --> 00:34:40.141
แล้วก็งานอย่าลืมส่งวันนี้นะคะ ใครอยู่ DSS ก็ทำให้เสร็จ แล้วก็ฝากเพื่อนมาส่ง รวมกันมาส่งก็ได้นะคะ

00:34:40.489 --> 00:34:46.491
ถ้าใครอยู่หอก็จะมาทำอยู่ DSS ก็ได้ หรือว่าทำเสร็จแล้วมาส่งที่โต๊ะอาจารย์ก็ได้นะคะ

00:34:49.063 --> 00:34:52.580
โอเคค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณล่ามด้วยนะคะ

00:34:53.915 --> 00:34:55.594
ค่ะ ขอบคุณค่ะ

00:35:16.196 --> 00:35:17.178
ปุ๋ยวันนี้ครบนะ

00:35:19.820 --> 00:35:20.964
ปุ๋ยไปแล้ว

00:35:23.305 --> 00:35:24.433
โอเค

