ประมาณนี้
นะคะ
วันนี้จะเป็นบทที่ 5
เกี่ยวกับ
กระบวนการ
การปรับบรรทัดฐาน
ขาภาษาอังกฤษก็จะเป็นนกอะไร Season
445555
มันก็จะมีความหมายแล้วก็จุดประสงค์ของการทำ
การปรับมาตรฐานนะคะ แล้วก็จะเกี่ยวกับ
121121212
ฟังก์ชั่นการขึ้นต่อการและกระบวนการในการทำนมคาร์เนชั่นด้วย
นะคะ
มี 3 ข้อวันนี้4545
45
โดยการประปาฐานนะคะ หรือว่านอนเมื่อไหร่แฟชั่นเนี่ยมันจะเป็นทฤษฎีที่
คนที่จะต้องออกแบบฐานข้อมูลเขาจะต้องมาแปลงข้อมูล
ข้อมูลอาจจะเป็นข้อมูลที่ซับซ้อน
นะคะ ให้มันง่าย
เข้าใจก็ง่าย
ใช้งานก็ง่ายแล้วก็ต้องเป็นระบบที่หลังจากออกแบบแล้วนำไปใช้งานจริงต้องเกิดปัญหาน้อยที่สุด
โดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานเนี่ยfgfgfมันจะมี 3 ระดับ
จริง ๆ เราก็จะเรียกสั้น ๆ ว่า
ระดับแรกนึกว่า 1nfll
12
2nf 3nf
ในระดับปริญญาตรีเนี่ย
ถึง 3ms ได้
ก็ถือว่าเก่งมากแล้ว
นะคะ
ถ้าเป็นระดับที่สูงขึ้นไปอีกก็จะถึงได้ถึง 5 nf เลย
นะคะ
อันนี้เป็น
แผนภาพกระบวนการทำงานนะคะ ก่อนที่เราจะมาทำกระบวนการปรับบรรทัดฐานได้เนี่ยมันก็ต้องวิเคราะห์ความต้องการของผู้ใช้งานก่อนว่าเขาต้อง
การระบุ
การฐานข้อมูลแบบไหนมีความต้องการใช้
ตารางกี่ตารางในฐานข้อมูลนะคะ
หลังจากนั้น
วาดรูป
แผนที่โรงเรียนอาทิตย์ที่แล้ว
นะคะว่าเป็นแผนภาพเพื่อให้เข้าใจว่า
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูล
ประมาณเหมือนกัน
รวมถึงลดปัญหาความไม่ถูกต้องของข้อมูล
ข้อมูลเนี่ยนอกจากที่จะไม่เกิดความสอดคล้องกันแล้วเนี่ย
11123123
วันจันทร์อาจจะเกิดจากสาเหตุคือ
1111112223333
ถ้าเหมือนที่ตัดกระจกทุกอย่างก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่
นักศึกษา
เก็บข้อมูลที่คณะด้วยเก็บที่มหาลัยด้วยเก็บที่สาขาด้วยเนี่ยบางทีถ้าวันนึง
คุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์
ที่บ้าน
ก็ต้องไปตามเปลี่ยนทุกที่เลย
นะคะ
ซึ่งเสียเวลาแล้วคราวนี้ก็จะเป็นที่เถียงกันว่าสรุปแล้วเบอร์ไหนถูกเบอร์ไหนผิด
โดยวัตถุประสงค์ของการปรับบรรทัดฐานก็คือข้อมูลจะถูกเก็บอยู่อย่างเดียว
ราคาเก็บไว้ที่เดียว
แต่สามารถเรียกใช้และใช้งานได้หลาย ๆ ที่พร้อมกันได้
แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูลหรือมีการลบหรือการเพิ่มข้อมูล
เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด
เราจะเก็บข้อมูลไว้ที่เดียว
[เสียงหัวเราะ]
แก้ไขก็ที่เดียว
เพราะฉะนั้นข้อมูลก็จะเป็นข้อมูลที่ถูกต้องแล้วก็
ปัจจุบันด้วย
แล้วก็
อย่างที่ใช้ในการเก็บข้อมูลที่เดียวเนี่ยมันก็จะลดความผิดพลาดที่เกิดจากการ
เปลี่ยนแปลงข้อมูลปรับปรุงข้อมูลนะคะ เหมือนที่บอกว่าคือ
ถ้าเปลี่ยนเบอร์โทรศัพท์หรือเปลี่ยนบ้านเลขที่นะคะ ก็เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้
พร้อมกันถ้าต้องการข้อมูลนะคะ
ความซ้ำซ้อนกันของข้อมูลมันอาจจะเกิดความผิดพลาดของการปรับปรุงข้อมูลนะคะ
แนวคิดที่สำคัญของการออกแบบฐานข้อมูล
การออกแบบข้อมูลที่ซ้ำซ้อนกันน้อยที่สุด
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลแล้วก็ลดปัญหาที่จะเกิดขึ้น
ถ้าสมมุติว่าข้อมูลมันซ้ำซ้อนกันมากเกินไปหรือ
ปริมาณข้อมูลมันเยอะเกินไป
อย่างเช่นตัวอย่างนะคะ ตารางด้านบนตารางสีเทาข้างบน
จะเป็นตัวอย่างการออกแบบ
ฐานข้อมูลที่ดีเดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่าในตารางข้างบนเนี่ยมันจะมีตารางของพนักงานแล้วก็ต่างสาขา
จะเห็นได้ว่า
ตาราง
พนักงาน
จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขา
ก้อยไม่อยู่
ถามว่าทำไมไม่เอา
ข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ
ทำไมต้องแยกออก
ถ้า
ศึกษาดูคนแรกนะคะ
พนักงานคนแรกรหัสสาขา b005
ก็คือสาขา
เชียงใหม่
ถ้าสมมุติว่าพนักงานคนที่ 1 ลาออก
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ
มีการลบข้อมูล
บุคคลนี้หรอ
ขีดฆ่าทิ้ง
ฆ่าทิ้ง
สิ่งไหนที่หายไปบ้าง
แน่นอนสาขาเชียงใหม่จะหายไปด้วย
ถ้าสมมุติเราอยู่ด้วยกัน
แต่ถ้าสมมุติพนักงานคนนี้ลาออกสาขาเชียงใหม่ยังอยู่ไหม
ยังอยู่
นะคะ
ซึ่งแตกต่างจากด้านล่าง
ด้านล่าง
เห็นไหมคำว่า
ถ้าสมมุติว่าจะลบทิ้งหมดเลย
กากบาททิ้ง
สาขาเชียงใหม่หายไปด้วย
แบบที่ไม่ดี
เหมือน
คนข้างล่าง
ออก
สาขาพิษณุโลก
ก็หายไปด้วย
แต่ถ้าเป็นตารางด้านบน
ถ้าคนนี้ลาออก
สาขายังอยู่ไหม
ยังอยู่เหมือนเดิม
อันนี้คือการออกแบบฐานข้อมูลที่ดีถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อการเราจะต้องแยกตารางออก
ตัวอย่าง
นะคะ ถ้าการออกแบบที่ดีเนี่ยเราจะลด
ปัญหาความซ้ำซ้อนของข้อมูล
ได้
เช่นตัวนี้อันนี้เป็นตารางที่ออกแบบที่ไม่ดีนะคะ
เห็นไหมคะว่ามันจะมี
รหัสสาขา
แล้วก็ที่อยู่
อยู่ในตารางเดียวกัน
ถ้าสมมุติว่าอาจารย์เพิ่ม
รหัสหลักสูตร
สามารถระบุรหัสวิชาได้หลายค่านั่นเอง
111222
แล้วรหัสหลักสูตร
ก็สามารถระบุค่ารหัสนักศึกษาได้หลายคนเช่นกัน
เหมือนตอนนี้หลักสูตรที่โรงเรียน
ศึกษาเกือบ 100 คน
รหัสหลักสูตรเดียวนะ
นะคะ
นี่คือความสัมพันธ์แบบสามารถระบุค่าได้มากกว่า 1 นั้นเองแบบไหนค่า
เพราะฉะนั้นวิธีการแก้ปัญหาของสิ่งที่เกิดขึ้นนะคะ เราเลยจะต้องมีการ
กระบวนการปรับบรรทัดฐานหรือว่ากระบวนการปรับปรุงโครงสร้างของฐานข้อมูลนะคะ ที่มีความซ้ำซ้อนกันให้อยู่ในรูปแบบที่เป็นบรรทัดฐานก็คือ
เป็นรูปแบบที่พร้อมที่จะเอาไปพัฒนาเป็นฐานข้อมูลได้
โดยหลักการนะคะ
ที่บอกมี 5 ระดับ
แต่ระดับ
ที่ 3 เนี่ยก็ถือว่าเพียงพอสำหรับการออกแบบฐานข้อมูลในปัจจุบันแล้ว
โดย
กำจัดกลุ่มของข้อมูลที่มีความซ้ำซ้อนกันออกไป
1213123
ขอแลกง่ายมาก ๆ
ง่ายที่สุดก็คือ 1 nf นะคะ
ต่อมาครั้งที่ 2 อยู่ 2 nf
จะกำจัด
การขึ้นต่อกันบางส่วนออก
อันสุดท้าย 3nf นะคะ
กำจัดการขึ้นต่อกันของแอตทริบิวต์ที่ไม่ใช่ครีม
เดี๋ยวจะมาดูทีละขั้น
มันจะต้องเป็นยังไงบ้าง
คนแรกง่ายที่สุดง่ายมาก ๆ นะคะ
ให้นักศึกษาจำกระบวนการหลัก ๆ จะมี 3 ข้อนะคะ
ขั้นตอนการแรกเลยดูก่อนว่า
คำซ้อนกันไหม
คำที่ 2 คือมันขึ้นต่อกันแค่บางส่วนหรือเปล่า
อันที่ 3 อันไหนไม่ใช่ครีม
แต่มันไปส่งผลกระทบกับข้อมูลอื่นได้หรือเปล่า
ดูอันดับที่ 1 ก่อน
วันที่ 1 ได้มาก
นะคะ ทุก ๆ
คอลัมน์ akashic Records
จะต้องเป็นค่า Single Value คือมีค่าเดียวเท่านั้น
จะใส่แบบนี้ไม่ได้
เพราะฉะนั้นข้อมูลทุกแถวจะต้องไม่มีค่าที่ซ้ำกัน
อย่างเนี้ย
นักศึกษาคนที่ 1
แน่นอนทั้ง 3
1 เทอมเนี่ยคุณลงทะเบียนประมาณ 6-7 วิชาใช่ไหมคะ
ข้อมูลมันก็จะเป็นแบบนี้
ถ้าเราไม่มีการทำน้ำทะเลสั้น
คราวนี้
ขั้นตอนที่ 1
เราจะ
ข้อมูลที่ซ้ำซ้อนกันออกวิธีการง่ายมากค่ะคือแจ้งข้อมูลออกเป็นอย่างละแถวที่ไม่ซ้ำกัน
ดูตัวอย่างนะคะ
111222333
วิธีการทำ 1 n f ง่ายมากค่ะ ถ้าข้อมูลตัวไหนเป็นกลุ่มนะคะ
คนที่ 1 วิชา
ลงทะเบียนเรียน 3 วิชาใช่ไหมคะ คนที่ 2 มี 2 วิชา
สามารถทำในรูปแบบ 1nf ก็คือ
เอามันจะตายออกมาค่ะ
ย้ายข้อมูลพรุ่งนี้ออกมา
กระต่ายออกใช่ไหมคะ กระจายออก
ง่ายมาก
ข้อมูลพรุ่งนี้ก็ทำซ้ำลงมาทำซ้ำลงมา
สำโรงมา
ทำซ้ำลงมา
ถามว่าอ้าวตาเขาทำไม
ทำไม 001 มันซ้ำกันได้ล่ะ
แต่รหัสวิชาเขาไม่ซ้ำกันเห็นไหมค่ะ
เด็ก ๆ เลยง่ายมากค่ะ
ข้อมูลทำไมเป็นก้อนอย่างนี้เรากระจายออกมาเป็นแยกออกมาเป็นบรรทัดบรรทัดเลยแค่นั้นเอง
อย่างน้อยในข้อสอบ
ต้องทำเน็ตให้ได้
มันง่ายที่สุดแล้ว
นะคะ
ไม่ใช่ตัวนี้นะคะ ก็กระจายออกมา
แล้วคราวนี้ถ้าเรากระจายข้อมูลเรียบร้อยแล้วนะคะ
ว่าจะมาดูว่าในตารางนี้ค่ะ
มันมีตาราง
ของพนักงานใช่ไหมคะ
เขาจะมีคีย์หลัก 1 ตัวละ
แปลว่า
มันจะมีตัวนี้ค่ะ
ตัวที่ 1 ตัวที่ 2 ที่มีคุณสมบัติ
เป็นคีย์หลักได้
เราต้องแยกมันออก
ควรการนะคะ
ดูก่อนว่า
ตารางวิธีนะคะสิ่งที่ขึ้นตรงกับคีย์หลักตัวนี้นะคะก็จะเป็นตัวที่ 1 ตัวที่ 2 ตัวที่ 3
สังเกตเราว่าที่รักมีตัวเดียว
ข้อมูลมีเยอะมาก
นะคะออกมาได้อันแรกเลย
รหัส
123456
โปรเจคนะคะ แล้วก็ชื่อโปรเจคนะคะ ใครเป็นผู้จัดการเงินเดือนเท่าไหร่
งบประมาณเท่าไหร่
คือมันจะเชื่อมโยงกับ
ข้อมูลที่เป็นคีย์หลักก็คือ Project Code วันนี้
ส่วนตัวนี้เป็นคีย์คู่แข่ง
2 ตัว
ฉันสามารถทำหน้าที่เป็นคีย์หลักให้กับอย่างตัวนี้นะคะ
มันจะเป็นคีย์หลักให้กับชื่อของพนักงาน
อย่างตัวนี้
ว่าจะเป็นคีย์หลักสำหรับชื่อแผนก
ถามว่า
มันขึ้นตรงกับโปรเจค Code ไหม
ไม่
นะคะ
ฉะนั้นการทำขั้นตอนต่อมานะคะ ส่ง EMS
ขั้นตอนที่ 1
เราจะต้องทำ 1 f มาเรียบร้อยแล้วซึ่งได้ทักมา
แล้วก็ต้องมา
บัตรของการขึ้นต่อกันบางส่วนออก
ก็คือการ
กำจัด
บิวตี้ไม่ขึ้น
คีย์หลักของตารางนั้นเอง
จะออกนะคะ
อย่างเช่นตัวนี้นะคะ
การขึ้นต่อกันบางส่วนจะเห็นได้ว่า
รหัสวิชากับชื่อวิชา
มันไม่ขึ้นตรงกับรหัสนักศึกษาใช่ไหมคะ นี้จำได้นะลูกเดิม
หารูปเดิม
วิธีกำจัดปัญหาเราก็ดึงสิ่งที่มันเป็นปัญหาสิ่งที่มันไม่ขึ้นตรงกับคีย์หลักตัวนั้น
ไปสร้างตารางใหม่
สร้างตารางเพิ่ม
เอาสิ่งที่เป็นปัญหาออกมาไปใส่ตารางใหม่กำหนดคีย์หลักใหม่
ในตารางเดิม
นะคะ
เราก็เอาคีย์หลักของตารางใหม่ไปใส่
แค่นั้นเอง
วิธีการก็คือ
รูปนี้นะคะ
สิ่งที่เป็นปัญหาที่จะยกตัวอย่างคือรหัสวิชา
ชิชา
เพราะรหัสวิชามันไม่ได้ขึ้นตรงกับรหัสนักศึกษา
สร้างตารางวิชาใหม่
เห็นไหมคะ
ตารางใหม่เราจะตัดชื่อวิชาออก
แต่ต้องเหลือ
รหัสวิชาไว้เพื่อให้เชื่อมโยงว่ารหัสวิชานี้มันชื่อวิชาอะไร
ตาราง 1
แค่นั้นเองนะคะ
ดีค่ะ
อันนี้เป็นตัวอย่างของการ
สารในรูปแบบของส่ง EMS
เดี๋ยววันนี้
จะให้ทำการบ้านเดี๋ยวค่อยย้อนกลับมาแล้วกันนะคะ
สอนภาษา
เดี๋ยวแก้แล้ว
ตาเมื่อกี้นะคะ
ขั้นตอนสุดท้ายนะคะ 3nf
นะคะ
โดยความสัมพันธ์นะคะ ก่อนที่จะทำเป็นสามเณรได้จะต้องทำ 2 อย่างนี้มาก่อน
หลักของการทำขั้นตอนที่ 3 คือ
ต้องเอาความสัมพันธ์ที่ไม่ใช่คีย์หลัก
ออกนะคะ
เช่นไม่ใช่คีย์หลักแต่ไม่มีผลกับ
คนอื่นไม่ได้นะคะ ไม่ได้
วิธีการแก้ปัญหาเช่นเดิมค่ะ สร้างตารางใหม่ขึ้นมา
แก้ปัญหานาน ๆ
อย่างเช่นในตัวอย่างนะคะ
รหัสพนักงานนะคะ
ชื่อสกุลรหัสแผนกชื่อแผนกเงินเดือน
จะเห็นได้ว่าในตารางนี้เนี่ยคีย์หลักก็คือรหัสพนักงาน
วันนี้รหัสแผนกกับชื่อแผนกติดมาด้วย
ซึ่งมันไม่ได้เกี่ยวกับรหัสพนักงานเลย
วิธีการแก้ปัญหาก็คือ
เอารหัสแผนก
ชื่อแผนก
ไปสร้างตารางใหม่
แต่ต้องยังคงรหัสแผนกไว้
ตารางเดิมนะคะ
เพื่อให้มันเชื่อมโยงได้ว่าไอ้แผนก a001 เนี่ยคือแผนกอะไร
อันนี้คือการแก้ปัญหาไม่ใช่คีย์หลักแต่ไปส่งผลกับคอลัมน์อื่น ๆ ในตารางนะคะ
เ***จริง ๆ แล้วอยากให้ลองทำในห้องมากกว่าแต่ด้วยสัปดาห์นี้มันมีข้อจำกัดเนาะก็ไม่เป็นไร
นี้เป็นตัวอย่างนะคะ
สรุปนะคะ วิธีการทำนกในชาติหรือว่าการปรับบรรทัดฐานนะคะ
ทุกๆที่ทุกๆคนร่ำในแต่ละแถว
จะต้องมีค่าของข้อมูลเพียงค่าเดียวเท่านั้น
เช่นเวลาเรากรอกเบอร์โทรศัพท์
เรามีโทรศัพท์ 3 เบอร์ก็จริงแต่เราจะกรอกได้แค่เบอร์เดียว
ถ้าอยากใส่เบอร์ที่ 2 ที่ 3 ก็ต้องเพิ่มข้อมูลแถวใหม่ขึ้นมา
ตอบมา
2 SF
ก็
ปัญหาคือถ้ามีข้อมูลนะคะ ขอข้อมูลทุกตัวในตารางนั้นจะต้องขึ้นกับคีย์หลัก
ของตาราง
ตัวเดียวเท่านั้น
นะคะ
ข้อที่ 3 ถ้า
คอลัมน์ไหนที่ไม่ใช่คีย์หลัก
ฟ้าส่งผลกับคอลัมน์อื่นในตารางไม่ได้
เพราะฉะนั้น
ไปตลาดข้อ 1 นี้คือแค่กระต่ายตาราง
อันที่ 2 อันที่ 3 ถ้ามีปัญหา
เราต้องสร้างตารางใหม่
การบ้านเอางี้ดีกว่า
อาจารย์จะให้ทำน่าจะส่งวันนี้
เอาแค่
ข้อเดียวนะคะข้อเดียวพอเพราะว่าจริงๆอยากให้ทำในห้องเดี๋ยวสัปดาห์หน้าค่อยทำในห้อง
จะให้ลองทำดูก่อนว่าที่เรียนไปวันนี้
เข้าใจไหม
ถ้าทำเสร็จแล้วก็ค่อยเอามาส่ง
ตู้ส่งงานอาจารย์เอาเฉพาะข้อดีนะข้อเดียว
คนเดียวพอวันนี้คนเดียวพอนะคะ ส่งในเวลานี้แหละ
ให้ลองทำดูว่าเข้าใจไหมข้อนี้
ทำอย่างเงี้ยทำยังไงได้มาก ๆ เลย
การเว้นช่องว่างให้แล้ว
เติมมา
2 มิติ
คุณเห็นไหมว่า
มันมีรหัสวิชาเนี่ย
ชาเนี่ย
ต้องทำยังไงกับมัน
แยกมันออกมาซิแยกยังไง
เอาข้าวเหนียวก่อน
นะคะ แล้วลอง
ส่งมาให้อาจารย์ดูก่อนว่า
เข้าใจมากน้อยขนาดไหน
จริง ๆ
อยากให้เรียนในห้องมากกว่าแต่วันนี้ก็เอา
มานี้ก่อนแล้วกัน
ให้ทุกคนหายดีกลับมาอาทิตย์หน้าค่อย
เดินดูในห้องดีกว่า
วันนี้ก็
ประมาณนี้นะคะ เดี๋ยวเวลาที่เหลือให้ทำข้อนี้แล้วมาส่ง
วันนี้เลยยิ่งดี
เวลาที่เหลือทำใส่กระดาษมาส่งอาจารย์
แล้วกันเนาะ
ประมาณนี้ค่ะเวลาที่เหลือทำให้เสร็จภายในวันนี้นะคะ
ข้อเดียวเองนะคะข้อเดียว
ใครสงสัยไหมคะ
อุ้ยสงสัยไหม
เปิดไม่ได้หรือเปล่า
ไม่ ๆ ส่วนมากอยู่ในการอยู่หอนี่แหละ
ตอนนี้เหลืออยู่ประมาณ
ใส่ได้ก็เอามา
1213453453
Ok Thank You
วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ พี่
ยังตั้งใจเรียนอยู่แล้วก็งานอย่าลืมส่งวันนี้นะคะ อยู่ดี ๆ ก็
ทำให้เสร็จ
แล้วก็ฝากเพื่อนมาส่งรวมกันมาส่งก็ได้นะคะ ถ้าใครอยู่หอก็จะมาทำอยู่ดี ๆ ก็ได้หรือว่าทำเสร็จแล้วมาส่งที่
อาการก็ได้
โอเคค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณล่างด้วยนะคะ
ค่าขอบคุณค่ะ
วันนี้ครบเนาะ
OK
ประมาณนี้
นะคะ
วันนี้จะเป็นบทที่ 5
เกี่ยวกับ
กระบวนการ
การปรับบรรทัดฐาน
ขาภาษาอังกฤษก็จะเป็นนกอะไร Season
มันก็จะมีความหมายแล้วก็จุดประสงค์ของการทำ
การปรับมาตรฐานนะคะ แล้วก็จะเกี่ยวกับ
ฟังก์ชั่นการขึ้นต่อการและกระบวนการในการทำนมคาร์เนชั่นด้วย
นะคะ
มี 3 ข้อวันนี้
โดยการประปาฐานนะคะ หรือว่านอนเมื่อไหร่แฟชั่นเนี่ยมันจะเป็นทฤษฎีที่
คนที่จะต้องออกแบบฐานข้อมูลเขาจะต้องมาแปลงข้อมูล
ข้อมูลอาจจะเป็นข้อมูลที่ซับซ้อน
นะคะ ให้มันง่าย
เข้าใจก็ง่าย
ใช้งานก็ง่ายแล้วก็ต้องเป็นระบบที่หลังจากออกแบบแล้วนำไปใช้งานจริงต้องเกิดปัญหาน้อยที่สุด
โดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานเนี่ยมันจะมี 3 ระดับ
จริง ๆ เราก็จะเรียกสั้น ๆ ว่า
ระดับแรกนึกว่า 1nf
2nf 3nf
ในระดับปริญญาตรีเนี่ย
ถึง 3ms ได้
ก็ถือว่าเก่งมากแล้ว
นะคะ
ถ้าเป็นระดับที่สูงขึ้นไปอีกก็จะถึงได้ถึง 5 nf เลย
นะคะ
อันนี้เป็น
แผนภาพกระบวนการทำงานนะคะ ก่อนที่เราจะมาทำกระบวนการปรับบรรทัดฐานได้เนี่ยมันก็ต้องวิเคราะห์ความต้องการของผู้ใช้งานก่อนว่าเขาต้อง
การระบุ
การฐานข้อมูลแบบไหนมีความต้องการใช้
ตารางกี่ตารางในฐานข้อมูลนะคะ
หลังจากนั้น
วาดรูป
แผนที่โรงเรียนอาทิตย์ที่แล้ว
นะคะ ว่าเป็นแผนภาพเพื่อให้เข้าใจว่า
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูล
มันตรงตามความต้องการหรือเปล่านะคะ
แต่รูปแบบของรูปที่เราวันอาทิตย์ที่แล้วเนี่ยมันจะยังเป็นรูปแบบที่
ยังไม่เป็นบรรทัดฐานหรือว่ายังไม่มีการจัดระเบียบความคิด
ข้อมูลที่ซ้ำซ้อนกันออกไปหรืออาจจะมีคีย์หลักที่มัน
ขอนแก่นนะคะ เราก็เลยจะต้องเอาข้อมูลจากที่เราว่าอาทิตย์ที่แล้วเนี่ย
เข้าสู่กระบวนการปรับพื้นฐานก่อน
ซึ่งอย่างที่บอก
เราทำแค่ถึง 3S เนี่ยก็
เก่งมากแล้ว
อย่างน้อย 2-3 นะคะ
ไอ้บอยคอร์ดกับสีเนี่ยไม่ทำก็ก็ก็รักไว้ได้นะคะ แต่อย่างน้อยต้องถึง
วัตถุประสงค์ของการปรับฐานนะคะ
แน่นอนลดความซ้ำซ้อนของข้อมูลก็คือถ้าข้อมูลมันซ้ำกันเนี่ยเราก็ต้องตัดออกไป
โครงสร้างเป็นสิ่งสำคัญมากเท่าไหร่เนื้อหาแล้วก็พื้นที่ในการเก็บข้อมูลอย่างมันก็จะเยอะ
ก็ทำให้สิ้นเปลือง
ประมาณเหมือนกัน
รวมถึงลดปัญหาความไม่ถูกต้องของข้อมูล
ข้อมูลเนี่ยนอกจากที่จะไม่เกิดความสอดคล้องกันแล้วเนี่ย
วันจันทร์อาจจะเกิดจากสาเหตุคือ
ถ้าเหมือนที่ตัดกระจกทุกอย่างก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่
นักศึกษา
เก็บข้อมูลที่คณะด้วยเก็บที่มหาลัยด้วยเก็บที่สาขาด้วยเนี่ยบางทีถ้าวันนึง
คุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์
ที่บ้าน
ก็ต้องไปตามเปลี่ยนทุกที่เลย
นะคะ
ซึ่งเสียเวลาแล้วคราวนี้ก็จะเป็นที่เถียงกันว่าสรุปแล้วเบอร์ไหนถูกเบอร์ไหนผิด
โดยวัตถุประสงค์ของการปรับบรรทัดฐานก็คือข้อมูลจะถูกเก็บอยู่อย่างเดียว
ราคาเก็บไว้ที่เดียว
แต่สามารถเรียกใช้และใช้งานได้หลาย ๆ ที่พร้อมกันได้
แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูลหรือมีการลบหรือการเพิ่มข้อมูล
เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด
เราจะเก็บข้อมูลไว้ที่เดียว
แก้ไขก็ที่เดียว
เพราะฉะนั้นข้อมูลก็จะเป็นข้อมูลที่ถูกต้องแล้วก็
ปัจจุบันด้วย
แล้วก็
อย่างที่ใช้ในการเก็บข้อมูลที่เดียวเนี่ยมันก็จะลดความผิดพลาดที่เกิดจากการ
เปลี่ยนแปลงข้อมูลปรับปรุงข้อมูลนะคะเหมือนที่บอกว่าคือ
ถ้าเปลี่ยนเบอร์โทรศัพท์หรือเปลี่ยนบ้านเลขที่นะคะก็เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้
พร้อมกันถ้าต้องการข้อมูลนะคะ
ความซ้ำซ้อนกันของข้อมูลมันอาจจะเกิดความผิดพลาดของการปรับปรุงข้อมูลนะคะ
แนวคิดที่สำคัญของการออกแบบฐานข้อมูลซ้ำซ้อนกันน้อยที่สุด
การออกแบบข้อมูลที่
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลแล้วก็ลดปัญหาที่จะเกิดขึ้น
ถ้าสมมุติว่าข้อมูลมันซ้ำซ้อนกันมากเกินไปหรือ
ปริมาณข้อมูลมันเยอะเกินไป
อย่างเช่นตัวอย่างนะคะ ตารางด้านบนตารางสีเทาข้างบน
จะเป็นตัวอย่างการออกแบบ
ฐานข้อมูลที่ดีเดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่าในตารางข้างบนเนี่ยมันจะมีตารางของพนักงานแล้วก็ต่างสาขา
จะเห็นได้ว่า
ตาราง
พนักงาน
จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขา
ก้อยไม่อยู่
ถามว่าทำไมไม่เอา
ข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ
ทำไมต้องแยกออก
ถ้า
ศึกษาดูคนแรกนะคะ
พนักงานคนแรกรหัสสาขา b005
ก็คือสาขา
เชียงใหม่
ถ้าสมมุติว่าพนักงานคนที่ 1 ลาออก
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ
มีการลบข้อมูล
บุคคลนี้หรอ
ขีดฆ่าทิ้ง
ฆ่าทิ้ง
สิ่งไหนที่หายไปบ้าง
แน่นอนสาขาเชียงใหม่จะหายไปด้วย
ถ้าสมมุติเราอยู่ด้วยกัน
แต่ถ้าสมมุติพนักงานคนนี้ลาออกสาขาเชียงใหม่ยังอยู่ไหม
ยังอยู่
นะคะ
ซึ่งแตกต่างจากด้านล่าง
ด้านล่าง
เห็นไหมคำว่า
ถ้าสมมุติว่าจะลบทิ้งหมดเลย
กากบาททิ้ง
สาขาเชียงใหม่หายไปด้วย
แบบที่ไม่ดี
เหมือน
คนข้างล่าง
ออก
สาขาพิษณุโลก
ก็หายไปด้วย
แต่ถ้าเป็นตารางด้านบน
ถ้าคนนี้ลาออก
สาขายังอยู่ไหม
ยังอยู่เหมือนเดิม
อันนี้คือการออกแบบฐานข้อมูลที่ดีถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อการเราจะต้องแยกตารางออก
ตัวอย่าง
นะคะ ถ้าการออกแบบที่ดีเนี่ยเราจะลด
ปัญหาความซ้ำซ้อนของข้อมูล
ได้
เช่นตัวนี้อันนี้เป็นตารางที่ออกแบบที่ไม่ดีนะคะ
เห็นไหมคะ ว่ามันจะมี
รหัสสาขา
แล้วก็ที่อยู่
อยู่ในตารางเดียวกัน
ถ้าสมมุติว่าอาจารย์เพิ่ม
เข้ามาใหม่อีก 1 คน
นะคะ
n e m
ถ้าต้องการเพิ่มพนักงานสาขา
เชียงใหม่ก็ต้องมากรอกข้อมูลตรงนี้อีก
เชียงใหม่ณโรงเรียนระโนด
แต่ถ้า
การออกแบบฐานข้อมูลที่ดีเนี่ย
เราแค่ใส่รหัสสาขา
ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้
เหมือนเวลาคุณไปธนาคารใช่ไหมคะ
คุณก็แค่ยื่นบัตรประชาชน
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณนงไป
หรืออาจจะเอาชิปการ์ดของคุณเนี่ยเสียบเข้าไปในเครื่องถามว่าตอนนี้เราได้กรอกข้อมูลไหม
ขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างที่คุณมีเขาจะดึงออกมาจากระบบให้เลยเราไม่ต้องมาเสียเวลาก่อน
เหมือนเมื่อก่อนเนี่ยต้องเขียนใส่กระดาษและเลขบัตรประชาชนด้านรายชื่ออะไรนามสกุลอะไรที่อยู่ที่ไหนเบอร์โทรศัพท์อะไรเดี๋ยวนี้ไม่ต้องเลยขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างเราสามารถดึงขึ้นมาได้อยู่แล้ว
อันนี้ก็เช่นเดียวกัน
ถ้าการออกแบบไม่ดีแต่เราต้องกรอกข้อมูลถูกต้องทุกช่องเลยเนี่ย
มันทำให้
อาจจะคนเดียวไม่เดือดร้อนค่ะ
ถ้าเป็นพนักงานใหม่เป็นเหมือนโรงงานน่ะค่ะ ที่รักพันคน
นั่งกรอก
เชียงใหม่เป็นพันครั้งเนี่ยเสียเวลามาก ๆ
อันนี้คือการออกแบบที่ไม่ดี
นะคะ
กลับอีกอย่างนึงถ้าสมมุติว่าเมื่อกี้อาจารย์เพิ่มพนักงานแล้ว
ถ้ามันอยากเพิ่มแค่สาขา
อย่าเพิ่งแค่สาขาซึ่งในตารางนี้
กีฬา
จำได้ไหมคะ ที่รักจะเป็นคีย์ที่ขีดเส้นใต้
ซึ่งอาจารย์อยากเพิ่มสาขาสมุทรปราการจะเพิ่มบี
100
สกลนคร
ละครนะคะ
ถามว่าเพิ่มได้ไหม อาจจะเป็นการตั้งสาขาแต่ยังไม่มีพนักงานหรอก
ถ้าจากตารางนี้
เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้
เรายังไม่มีรหัสพนักงานเพราะรหัสพนักงานเป็นคีย์หลัก
ครีม
คือคุณสมบัติมันคือเป็นค่าว่างไม่ได้
ก็ทำให้เราเพิ่มสาขาไม่ได้
ไม่มีพนักงาน
อันนี้ก็เป็น
ข้อผิดพลาดในการเพิ่มข้อมูลถ้าเราออกแบบ
ตารางแบบนี้นะคะ
ก็คือกัน
ปัญหาที่เกิดขึ้นจากการออกแบบตารางที่ดี
กลับ
หาโตมาเป็นปัญหาการลบข้อมูลที่อาจารย์บอก
ถ้าพนักงานคนนี้
ออก
สาขาเชียงใหม่หายไปด้วย
ลบไป
กรณีความผิดพลาดจากการเปลี่ยนแปลง
เหมือน b03 b03 นะคะ
เป็นกรุงเทพฯใช่ไหมคะ
แล้วคราวนี้ข้อมูลมันอยู่ในตารางเดียวกัน
ถ้านักศึกษาจะแก้สมมุติว่าเราย้ายจากกรุงเทพฯไปอยู่นนทบุรี
สมมุติมีพนักงาน 300 คน
คุณต้องแก้กรุงเทพฯ 30 ครั้ง
นนทบุรี
พนักงานมีคนส่งคนไม่ใช่ปัญหาค่ะ แต่ถ้าคุณเป็นโรงงานขนาดใหญ่
นั่งแก้ทีละ 30 คนไม่ใช่เรื่องสนุกแน่ ๆ
มันก็เป็นปัญหานะคะ เพราะฉะนั้น
เราควรแยกตารางพนักงานกับตารางสาขาออกจากกันนะคะ มีเป็นเหตุผล
นี่คือ
ขนาดข้อมูลขนาดเล็กนะคะ แล้วยังเห็นปัญหาขนาดนี้ถ้าสมมุติว่า
องค์กรขนาดใหญ่เป็นบริษัทเป็นโรงงานระดับโรงเรียนมีนักเรียนเป็น 2 302 3000 คนก็ได้นะคะ
มีปัญหาเยอะมากถ้าสมมุติว่าเราจัดการตารางไม่ดี
จากปัญหาที่เกิดขึ้นเมื่อกี้นะคะ อย่างที่บอกค่ะ เราจะแก้ปัญหาโดยการแยกตารางเป็น 2 ตารางแบบนี้นะคะ
ฟังก์ชั่นการขึ้นต่อกันนะคะ อันนี้เดี๋ยว
เป็นเกี่ยวกับตารางนึ่งนะคะ มีผลดีต่อราง 1 เราจะเรียกว่าเป็นฟังก์ชันการขึ้นต่อกัน
เดี๋ยวดูตัวอย่างเลยละกัน
อย่างเช่นทางนี้นะคะ
ดูจากรหัสพนักงานนะคะ
เขียนได้ว่ารหัสพนักงาน
จะส่งผลกับชื่อ
ตำแหน่ง
สัญลักษณ์ของการขึ้นต่อกันนะคะ อันไหนเป็นตัวหลัก
ชี้ไปที่ตัวรองราคาตามหัวลูกศรเลย
ดูทิศทางตามหัวลูกศรนะคะ อันไหนเป็นตัวหลักอันไหนเป็นตัวรอง
นะคะ
เช่น
ตัวนี้ถามว่าตำแหน่งบัญชีที่รหัสพนักงานได้ไหม นะคะ ถามว่า
ไม่ได้
เพราะการขึ้นต่อการจะต้องเป็นลักษณะหนึ่งต่อหนึ่งเท่านั้น
เป็นหนึ่งต่อกลุ่มไม่ได้
ชนิดของการขึ้นต่อกันนะคะ จะมีอยู่ 4 ชนิดนะคะ
ชนิดแรกเป็นการขึ้นต่อกันโดยสมบูรณ์
นะคะ
ซึ่งอาจจะเป็นเกี่ยวกับ
ตารางนะคะ จะมีคอลัมน์
1 คอลัมน์หรือมากกว่า 1 คอลัมน์มาประกอบกัน
โดยในคอลัมน์นะเนี่ย
ค่าที่ระบุ
ความพิเศษ
ของแถว ๆ ได้อย่างชัดเจน
aprilia จะเป็นค่าเฉพาะที่บอกเลยว่า
คอร์ดข้อมูลแถวนั้นเนี่ยมันมีลักษณะพิเศษเฉพาะตัวยังไง
โดยในทุกความสัมพันธ์เนี่ยจะต้องระบุค่าคีย์หลักไว้ด้วย
ครึ่งปีหลังนี้คือต้องเป็นค่าเอกลักษณ์คือไม่ซ้ำกันอยู่แล้ว
นะคะ
อย่างเช่นการขึ้นต่อกันอย่างสมบูรณ์อันแรกนะคะ
ก็คือคอลัมน์ที่ไม่ใช่คีย์หลักกีฬา
จำได้ใช่ไหมคะ คีย์หลักจะเป็น
คอลัมน์ที่มีขีดเส้นใต้
คอลัมน์ที่ไม่ใช่คีย์หลักจะขึ้นตรงต่อคอลัมน์ที่เป็นคีย์หลัก
หมอลำเดียวเท่านั้น
เช่นเลขบัตรประชาชน
จะขึ้น
จะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ
เพราะฉะนั้นการขึ้นตัวกันอย่างสมบูรณ์จะเป็นลักษณะแบบหนึ่งต่อหนึ่งนะคะ เลขบัตรประชาชน 1 เลข
ต้องเป็นของคนคนเดียวเท่านั้น
ไม่ใช่ว่าเลขประชาชนที่ใช้ 10 คนเป็นไปไม่ได้นะคะ
ตัวอย่างนะคะ
ตารางที่มี Column หลายตัว
นะคะ
ขึ้นอยู่กับคีย์หลักตัวเดียวเช่น
คนหนึ่งคนเนี่ย
ก็จะมีข้อมูลชื่อนามสกุลวันเดือนปีเกิดวันที่ทำบัตรใช่ไหมคะ
แต่ว่า
เขาจะต้องขึ้นตรงกับเลขบัตรประชาชนเดียวเท่านั้นถามว่าสามคนนี้
อาจจะเกิดวันเดียวกันก็ได้ค่ะ
เลขบัตรประชาชนเขาจะไม่เหมือนกัน
หรือเขาอาจจะมาทำบัตรวันเดียวกัน
หมายเลขบัตรประชาชนเขาจะไม่ซ้ำกัน
คืออะไร ซ้ำกันได้ทุกอย่างค่ะ ยกเว้นหมายเลขบัตรประชาชน
แต่บางตารางนะคะ
ก็อาจจะเป็นการรวมตัวกันของกีฬา
มากกว่า 1 ปีหลักนะคะ
มารวมกันเช่นนักศึกษา
วันนี้
เอกสารนี้
ลงทะเบียนวิชานี้
ได้เกรดอะไร
อันนี้ก็เป็นความสัมพันธ์ที่เกิดขึ้นได้เหมือนกันค่ะ ว่าบัตรนักศึกษาซ้ำกันได้ไหม
รหัสวิชาซ้ำกันได้ไหม
เหมือนชื่อวิชาการ
รหัสนึง
เชื่อใจคนอื่นก็รหัสวิชาอีกอันนึง
นี้จะไม่ซ้ำกันอยู่แล้วนะคะ
ต่อมาจะเป็นการขึ้นต่อกันบางส่วน
มันก็จะเป็นอาศัยความสัมพันธ์ที่เกิดขึ้นจาก
วิธีผสมนะคะ อาจจะเป็น
เส้นตรงจากตารางอื่นหรือส่งตารางมารวมกัน
อาจจะไม่ใช่คีย์หลักก็ได้แต่มันมีความหมายกับ
คอลัมน์นึง
เดี๋ยวจะยกตัวอย่างเลยดีกว่า
อย่างเช่น
นึกว่าตารางเทียบไซส์ให้ดูเมื่อกี้นะคะ ก็จะมีรหัสนักศึกษารหัสวิชามีเกรด
แล้วก็
มีการบอกด้วยว่ารหัสวิชานี้เป็นชื่อวิชาอะไร
นะคะ
มันจะเป็นการเกิดขึ้นเมื่อ
กีฬา
ประกอบกันด้วย
คอลัมน์หรือว่า Accident รวมกัน
โดยบางส่วนของคีย์หลักสามารถไประบุค่าอย่างอื่น
ที่ไม่ใช่คีย์หลักได้
นะคะ อย่างเช่นในความสัมพันธ์นี้คีย์หลักจะมี 2 ตัว
มีรหัสนักศึกษา
รหัสวิชา
ถามว่า
ถ้ามีแต่
รหัสนักศึกษา
นะคะ
รหัสวิชา
แล้วเราจะรู้ไหมว่าชื่อวิชาที่เราเรียนไปเนี่ย
วิชาอะไร
บางคนรู้รหัสวิชาแต่จำชื่อวิชาไม่ได้ก็มี
เพราะฉะนั้นรหัสวิชาเนี่ยมันเลยสามารถ
ไปส่งผลกับชื่อวิชาได้เหมือนกันเพราะเป็นตัวระบุว่า
ไปหลายวิชาเนี่ย
ประมาณนี้
นะคะ
วันนี้จะเป็นบทที่ 5
เกี่ยวกับ
กระบวนการ
การปรับบรรทัดฐาน
ขาภาษาอังกฤษก็จะเป็นนกอะไร Season
มันก็จะมีความหมายแล้วก็จุดประสงค์ของการทำ
การปรับมาตรฐานนะคะ แล้วก็จะเกี่ยวกับ
ฟังก์ชั่นการขึ้นต่อการและกระบวนการในการทำนมคาร์เนชั่นด้วย
นะคะ
มี 3 ข้อวันนี้
โดยการประปาฐานนะคะ หรือว่านอนเมื่อไหร่แฟชั่นเนี่ยมันจะเป็นทฤษฎีที่
คนที่จะต้องออกแบบฐานข้อมูลเขาจะต้องมาแปลงข้อมูล
ข้อมูลอาจจะเป็นข้อมูลที่ซับซ้อน
นะคะ ให้มันง่าย
เข้าใจก็ง่าย
ใช้งานก็ง่ายแล้วก็ต้องเป็นระบบที่หลังจากออกแบบแล้วนำไปใช้งานจริงต้องเกิดปัญหาน้อยที่สุด
โดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานเนี่ยมันจะมี 3 ระดับ
จริง ๆ เราก็จะเรียกสั้น ๆ ว่า
ระดับแรกนึกว่า 1nf
2nf 3nf
ในระดับปริญญาตรีเนี่ย
ถึง 3ms ได้
ก็ถือว่าเก่งมากแล้ว
1
นะคะ
ถ้าเป็นระดับที่สูงขึ้นไปอีกก็จะถึงได้ถึง 5 nf เลย
1
นะคะ
อันนี้เป็น
แ
การระบุ
การฐานข้อมูลแบบไหนมีความต้องการใช้
ตารางกี่ตารางในฐานข้อมูลนะคะ
หลังจากนั้น
วาดรูป
แผนที่โรงเรียนอาทิตย์ที่แล้ว
นะคะ ว่าเป็นแผนภาพเพื่อให้เข้าใจว่า
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูล
มันตรงตามความต้องการหรือเปล่านะคะ
แต่รูปแบบของรูปที่เรา
ยังไม่เป็นบรรทัดฐานหรือว่ายังไม่มีการจัดระเบียบความคิด
ข้อมูลที่ซ้ำซ้อนกันออกไปหรืออาจจะมีคีย์หลักที่มัน
ขอนแก่นนะคะ เราก็เลยจะต้องเอาข้อมูลจากที่เราว่าอาทิตย์ที่แล้วเนี่ย
เข้าสู่กระบวนการปรับพื้นฐานก่อน
ซึ่งอย่างที่บอก
เราทำแค่ถึง 3S เนี่ยก็
เก่งมากแล้ว
อย่างน้อย 2-3 นะคะ
ไอ้บอยคอร์ดกับสีเนี่ยไม่ทำก็ก็ก็รักไว้ได้นะคะ แต่อย่างน้อยต้องถึง
วัตถุประสงค์ของการปรับฐานนะคะ
แน่นอนลดความซ้ำซ้อนของข้อมูลก็คือถ้าข้อมูลมันซ้ำกันเนี่ยเราก็ต้องตัดออกไป
ก็ทำให้สิ้นเปลือง
ประมาณเหมือนกัน
รวมถึงลดปัญหาความไม่ถูกต้องของข้อมูล
ข้อมูลเนี่ยนอกจากที่จะไม่เกิดความสอดคล้องกันแล้วเนี่ย
วันจันทร์อาจจะเกิดจากสาเหตุคือ
ถ้าเหมือนที่ตัดกระจกทุกอย่างก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่
นักศึกษา
เก็บข้อมูลที่คณะด้วยเก็บที่มหาลัยด้วยเก็บที่สาขาด้วยเนี่ยบางทีถ้าวันนึง
คุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์
ที่บ้าน
ก็ต้องไปตามเปลี่ยนทุกที่เลย
นะคะ
ซึ่งเสียเวลาแล้วคราวนี้ก็จะเป็นที่เถียงกันว่าสรุปแล้วเบอร์ไหนถูกเบอร์ไหนผิด
โดยวัตถุประสงค์ของการปรับบรรทัดฐานก็คือข้อมูลจะถูกเก็บอยู่อย่างเดียว
ราคาเก็บไว้ที่เดียว
แต่สามารถเรียกใช้และใช้งานได้หลาย ๆ ที่พร้อมกันได้
แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูลหรือมีการลบหรือการเพิ่มข้อมูล
เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด
เราจะเก็บข้อมูลไว้ที่เดียว
แก้ไขก็ที่เดียว
เพราะฉะนั้นข้อมูลก็จะเป็นข้อมูลที่ถูกต้องแล้วก็
ปัจจุบันด้วย
แล้วก็
อย่างที่ใช้ในการเก็บข้อมูลที่เดียวเนี่ยมันก็จะลดความผิดพลาดที่เกิดจากการ
เปลี่ยนแปลงข้อมูลปรับปรุงข้อมูลนะคะ เหมือนที่บอกว่าคือ
ถ้าเปลี่ยนเบอร์โทรศัพท์หรือเปลี่ยนบ้านเลขที่นะคะ ก็เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้
พร้อมกันถ้าต้องการข้อมูลนะคะ
ความซ้ำซ้อน
แนวคิดที่สำคัญของการออกแบบฐานข้อมูล
การออกแบบข้อมูลที่ซ้ำซ้อนกันน้อยที่สุด
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลแล้วก็ลดปัญหาที่จะเกิดขึ้น
ถ้าสมมุติว่าข้อมูลมันซ้ำซ้อนกันมากเกินไปหรือ
ปริมาณข้อมูลมันเยอะเกินไป
อย่างเช่นตัวอย่างนะคะ ตารางด้านบนตารางสีเทาข้างบน
จะเป็นตัวอย่างการออกแบบ
ฐานข้อมูลที่ดีเดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่าในตารางข้างบนเนี่ยมันจะมีตารางของพนักงานแล้วก็ต่างสาขา
จะเห็นได้ว่า
ตาราง
2222222
พนักงาน
จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขา
ก้อยไม่อยู่
ถามว่าทำไมไม่เอา
ข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ
ทำไมต้องแยกออก
ถ้า
ศึกษาดูคนแรกนะคะ
พนักงานคนแรกรหัสสาขา b005
ก็คือสาขา
เชียงใหม่
ถ้าสมมุติว่าพนักงานคนที่ 1 ลาออก
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ
มีการลบข้อมูล
บุคคลนี้หรอ
ขีดฆ่าทิ้ง
ฆ่าทิ้ง
สิ่งไหนที่หายไปบ้าง
แน่นอนสาขาเชียงใหม่จะหายไปด้วย
ถ้าสมมุติเราอยู่ด้วยกัน
แต่ถ้าสมมุติพนักงานคนนี้ลาออกสาขาเชียงใหม่ยังอยู่ไหม
ยังอยู่
นะคะ
ซึ่งแตกต่างจากด้านล่าง
ด้านล่าง
เห็นไหมคำว่า
ถ้าสมมุติว่าจะลบทิ้งหมดเลย
กากบาททิ้ง
สาขาเชียงใหม่หายไปด้วย
แบบที่ไม่ดี
เหมือน
คนข้างล่าง
ออก
สาขาพิษณุโลก
ก็หายไปด้วย
แต่ถ้าเป็นตารางด้านบน
ถ้าคนนี้ลาออก
สาขายังอยู่ไหม
ยังอยู่เหมือนเดิม
อันนี้คือการออกแบบฐานข้อมูลที่ดีถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อการเราจะต้องแยกตารางออก
ตัวอย่าง
นะคะ ถ้าการออกแบบที่ดีเนี่ยเราจะลด
ปัญหาความซ้ำซ้อนของข้อมูล
ได้
เช่นตัวนี้อันนี้เป็นตารางที่ออกแบบที่ไม่ดีนะคะ
เห็นไหมคะ ว่ามันจะมี
รหัสสาขา
แล้วก็ที่อยู่
อยู่ในตารางเดียวกัน
ถ้าสมมุติว่าอาจารย์เพิ่ม
เข้ามาใหม่อีก 1 คน
นะคะ
n e m
ถ้าต้องการเพิ่มพนักงานสาขา
เชียงใหม่ก็ต้องมากรอกข้อมูลตรงนี้อีก
เชียงใหม่ณโรงเรียนระโนด
แต่ถ้า
การออกแบบฐานข้อมูลที่ดีเนี่ย
เราแค่ใส่รหัสสาขา
ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้
เหมือนเวลาคุณไปธนาคารใช่ไหมคะ
คุณก็แค่ยื่นบัตรประชาชน
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณนงไป
หรืออาจจะเอาชิปการ์ดของคุณเนี่ยเสียบเข้าไปในเครื่องถามว่าตอนนี้เราได้กรอกข้อมูลไหม
ขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างที่คุณมีเขาจะดึงออกมาจากระบบให้เลยเราไม่ต้องมาเสียเวลาก่อน
เหมือนเมื่อก่อนเนี่ยต้องเขียนใส่กระดาษและเลขบัตรประชาชนด้านรายชื่ออะไรนามสกุลอะไรที่อยู่ที่ไหนเบอร์โทรศัพท์อะไรเดี๋ยวนี้ไม่ต้องเลยขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างเราสามารถดึงขึ้นมาได้อยู่แล้ว
อันนี้ก็เช่นเดียวกัน
ถ้าการออกแบบไม่ดีแต่เราต้องกรอกข้อมูลถูกต้องทุกช่องเลยเนี่ย
มันทำให้
อาจจะคนเดียวไม่เดือดร้อนค่ะ
ถ้าเป็นพนักงานใหม่เป็นเหมือนโรงงานน่ะค่ะ ที่รักพันคน
นั่งกรอก
เชียงใหม่เป็นพันครั้งเนี่ยเสียเวลามาก ๆ
อันนี้คือการออกแบบที่ไม่ดี
นะคะ
กลับอีกอย่างนึงถ้าสมมุติว่าเมื่อกี้อาจารย์เพิ่มพนักงานแล้ว
ถ้ามันอยากเพิ่มแค่สาขา
อย่าเพิ่งแค่สาขาซึ่งในตารางนี้
กีฬา
จำได้ไหมคะ ที่รักจะเป็นคีย์ที่ขีดเส้นใต้
ซึ่งอาจารย์อยากเพิ่มสาขาสมุทรปราการจะเพิ่มบี
100
สกลนคร
ละครนะคะ
ถามว่าเพิ่มได้ไหม อาจจะเป็นการตั้งสาขาแต่ยังไม่มีพนักงานหรอก
ถ้าจากตารางนี้
เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้
เรายังไม่มีรหัสพนักงานเพราะรหัสพนักงานเป็นคีย์หลัก
ครีม
คือคุณสมบัติมันคือเป็นค่าว่างไม่ได้
ก็ทำให้เราเพิ่มสาขาไม่ได้
ไม่มีพนักงาน
อันนี้ก็เป็น
ข้อผิดพลาดในการเพิ่มข้อมูลถ้าเราออกแบบ
ตารางแบบนี้นะคะ
ก็คือกัน
ปัญหาที่เกิดขึ้นจากการออกแบบตารางที่ดี
กลับ
หาโตมาเป็นปัญหาการลบข้อมูลที่อาจารย์บอก
ถ้าพนักงานคนนี้
ออก
สาขาเชียงใหม่หายไปด้วย
ลบไป
กรณีความผิดพลาดจากการเปลี่ยนแปลง
เหมือน b03 b03 นะคะ
เป็นกรุงเทพฯใช่ไหมคะ
แล้วคราวนี้ข้อมูลมันอยู่ในตารางเดียวกัน
ถ้านักศึกษาจะแก้สมมุติว่าเราย้ายจากกรุงเทพฯไปอยู่นนทบุรี
สมมุติมีพนักงาน 300 คน
คุณต้องแก้กรุงเทพฯ 30 ครั้ง
นนทบุรี
พนักงานมีคนส่งคนไม่ใช่ปัญหาค่ะ แต่ถ้าคุณเป็นโรงงานขนาดใหญ่
นั่งแก้ทีละ 30 คนไม่ใช่เรื่องสนุกแน่ ๆ
มันก็เป็นปัญหานะคะ เพราะฉะนั้น
เราควรแยกตารางพนักงานกับตารางสาขาออกจากกันนะคะ มีเป็นเหตุผล
นี่คือ
ขนาดข้อมูลขนาดเล็กนะคะ แล้วยังเห็นปัญหาขนาดนี้ถ้าสมมุติว่า
องค์กรขนาดใหญ่เป็นบริษัทเป็นโรงงานระดับโรงเรียนมีนักเรียนเป็น 2 302 3000 คนก็ได้นะคะ
มีปัญหาเยอะมากถ้าสมมุติว่าเราจัดการตารางไม่ดี
จากปัญหาที่เกิดขึ้นเมื่อกี้นะคะ อย่างที่บอกค่ะ เราจะแก้ปัญหาโดยการแยกตารางเป็น 2 ตารางแบบนี้นะคะ
ฟังก์ชั่นการขึ้นต่อกันนะคะ อันนี้เดี๋ยว
เป็นเกี่ยวกับตารางนึ่งนะคะ มีผลดีต่อราง 1 เราจะเรียกว่าเป็นฟังก์ชันการขึ้นต่อกัน
เดี๋ยวดูตัวอย่างเลยละกัน
อย่างเช่นทางนี้นะคะ
ดูจากรหัสพนักงานนะคะ
เขียนได้ว่ารหัสพนักงาน
จะส่งผลกับชื่อ
ตำแหน่ง
สัญลักษณ์ของการขึ้นต่อกันนะคะ อันไหนเป็นตัวหลัก
ชี้ไปที่ตัวรองราคาตามหัวลูกศรเลย
ดูทิศทางตามหัวลูกศรนะคะ อันไหนเป็นตัวหลักอันไหนเป็นตัวรอง
นะคะ
เช่น
ตัวนี้ถามว่าตำแหน่งบัญชีที่รหัสพนักงานได้ไหม นะคะ ถามว่า
ไม่ได้
เพราะการขึ้นต่อการจะต้องเป็นลักษณะหนึ่งต่อหนึ่งเท่านั้น
เป็นหนึ่งต่อกลุ่มไม่ได้
ชนิดของการขึ้นต่อกันนะคะ จะมีอยู่ 4 ชนิดนะคะ
ชนิดแรกเป็นการขึ้นต่อกันโดยสมบูรณ์
นะคะ
ซึ่งอาจจะเป็นเกี่ยวกับ
ตารางนะคะ จะมีคอลัมน์
1 คอลัมน์หรือมากกว่า 1 คอลัมน์มาประกอบกัน
โดยในคอลัมน์นะเนี่ย
ค่าที่ระบุ
ความพิเศษ
ของแถว ๆ ได้อย่างชัดเจน
aprilia จะเป็นค่าเฉพาะที่บอกเลยว่า
คอร์ดข้อมูลแถวนั้นเนี่ยมันมีลักษณะพิเศษเฉพาะตัวยังไง
โดยในทุกความสัมพันธ์เนี่ยจะต้องระบุค่าคีย์หลักไว้ด้วย
ครึ่งปีหลังนี้คือต้องเป็นค่าเอกลักษณ์คือไม่ซ้ำกันอยู่แล้ว
นะคะ
อย่างเช่นการขึ้นต่อกันอย่างสมบูรณ์อันแรกนะคะ
ก็คือคอลัมน์ที่ไม่ใช่คีย์หลักกีฬา
จำได้ใช่ไหมคะ คีย์หลักจะเป็น
คอลัมน์ที่มีขีดเส้นใต้
คอลัมน์ที่ไม่ใช่คีย์หลักจะขึ้นตรงต่อคอลัมน์ที่เป็นคีย์หลัก
หมอลำเดียวเท่านั้น
เช่นเลขบัตรประชาชน
จะขึ้น
จะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ
เพราะฉะนั้นการขึ้นตัวกันอย่างสมบูรณ์จะเป็นลักษณะแบบหนึ่งต่อหนึ่งนะคะ เลขบัตรประชาชน 1 เลข
ต้องเป็นของคนคนเดียวเท่านั้น
ไม่ใช่ว่าเลขประชาชนที่ใช้ 10 คนเป็นไปไม่ได้นะคะ
ตัวอย่างนะคะ
ตารางที่มี Column หลายตัว
นะคะ
ขึ้นอยู่กับคีย์หลักตัวเดียวเช่น
คนหนึ่งคนเนี่ย
ก็จะมีข้อมูลชื่อนามสกุลวันเดือนปีเกิดวันที่ทำบัตรใช่ไหมคะ
แต่ว่า
เขาจะต้องขึ้นตรงกับเลขบัตรประชาชนเดียวเท่านั้นถามว่าสามคนนี้
อาจจะเกิดวันเดียวกันก็ได้ค่ะ
เลขบัตรประชาชนเขาจะไม่เหมือนกัน
หรือเขาอาจจะมาทำบัตรวันเดียวกัน
หมายเลขบัตรประชาชนเขาจะไม่ซ้ำกัน
คืออะไร ซ้ำกันได้ทุกอย่างค่ะ ยกเว้นหมายเลขบัตรประชาชน
แต่บางตารางนะคะ
ก็อาจจะเป็นการรวมตัวกันของกีฬา
มากกว่า 1 ปีหลักนะคะ
มารวมกันเช่นนักศึกษา
วันนี้
เอกสารนี้
ลงทะเบียนวิชานี้
ได้เกรดอะไร
อันนี้ก็เป็นความสัมพันธ์ที่เกิดขึ้นได้เหมือนกันค่ะ ว่าบัตรนักศึกษาซ้ำกันได้ไหม
รหัสวิชาซ้ำกันได้ไหม
เหมือนชื่อวิชาการ
รหัสนึง
เชื่อใจคนอื่นก็รหัสวิชาอีกอันนึง
นี้จะไม่ซ้ำกันอยู่แล้วนะคะ
ต่อมาจะเป็นการขึ้นต่อกันบางส่วน
มันก็จะเป็นอาศัยความสัมพันธ์ที่เกิดขึ้นจาก
วิธีผสมนะคะ อาจจะเป็น
เส้นตรงจากตารางอื่นหรือส่งตารางมารวมกัน
อาจจะไม่ใช่คีย์หลักก็ได้แต่มันมีความหมายกับ
คอลัมน์นึง
เดี๋ยวจะยกตัวอย่างเลยดีกว่า
อย่างเช่น
นึกว่าตารางเทียบไซส์ให้ดูเมื่อกี้นะคะ ก็จะมีรหัสนักศึกษารหัสวิชามีเกรด
แล้วก็
มีการบอกด้วยว่ารหัสวิชานี้เป็นชื่อวิชาอะไร
นะคะ
มันจะเป็นการเกิดขึ้นเมื่อ
กีฬา
ประกอบกันด้วย
คอลัมน์หรือว่า Accident รวมกัน
โดยบางส่วนของคีย์หลักสามารถไประบุค่าอย่างอื่น
ที่ไม่ใช่คีย์หลักได้
นะคะ อย่างเช่นในความสัมพันธ์นี้คีย์หลักจะมี 2 ตัว
มีรหัสนักศึกษา
รหัสวิชา
ถามว่า
ถ้ามีแต่
รหัสนักศึกษา
นะคะ
รหัสวิชา
แล้วเราจะรู้ไหมว่าชื่อวิชาที่เราเรียนไปเนี่ย
วิชาอะไร
บางคนรู้รหัสวิชาแต่จำชื่อวิชาไม่ได้ก็มี
เพราะฉะนั้นรหัสวิชาเนี่ยมันเลยสามารถ
ไปส่งผลกับชื่อวิชาได้เหมือนกันเพราะเป็นตัวระบุว่า
ไปหลายวิชาเนี่ย
ชื่อวิชาอะไร
ก็คือคีย์หลักในตารางนี้มี 2 อัน
แต่มีคีย์หลัก 1 ตัวเนี่ย
ไปมีผลกับ
แอตทริบิวต์ 1 ได้
นะคะ อันนี้คือความขึ้นต่อกันบางส่วน
อย่างเช่นตัวนี้ก็จะเป็นของจริงถ้าสูตรว่าอาจารย์ปัดรหัสนักศึกษาออก
มีแค่ 5 วิชามีเกรดมีการ
วิชาเขียนโปรแกรมแล้วถาม
รู้ไหมคะ ว่าเกรดเอที่ของใคร
นะคะ หรือว่า
อย่าลบไปเที่ยวก่อนนะ
หรือว่า
การลบรหัสวิชาออก
เหลือแต่นักศึกษาเหลือเกรด
ชื่อวิชาแล้วถามว่า
รหัสวิชาอะไรล่ะที่เราได้เกรด A
เราก็ไม่ทราบอีกเหมือนกันนะคะ อันนี้ก็คือ
การขึ้นต่อกันบางส่วน
เป็นการขึ้นต่อกันแบบส่งต่อ
ก็จะเป็นความสัมพันธ์ที่เกิดขึ้นก็ต่อเมื่อมีแอตทริบิวต์หรือว่าคนอื่นที่ไม่ใช่ครีม
แต่ไปสามารถ
ขึ้น
สามารถระบุค่าของแอตทริบิวต์อื่นใน Accord ได้
ซึ่งเป็นการออกแบบที่ไม่เหมาะสม
เพราะส่วนใหญ่แล้วในตารางเนี่ย
ถ้าเราจะระบุค่าอื่นให้กับ
คอลัมน์อื่นได้ควรจะต้องเป็นคีย์หลักเท่านั้น
ดูตัวอย่างนะคะ เช่นตารางเนี้ย
เขาบอกว่าสิ่งที่เกิดขึ้นคือแอตทริบิวต์คือคอลัมน์ที่ไม่ใช่คีย์หลักหรือ Primary Key นะคะ ก็คือไม่ใช่คอลัมน์ที่มีเส้นขีดมันไประบุค่าอื่น ๆ ในตารางได้เช่น
ตารางนี้ก็คือเลขประจำตัว
ตัวเลขประจำตัวเนี่ย
ไปมีผลกับชื่อนามสกุลที่อยู่ตำแหน่งใช่ไหมคะ
เขาเนี่ย
รถประจำตำแหน่ง
มันไม่ถูกระบุโดยเลขประจำตัว
มันถูกระบุโดยรหัสตำแหน่ง
เหมือนถ้าเป็นผู้จัดการเนี่ย
แผนที่ผู้จัดการนะคะ จะรู้เลยว่ารถประจำตำแหน่งคืออะไร
แต่เขาไปเช็คที่รหัสตำแหน่ง
แผนที่จะเช็คกับเลขประจําตัว
การออกแบบที่ไม่ดี
เพราะฉะนั้นถ้าสมมุติว่าจะให้รถประจำตำแหน่งวิธีการแก้ปัญหาก็คือ
เราควรจะแยก
ตารางนี้
ออกไปสร้างตารางใหม่เลยค่ะ
มันไม่ควรจะมาขึ้นกับตาราง
ขี้มีกี่หลัก
แต่ไม่สามารถระบุค่าข้อมูลตรงนี้ได้เนี่ยมันไม่ควรทำ
กลับต่อมาเป็นการขึ้นต่อการเชิงกลุ่ม
นะคะ
น่าจะเป็นความสัมพันธ์ระหว่างคอลัมน์ Matrix
ขึ้นต่อกันแบบสมบูรณ์นะคะ ก็ไปสามารถระบุค่าอื่นได้
โดยที่
อย่างเช่นตัวอย่าง
ในตารางนี้นะคะ จะมีรหัสหลักสูตร
สามารถระบุรหัสวิชาได้หลายวิชาเช่น
จริง ๆ ในสถานศึกษาจะเห็นได้ว่ามีเลข
122
รหัสนักศึกษา
B12 คืออะไร 12 ก็คือหลักสูตรที่เราเรียนอยู่
ซึ่งในหลักสูตรที่โรงเรียนเนี่ยมันมีวิชา
มากกว่า 20 วิชา
นะคะ
ก็คือรหัสหลักสูตรเนี่ยมันสามารถระบุรหัสวิชาได้หลากหลายรหัสวิชามาก ๆ
ก็คือการขึ้นต่อกันแบบ
มีค่ามากกว่า 1
รหัสหลักสูตร
สามารถระบุรหัสวิชาได้หลายค่านั่นเอง
แล้วรหัสหลักสูตร
ก็สามารถระบุค่ารหัสนักศึกษาได้หลายคนเช่นกัน
เหมือนตอนนี้หลักสูตรที่โรงเรียน
ศึกษาเกือบ 100 คน
รหัสหลักสูตรเดียวนะ
นะคะ
นี่คือความสัมพันธ์แบบสามารถระบุค่าได้มากกว่า 1 นั้นเองแบบไหนค่า
เพราะฉะนั้นวิธีการแก้ปัญหาของสิ่งที่เกิดขึ้นนะคะ เราเลยจะต้องมีการ
กระบวนการปรับบรรทัดฐานหรือว่ากระบวนการปรับปรุงโครงสร้างของฐานข้อมูลนะคะ ที่มีความซ้ำซ้อนกันให้อยู่ในรูปแบบที่เป็นบรรทัดฐานก็คือ
เป็นรูปแบบที่พร้อมที่จะเอาไปพัฒนาเป็นฐานข้อมูลได้
โดยหลักการนะคะ
ที่บอกมี 5 ระดับ
แต่ระดับ
ที่ 3 เนี่ยก็ถือว่าเพียงพอสำหรับการออกแบบฐานข้อมูลในปัจจุบันแล้ว
โดย
ที่รักของการทำงานนะคะ ท่านที่ 1 นะคะ
กำจัดกลุ่มของข้อมูลที่มีความซ้ำซ้อนกันออกไป
ขอแลกง่ายมาก ๆ
ง่ายที่สุดก็คือ 1 nf นะคะ
ต่อมาครั้งที่ 2 อยู่ 2 nf
จะกำจัด
การขึ้นต่อกันบางส่วนออก
อันสุดท้าย 3nf นะคะ
กำจัดการขึ้นต่อกันของแอตทริบิวต์ที่ไม่ใช่ครีม
เดี๋ยวจะมาดูทีละขั้น
มันจะต้องเป็นยังไงบ้าง
คนแรกง่ายที่สุดง่ายมาก ๆ นะคะ
ให้นักศึกษาจำกระบวนการหลัก ๆ จะมี 3 ข้อนะคะ
ขั้นตอนการแรกเลยดูก่อนว่า
คำซ้อนกันไหม
คำที่ 2 คือมันขึ้นต่อกันแค่บางส่วนหรือเปล่า
อันที่ 3 อันไหนไม่ใช่ครีม
แต่มันไปส่งผลกระทบกับข้อมูลอื่นได้หรือเปล่า
ดูอันดับที่ 1 ก่อน
วันที่ 1 ได้มาก
นะคะ ทุก ๆ
คอลัมน์ akashic Records
จะต้องเป็นค่า Single Value คือมีค่าเดียวเท่านั้น
จะใส่แบบนี้ไม่ได้
เพราะฉะนั้นข้อมูลทุกแถวจะต้องไม่มีค่าที่ซ้ำกัน
อย่างเนี้ย
นักศึกษาคนที่ 1
แน่นอนทั้ง 3
1 เทอมเนี่ยคุณลงทะเบียนประมาณ 6-7 วิชาใช่ไหมคะ
ข้อมูลมันก็จะเป็นแบบนี้
ถ้าเราไม่มีการทำน้ำทะเลสั้น
คราวนี้
ขั้นตอนที่ 1
เราจะ
ข้อมูลที่ซ้ำซ้อนกันออกวิธีการง่ายมากค่ะ คือแจ้งข้อมูลออกเป็นอย่างละแถวที่ไม่ซ้ำกัน
ดูตัวอย่างนะคะ
วิธีการทำ 1 n f ง่ายมากค่ะ ถ้าข้อมูลตัวไหนเป็นกลุ่มนะคะ
คนที่ 1 วิชา
ลงทะเบียนเรียน 3 วิชาใช่ไหมคะ คนที่ 2 มี 2 วิชา
สามารถทำในรูปแบบ 1nf ก็คือ
เอามันจะตายออกมาค่ะ
ย้ายข้อมูลพรุ่งนี้ออกมา
กระต่ายออกใช่ไหมคะ กระจายออก
ง่ายมาก
ข้อมูลพรุ่งนี้ก็ทำซ้ำลงมาทำซ้ำลงมา
สำโรงมา
ทำซ้ำลงมา
ถามว่าอ้าวตาเขาทำไม
ทำไม 001 มันซ้ำกันได้ล่ะ
แต่รหัสวิชาเขาไม่ซ้ำกันเห็นไหมค่ะ
เด็ก ๆ เลยง่ายมากค่ะ
ข้อมูลทำไมเป็นก้อนอย่างนี้เรากระจายออกมาเป็นแยกออกมาเป็นบรรทัดบรรทัดเลยแค่นั้นเอง
อย่างน้อยในข้อสอบ
ต้องทำเน็ตให้ได้
มันง่ายที่สุดแล้ว
นะคะ
ไม่ใช่ตัวนี้นะคะ ก็กระจายออกมา
แล้วคราวนี้ถ้าเรากระจายข้อมูลเรียบร้อยแล้วนะคะ
ว่าจะมาดูว่าในตารางนี้ค่ะ
มันมีตาราง
ของพนักงานใช่ไหมคะ
เขาจะมีคีย์หลัก 1 ตัวละ
แปลว่า
มันจะมีตัวนี้ค่ะ
ตัวที่ 1 ตัวที่ 2 ที่มีคุณสมบัติ
เป็นคีย์หลักได้
เราต้องแยกมันออก
ควรการนะคะ
ดูก่อนว่า
ตารางวิธีนะคะ สิ่งที่ขึ้นตรงกับคีย์หลักตัวนี้นะคะ ก็จะเป็นตัวที่ 1 ตัวที่ 2 ตัวที่ 3
สังเกตเราว่าที่รักมีตัวเดียว
ข้อมูลมีเยอะมาก
นะคะ ออกมาได้อันแรกเลย
รหัส
โปรเจคนะคะ แล้วก็ชื่อโปรเจคนะคะ ใครเป็นผู้จัดการเงินเดือนเท่าไหร่
งบประมาณเท่าไหร่
คือมันจะเชื่อมโยงกับ
ข้อมูลที่เป็นคีย์หลักก็คือ Project Code วันนี้
ส่วนตัวนี้เป็นคีย์คู่แข่ง
2 ตัว
ฉันสามารถทำหน้าที่เป็นคีย์หลักให้กับอย่างตัวนี้นะคะ
มันจะเป็นคีย์หลักให้กับชื่อของพนักงาน
อย่างตัวนี้
ว่าจะเป็นคีย์หลักสำหรับชื่อแผนก
ถามว่า
มันขึ้นตรงกับโปรเจค Code ไหม
ไม่
นะคะ
ฉะนั้นการทำขั้นตอนต่อมานะคะ ส่ง EMS
ขั้นตอนที่ 1
เราจะต้องทำ 1 f มาเรียบร้อยแล้วซึ่งได้ทักมา
แล้วก็ต้องมา
บัตรของการขึ้นต่อกันบางส่วนออก
ก็คือการ
กำจัด
บิวตี้ไม่ขึ้น
คีย์หลักของตารางนั้นเอง
จะออกนะคะ
อย่างเช่นตัวนี้นะคะ
การขึ้นต่อกันบางส่วนจะเห็นได้ว่า
รหัสวิชากับชื่อวิชา
มันไม่ขึ้นตรงกับรหัสนักศึกษาใช่ไหมคะ นี้จำได้นะลูกเดิม
หารูปเดิม
วิธีกำจัดปัญหาเราก็ดึงสิ่งที่มันเป็นปัญหาสิ่งที่มันไม่ขึ้นตรงกับคีย์หลักตัวนั้น
ไปสร้างตารางใหม่
สร้างตารางเพิ่ม
เอาสิ่งที่เป็นปัญหาออกมาไปใส่ตารางใหม่กำหนดคีย์หลักใหม่
ในตารางเดิม
นะคะ
เราก็เอาคีย์หลักของตารางใหม่ไปใส่
แค่นั้นเอง
วิธีการก็คือ
รูปนี้นะคะ
สิ่งที่เป็นปัญหาที่จะยกตัวอย่างคือรหัสวิชา
ชิชา
เพราะรหัสวิชามันไม่ได้ขึ้นตรงกับรหัสนักศึกษา
เพราะฉะนั้นไอ้สองตัวนี้คือสิ่งที่เป็นปัญหา
วิธีการแก้ปัญหาคือเราสร้างตารางผลการเรียนใหม่
สร้างตารางวิชาใหม่
เห็นไหมคะ
ตารางใหม่เราจะตัดชื่อวิชาออก
แต่ต้องเหลือ
รหัสวิชาไว้เพื่อให้เชื่อมโยงว่ารหัสวิชานี้มันชื่อวิชาอะไร
ตาราง 1
แค่นั้นเองนะคะ
อันนี้เป็นตัวอย่างของการ
สารในรูปแบบของส่ง EMS
เดี๋ยววันนี้
จะให้ทำการบ้านเดี๋ยวค่อยย้อนกลับมาแล้วกันนะคะ
สอนภาษา
เดี๋ยวแก้แล้ว
ตาเมื่อกี้นะคะ
ขั้นตอนสุดท้ายนะคะ 3nf
นะคะ
โดยความสัมพันธ์นะคะ ก่อนที่จะทำเป็นสามเณรได้จะต้องทำ 2 อย่างนี้มาก่อน
หลักของการทำขั้นตอนที่ 3 คือ
ต้องเอาความสัมพันธ์ที่ไม่ใช่คีย์หลัก
ออกนะคะ
เช่นไม่ใช่คีย์หลักแต่ไม่มีผลกับ
คนอื่นไม่ได้นะคะ ไม่ได้
วิธีการแก้ปัญหาเช่นเดิมค่ะ สร้างตารางใหม่ขึ้นมา
แก้ปัญหานาน ๆ
อย่างเช่นในตัวอย่างนะคะ
รหัสพนักงานนะคะ
ชื่อสกุลรหัสแผนกชื่อแผนกเงินเดือน
จะเห็นได้ว่าในตารางนี้เนี่ยคีย์หลักก็คือรหัสพนักงาน
วันนี้รหัสแผนกกับชื่อแผนกติดมาด้วย
ซึ่งมันไม่ได้เกี่ยวกับรหัสพนักงานเลย
วิธีการแก้ปัญหาก็คือ
เอารหัสแผนก
ชื่อแผนก
ไปสร้างตารางใหม่
แต่ต้องยังคงรหัสแผนกไว้
ตารางเดิมนะคะ
เพื่อให้มันเชื่อมโยงได้ว่าไอ้แผนก a001 เนี่ยคือแผนกอะไร
อันนี้คือการแก้ปัญหาไม่ใช่คีย์หลักแต่ไปส่งผลกับคอลัมน์อื่น ๆ ในตารางนะคะ
เ***จริง ๆ แล้วอยากให้ลองทำในห้องมากกว่าแต่ด้วยสัปดาห์นี้มันมีข้อจำกัดเนาะก็ไม่เป็นไร
นี้เป็นตัวอย่างนะคะ
สรุปนะคะ วิธีการทำนกในชาติหรือว่าการปรับบรรทัดฐานนะคะ
ทุก ๆ ที่ทุก ๆ คนร่ำในแต่ละแถว
จะต้องมีค่าของข้อมูลเพียงค่าเดียวเท่านั้น
เช่นเวลาเรากรอกเบอร์โทรศัพท์
เรามีโทรศัพท์ 3 เบอร์ก็จริงแต่เราจะกรอกได้แค่เบอร์เดียว
ถ้าอยากใส่เบอร์ที่ 2 ที่ 3 ก็ต้องเพิ่มข้อมูลแถวใหม่ขึ้นมา
ตอบมา
2 SF
ก็
ปัญหาคือถ้ามีข้อมูลนะคะ ขอข้อมูลทุกตัวในตารางนั้นจะต้องขึ้นกับคีย์หลัก
ของตาราง
ตัวเดียวเท่านั้น
นะคะ
ข้อที่ 3 ถ้า
คอลัมน์ไหนที่ไม่ใช่คีย์หลัก
ฟ้าส่งผลกับคอลัมน์อื่นในตารางไม่ได้
เพราะฉะนั้น
ไปตลาดข้อ 1 นี้คือแค่กระต่ายตาราง
อันที่ 2 อันที่ 3 ถ้ามีปัญหา
เราต้องสร้างตารางใหม่
การบ้านเอางี้ดีกว่า
อาจารย์จะให้ทำน่าจะส่งวันนี้
เอาแค่
ข้อเดียวนะคะ ข้อเดียวพอเพราะว่าจริง ๆ อยากให้ทำในห้องเดี๋ยวสัปดาห์หน้าค่อยทำในห้อง
จะให้ลองทำดูก่อนว่าที่เรียนไปวันนี้
เข้าใจไหม
ถ้าทำเสร็จแล้วก็ค่อยเอามาส่ง
ตู้ส่งงานอาจารย์เอาเฉพาะข้อดีนะข้อเดียว
คนเดียวพอวันนี้คนเดียวพอนะคะ ส่งในเวลานี้แหละ
ให้ลองทำดูว่าเข้าใจไหมข้อนี้
ทำอย่างเงี้ยทำยังไงได้มาก ๆ เลย
การเว้นช่องว่างให้แล้ว
เติมมา
2 มิติ
คุณเห็นไหมว่า
มันมีรหัสวิชาเนี่ย
ชาเนี่ย
ต้องทำยังไงกับมัน
แยกมันออกมาซิแยกยังไง
เอาข้าวเหนียวก่อน
นะคะ แล้วลอง
ส่งมาให้อาจารย์ดูก่อนว่า
เข้าใจมากน้อยขนาดไหน
จริง ๆ
อยากให้เรียนในห้องมากกว่าแต่วันนี้ก็เอา
มานี้ก่อนแล้วกัน
ให้ทุกคนหายดีกลับมาอาทิตย์หน้าค่อย
เดินดูในห้องดีกว่า
วันนี้ก็
ประมาณนี้นะคะ เดี๋ยวเวลาที่เหลือให้ทำข้อนี้แล้วมาส่ง
วันนี้เลยยิ่งดี
เวลาที่เหลือทำใส่กระดาษมาส่งอาจารย์
แล้วกันเนาะ
ประมาณนี้ค่ะ เวลาที่เหลือทำให้เสร็จภายในวันนี้นะคะ
ข้อเดียวเองนะคะ ข้อเดียว
ใครสงสัยไหมคะ
อุ้ยสงสัยไหม
เปิดไม่ได้หรือเปล่า
ไม่มีค่ะ อาจารย์เดี๋ยวถ้ายังไงเดี๋ยวให้อุบลไปส่งหรือยังไงคะเพราะว่าบนขึ้น
ไม่ ๆ ส่วนมากอยู่ในการอยู่หอนี่แหละ
ตอนนี้เหลืออยู่ประมาณ
ใส่ได้ก็เอามา
Ok Thank You
วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ พี่
ยังตั้งใจเรียนอยู่แล้วก็งานอย่าลืมส่งวันนี้นะคะ อยู่ดี ๆ ก็
ทำให้เสร็จ
แล้วก็ฝากเพื่อนมาส่งรวมกันมาส่งก็ได้นะคะ ถ้าใครอยู่หอก็จะมาทำอยู่ดี ๆ ก็ได้หรือว่าทำเสร็จแล้วมาส่งที่
อาการก็ได้
โอเคค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณล่างด้วยนะคะ
ค่าขอบคุณค่ะ
วันนี้ครบเนาะ
OK
ประมาณนี้
นะคะ
วันนี้จะเป็นบทที่ 5
เกี่ยวกับ
กระบวนการ
การปรับบรรทัดฐาน
ขาภาษาอังกฤษก็จะเป็นนกอะไร Season
มันก็จะมีความหมายแล้วก็จุดประสงค์ของการทำ
การปรับมาตรฐานนะคะ แล้วก็จะเกี่ยวกับ
ฟังก์ชั่นการขึ้นต่อการและกระบวนการในการทำนมคาร์เนชั่นด้วย
นะคะ
มี 3 ข้อวันนี้
โดยการประปาฐานนะคะ หรือว่านอนเมื่อไหร่แฟชั่นเนี่ยมันจะเป็นทฤษฎีที่
คนที่จะต้องออกแบบฐานข้อมูลเขาจะต้องมาแปลงข้อมูล
ข้อมูลอาจจะเป็นข้อมูลที่ซับซ้อน
นะคะ ให้มันง่าย
เข้าใจก็ง่าย
ใช้งานก็ง่ายแล้วก็ต้องเป็นระบบที่หลังจากออกแบบแล้วนำไปใช้งานจริงต้องเกิดปัญหาน้อยที่สุด
โดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานเนี่ยมันจะมี 3 ระดับ
จริง ๆ เราก็จะเรียกสั้น ๆ ว่า
ระดับแรกนึกว่า 1nf
2nf 3nf
ในระดับปริญญาตรีเนี่ย
ถึง 3ms ได้
ก็ถือว่าเก่งมากแล้ว
นะคะ
ถ้าเป็นระดับที่สูงขึ้นไปอีกก็จะถึงได้ถึง 5 nf เลย
นะคะ
อันนี้เป็น
แผนภาพกระบวนการทำงานนะคะ ก่อนที่เราจะมาทำกระบวนการปรับบรรทัดฐานได้เนี่ยมันก็ต้องวิเคราะห์ความต้องการของผู้ใช้งานก่อนว่าเขาต้อง
การระบุ
การฐานข้อมูลแบบไหนมีความต้องการใช้
ตารางกี่ตารางในฐานข้อมูลนะคะ
หลังจากนั้น
วาดรูป
แผนที่โรงเรียนอาทิตย์ที่แล้ว
นะคะ ว่าเป็นแผนภาพเพื่อให้เข้าใจว่า
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูล
มันตรงตามความต้องการหรือเปล่านะคะ
แต่รูปแบบของรูปที่เราวันอาทิตย์ที่แล้วเนี่ยมันจะยังเป็นรูปแบบที่
ยังไม่เป็นบรรทัดฐานหรือว่ายังไม่มีการจัดระเบียบความคิด
ข้อมูลที่ซ้ำซ้อนกันออกไปหรืออาจจะมีคีย์หลักที่มัน
ขอนแก่นนะคะ เราก็เลยจะต้องเอาข้อมูลจากที่เราว่าอาทิตย์ที่แล้วเนี่ย
เข้าสู่กระบวนการปรับพื้นฐานก่อน
ซึ่งอย่างที่บอก
เราทำแค่ถึง 3S เนี่ยก็
เก่งมากแล้ว
อย่างน้อย 2-3 นะคะ
ไอ้บอยคอร์ดกับสีเนี่ยไม่ทำก็ก็ก็รักไว้ได้นะคะ แต่อย่างน้อยต้องถึง
วัตถุประสงค์ของการปรับฐานนะคะ
แน่นอนลดความซ้ำซ้อนของข้อมูลก็คือถ้าข้อมูลมันซ้ำกันเนี่ยเราก็ต้องตัดออกไป
โครงสร้างเป็นสิ่งสำคัญมากเท่าไหร่เนื้อหาแล้วก็พื้นที่ในการเก็บข้อมูลอย่างมันก็จะเยอะ
ก็ทำให้สิ้นเปลือง
ประมาณเหมือนกัน
รวมถึงลดปัญหาความไม่ถูกต้องของข้อมูล
ข้อมูลเนี่ยนอกจากที่จะไม่เกิดความสอดคล้องกันแล้วเนี่ย
วันจันทร์อาจจะเกิดจากสาเหตุคือ
ถ้าเหมือนที่ตัดกระจกทุกอย่างก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่
นักศึกษา
เก็บข้อมูลที่คณะด้วยเก็บที่มหาลัยด้วยเก็บที่สาขาด้วยเนี่ยบางทีถ้าวันนึง
คุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์
ที่บ้าน
ก็ต้องไปตามเปลี่ยนทุกที่เลย
นะคะ
ซึ่งเสียเวลาแล้วคราวนี้ก็จะเป็นที่เถียงกันว่าสรุปแล้วเบอร์ไหนถูกเบอร์ไหนผิด
โดยวัตถุประสงค์ของการปรับบรรทัดฐานก็คือข้อมูลจะถูกเก็บอยู่อย่างเดียว
ราคาเก็บไว้ที่เดียว
แต่สามารถเรียกใช้และใช้งานได้หลาย ๆ ที่พร้อมกันได้
แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูลหรือมีการลบหรือการเพิ่มข้อมูล
เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด
เราจะเก็บข้อมูลไว้ที่เดียว
แก้ไขก็ที่เดียว
เพราะฉะนั้นข้อมูลก็จะเป็นข้อมูลที่ถูกต้องแล้วก็
ปัจจุบันด้วย
แล้วก็
อย่างที่ใช้ในการเก็บข้อมูลที่เดียวเนี่ยมันก็จะลดความผิดพลาดที่เกิดจากการ
เปลี่ยนแปลงข้อมูลปรับปรุงข้อมูลนะคะ เหมือนที่บอกว่าคือ
ถ้าเปลี่ยนเบอร์โทรศัพท์หรือเปลี่ยนบ้านเลขที่นะคะ ก็เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้
พร้อมกันถ้าต้องการข้อมูลนะคะ
ความซ้ำซ้อนกันของข้อมูลมันอาจจะเกิดความผิดพลาดของการปรับปรุงข้อมูลนะคะ
แนวคิดที่สำคัญของการออกแบบฐานข้อมูล
การออกแบบข้อมูลที่ซ้ำซ้อนกันน้อยที่สุด
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลแล้วก็ลดปัญหาที่จะเกิดขึ้น
ถ้าสมมุติว่าข้อมูลมันซ้ำซ้อนกันมากเกินไปหรือ
ปริมาณข้อมูลมันเยอะเกินไป
อย่างเช่นตัวอย่างนะคะ ตารางด้านบนตารางสีเทาข้างบน
จะเป็นตัวอย่างการออกแบบ
ฐานข้อมูลที่ดีเดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่าในตารางข้างบนเนี่ยมันจะมีตารางของพนักงานแล้วก็ต่างสาขา
จะเห็นได้ว่า
ตาราง
พนักงาน
จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขา
ก้อยไม่อยู่
ถามว่าทำไมไม่เอา
ข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ
ทำไมต้องแยกออก
ถ้า
ศึกษาดูคนแรกนะคะ
พนักงานคนแรกรหัสสาขา b005
ก็คือสาขา
เชียงใหม่
ถ้าสมมุติว่าพนักงานคนที่ 1 ลาออก
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ
มีการลบข้อมูล
บุคคลนี้หรอ
ขีดฆ่าทิ้ง
ฆ่าทิ้ง
สิ่งไหนที่หายไปบ้าง
แน่นอนสาขาเชียงใหม่จะหายไปด้วย
ถ้าสมมุติเราอยู่ด้วยกัน
แต่ถ้าสมมุติพนักงานคนนี้ลาออกสาขาเชียงใหม่ยังอยู่ไหม
ยังอยู่
นะคะ
ซึ่งแตกต่างจากด้านล่าง
ด้านล่าง
เห็นไหมคำว่า
ถ้าสมมุติว่าจะลบทิ้งหมดเลย
กากบาททิ้ง
สาขาเชียงใหม่หายไปด้วย
แบบที่ไม่ดี
เหมือน
คนข้างล่าง
ออก
สาขาพิษณุโลก
ก็หายไปด้วย
แต่ถ้าเป็นตารางด้านบน
ถ้าคนนี้ลาออก
สาขายังอยู่ไหม
ยังอยู่เหมือนเดิม
อันนี้คือการออกแบบฐานข้อมูลที่ดีถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อการเราจะต้องแยกตารางออก
ตัวอย่าง
นะคะ ถ้าการออกแบบที่ดีเนี่ยเราจะลด
ปัญหาความซ้ำซ้อนของข้อมูล
ได้
เช่นตัวนี้อันนี้เป็นตารางที่ออกแบบที่ไม่ดีนะคะ
เห็นไหมคะ ว่ามันจะมี
รหัสสาขา
แล้วก็ที่อยู่
อยู่ในตารางเดียวกัน
ถ้าสมมุติว่าอาจารย์เพิ่ม
เข้ามาใหม่อีก 1 คน
นะคะ
n e m
ถ้าต้องการเพิ่มพนักงานสาขา
เชียงใหม่ก็ต้องมากรอกข้อมูลตรงนี้อีก
เชียงใหม่ณโรงเรียนระโนด
แต่ถ้า
การออกแบบฐานข้อมูลที่ดีเนี่ย
เราแค่ใส่รหัสสาขา
ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้
เหมือนเวลาคุณไปธนาคารใช่ไหมคะ
คุณก็แค่ยื่นบัตรประชาชน
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณนงไป
หรืออาจจะเอาชิปการ์ดของคุณเนี่ยเสียบเข้าไปในเครื่องถามว่าตอนนี้เราได้กรอกข้อมูลไหม
ขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างที่คุณมีเขาจะดึงออกมาจากระบบให้เลยเราไม่ต้องมาเสียเวลาก่อน
เหมือนเมื่อก่อนเนี่ยต้องเขียนใส่กระดาษและเลขบัตรประชาชนด้านรายชื่ออะไรนามสกุลอะไรที่อยู่ที่ไหนเบอร์โทรศัพท์อะไรเดี๋ยวนี้ไม่ต้องเลยขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างเราสามารถดึงขึ้นมาได้อยู่แล้ว
อันนี้ก็เช่นเดียวกัน
ถ้าการออกแบบไม่ดีแต่เราต้องกรอกข้อมูลถูกต้องทุกช่องเลยเนี่ย
มันทำให้
อาจจะคนเดียวไม่เดือดร้อนค่ะ
ถ้าเป็นพนักงานใหม่เป็นเหมือนโรงงานน่ะค่ะ ที่รักพันคน
นั่งกรอก
เชียงใหม่เป็นพันครั้งเนี่ยเสียเวลามาก ๆ
อันนี้คือการออกแบบที่ไม่ดี
นะคะ
กลับอีกอย่างนึงถ้าสมมุติว่าเมื่อกี้อาจารย์เพิ่มพนักงานแล้ว
ถ้ามันอยากเพิ่มแค่สาขา
อย่าเพิ่งแค่สาขาซึ่งในตารางนี้
กีฬา
จำได้ไหมคะ ที่รักจะเป็นคีย์ที่ขีดเส้นใต้
ซึ่งอาจารย์อยากเพิ่มสาขาสมุทรปราการจะเพิ่มบี
100
สกลนคร
ละครนะคะ
ถามว่าเพิ่มได้ไหม อาจจะเป็นการตั้งสาขาแต่ยังไม่มีพนักงานหรอก
ถ้าจากตารางนี้
เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้
เรายังไม่มีรหัสพนักงานเพราะรหัสพนักงานเป็นคีย์หลัก
ครีม
คือคุณสมบัติมันคือเป็นค่าว่างไม่ได้
ก็ทำให้เราเพิ่มสาขาไม่ได้
ไม่มีพนักงาน
อันนี้ก็เป็น
ข้อผิดพลาดในการเพิ่มข้อมูลถ้าเราออกแบบ
ตารางแบบนี้นะคะ
ก็คือกัน
ปัญหาที่เกิดขึ้นจากการออกแบบตารางที่ดี
กลับ
หาโตมาเป็นปัญหาการลบข้อมูลที่อาจารย์บอก
ถ้าพนักงานคนนี้
ออก
สาขาเชียงใหม่หายไปด้วย
ลบไป
กรณีความผิดพลาดจากการเปลี่ยนแปลง
เหมือน b03 b03 นะคะ
เป็นกรุงเทพฯใช่ไหมคะ
แล้วคราวนี้ข้อมูลมันอยู่ในตารางเดียวกัน
ถ้านักศึกษาจะแก้สมมุติว่าเราย้ายจากกรุงเทพฯไปอยู่นนทบุรี
สมมุติมีพนักงาน 300 คน
คุณต้องแก้กรุงเทพฯ 30 ครั้ง
นนทบุรี
พนักงานมีคนส่งคนไม่ใช่ปัญหาค่ะ แต่ถ้าคุณเป็นโรงงานขนาดใหญ่
นั่งแก้ทีละ 30 คนไม่ใช่เรื่องสนุกแน่ ๆ
มันก็เป็นปัญหานะคะ เพราะฉะนั้น
เราควรแยกตารางพนักงานกับตารางสาขาออกจากกันนะคะ มีเป็นเหตุผล
นี่คือ
ขนาดข้อมูลขนาดเล็กนะคะ แล้วยังเห็นปัญหาขนาดนี้ถ้าสมมุติว่า
องค์กรขนาดใหญ่เป็นบริษัทเป็นโรงงานระดับโรงเรียนมีนักเรียนเป็น 2 302 3000 คนก็ได้นะคะ
มีปัญหาเยอะมากถ้าสมมุติว่าเราจัดการตารางไม่ดี
จากปัญหาที่เกิดขึ้นเมื่อกี้นะคะ อย่างที่บอกค่ะ เราจะแก้ปัญหาโดยการแยกตารางเป็น 2 ตารางแบบนี้นะคะ
ฟังก์ชั่นการขึ้นต่อกันนะคะ อันนี้เดี๋ยว
เป็นเกี่ยวกับตารางนึ่งนะคะ มีผลดีต่อราง 1 เราจะเรียกว่าเป็นฟังก์ชันการขึ้นต่อกัน
เดี๋ยวดูตัวอย่างเลยละกัน
อย่างเช่นทางนี้นะคะ
ดูจากรหัสพนักงานนะคะ
เขียนได้ว่ารหัสพนักงาน
จะส่งผลกับชื่อ
ตำแหน่ง
สัญลักษณ์ของการขึ้นต่อกันนะคะ อันไหนเป็นตัวหลัก
ชี้ไปที่ตัวรองราคาตามหัวลูกศรเลย
ดูทิศทางตามหัวลูกศรนะคะ อันไหนเป็นตัวหลักอันไหนเป็นตัวรอง
นะคะ
เช่น
ตัวนี้ถามว่าตำแหน่งบัญชีที่รหัสพนักงานได้ไหม นะคะ ถามว่า
ไม่ได้
เพราะการขึ้นต่อการจะต้องเป็นลักษณะหนึ่งต่อหนึ่งเท่านั้น
เป็นหนึ่งต่อกลุ่มไม่ได้
ชนิดของการขึ้นต่อกันนะคะ จะมีอยู่ 4 ชนิดนะคะ
ชนิดแรกเป็นการขึ้นต่อกันโดยสมบูรณ์
นะคะ
ซึ่งอาจจะเป็นเกี่ยวกับ
ตารางนะคะ จะมีคอลัมน์
1 คอลัมน์หรือมากกว่า 1 คอลัมน์มาประกอบกัน
โดยในคอลัมน์นะเนี่ย
ค่าที่ระบุ
ความพิเศษ
ของแถว ๆ ได้อย่างชัดเจน
aprilia จะเป็นค่าเฉพาะที่บอกเลยว่า
คอร์ดข้อมูลแถวนั้นเนี่ยมันมีลักษณะพิเศษเฉพาะตัวยังไง
โดยในทุกความสัมพันธ์เนี่ยจะต้องระบุค่าคีย์หลักไว้ด้วย
ครึ่งปีหลังนี้คือต้องเป็นค่าเอกลักษณ์คือไม่ซ้ำกันอยู่แล้ว
นะคะ
อย่างเช่นการขึ้นต่อกันอย่างสมบูรณ์อันแรกนะคะ
ก็คือคอลัมน์ที่ไม่ใช่คีย์หลักกีฬา
จำได้ใช่ไหมคะ คีย์หลักจะเป็น
คอลัมน์ที่มีขีดเส้นใต้
คอลัมน์ที่ไม่ใช่คีย์หลักจะขึ้นตรงต่อคอลัมน์ที่เป็นคีย์หลัก
หมอลำเดียวเท่านั้น
เช่นเลขบัตรประชาชน
จะขึ้น
จะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ
เพราะฉะนั้นการขึ้นตัวกันอย่างสมบูรณ์จะเป็นลักษณะแบบหนึ่งต่อหนึ่งนะคะ เลขบัตรประชาชน 1 เลข
ต้องเป็นของคนคนเดียวเท่านั้น
ไม่ใช่ว่าเลขประชาชนที่ใช้ 10 คนเป็นไปไม่ได้นะคะ
ตัวอย่างนะคะ
ตารางที่มี Column หลายตัว
นะคะ
ขึ้นอยู่กับคีย์หลักตัวเดียวเช่น
คนหนึ่งคนเนี่ย
ก็จะมีข้อมูลชื่อนามสกุลวันเดือนปีเกิดวันที่ทำบัตรใช่ไหมคะ
แต่ว่า
เขาจะต้องขึ้นตรงกับเลขบัตรประชาชนเดียวเท่านั้นถามว่าสามคนนี้
อาจจะเกิดวันเดียวกันก็ได้ค่ะ
เลขบัตรประชาชนเขาจะไม่เหมือนกัน
หรือเขาอาจจะมาทำบัตรวันเดียวกัน
หมายเลขบัตรประชาชนเขาจะไม่ซ้ำกัน
คืออะไร ซ้ำกันได้ทุกอย่างค่ะ ยกเว้นหมายเลขบัตรประชาชน
แต่บางตารางนะคะ
ก็อาจจะเป็นการรวมตัวกันของกีฬา
มากกว่า 1 ปีหลักนะคะ
มารวมกันเช่นนักศึกษา
วันนี้
เอกสารนี้
ลงทะเบียนวิชานี้
ได้เกรดอะไร
อันนี้ก็เป็นความสัมพันธ์ที่เกิดขึ้นได้เหมือนกันค่ะ ว่าบัตรนักศึกษาซ้ำกันได้ไหม
รหัสวิชาซ้ำกันได้ไหม
เหมือนชื่อวิชาการ
รหัสนึง
เชื่อใจคนอื่นก็รหัสวิชาอีกอันนึง
นี้จะไม่ซ้ำกันอยู่แล้วนะคะ
ต่อมาจะเป็นการขึ้นต่อกันบางส่วน
มันก็จะเป็นอาศัยความสัมพันธ์ที่เกิดขึ้นจาก
วิธีผสมนะคะ อาจจะเป็น
เส้นตรงจากตารางอื่นหรือส่งตารางมารวมกัน
อาจจะไม่ใช่คีย์หลักก็ได้แต่มันมีความหมายกับ
คอลัมน์นึง
เดี๋ยวจะยกตัวอย่างเลยดีกว่า
อย่างเช่น
นึกว่าตารางเทียบไซส์ให้ดูเมื่อกี้นะคะ ก็จะมีรหัสนักศึกษารหัสวิชามีเกรด
แล้วก็
มีการบอกด้วยว่ารหัสวิชานี้เป็นชื่อวิชาอะไร
นะคะ
มันจะเป็นการเกิดขึ้นเมื่อ
กีฬา
ประกอบกันด้วย
คอลัมน์หรือว่า Accident รวมกัน
โดยบางส่วนของคีย์หลักสามารถไประบุค่าอย่างอื่น
ที่ไม่ใช่คีย์หลักได้
นะคะ อย่างเช่นในความสัมพันธ์นี้คีย์หลักจะมี 2 ตัว
มีรหัสนักศึกษา
รหัสวิชา
ถามว่า
ถ้ามีแต่
รหัสนักศึกษา
นะคะ
รหัสวิชา
แล้วเราจะรู้ไหมว่าชื่อวิชาที่เราเรียนไปเนี่ย
วิชาอะไร
บางคนรู้รหัสวิชาแต่จำชื่อวิชาไม่ได้ก็มี
เพราะฉะนั้นรหัสวิชาเนี่ยมันเลยสามารถ
ไปส่งผลกับชื่อวิชาได้เหมือนกันเพราะเป็นตัวระบุว่า
ไปหลายวิชาเนี่ย
ชื่อวิชาอะไร
ก็คือคีย์หลักในตารางนี้มี 2 อัน
แต่มีคีย์หลัก 1 ตัวเนี่ย
ไปมีผลกับ
แอตทริบิวต์ 1 ได้
นะคะ อันนี้คือความขึ้นต่อกันบางส่วน
อย่างเช่นตัวนี้ก็จะเป็นของจริงถ้าสูตรว่าอาจารย์ปัดรหัสนักศึกษาออก
มีแค่ 5 วิชามีเกรดมีการ
วิชาเขียนโปรแกรมแล้วถาม
รู้ไหมคะ ว่าเกรดเอที่ของใคร
นะคะ หรือว่า
อย่าลบไปเที่ยวก่อนนะ
หรือว่า
การลบรหัสวิชาออก
เหลือแต่นักศึกษาเหลือเกรด
ชื่อวิชาแล้วถามว่า
รหัสวิชาอะไรล่ะที่เราได้เกรด A
เราก็ไม่ทราบอีกเหมือนกันนะคะ อันนี้ก็คือ
การขึ้นต่อกันบางส่วน
เป็นการขึ้นต่อกันแบบส่งต่อ
ก็จะเป็นความสัมพันธ์ที่เกิดขึ้นก็ต่อเมื่อมีแอตทริบิวต์หรือว่าคนอื่นที่ไม่ใช่ครีม
แต่ไปสามารถ
ขึ้น
สามารถระบุค่าของแอตทริบิวต์อื่นใน Accord ได้
ซึ่งเป็นการออกแบบที่ไม่เหมาะสม
เพราะส่วนใหญ่แล้วในตารางเนี่ย
ถ้าเราจะระบุค่าอื่นให้กับ
คอลัมน์อื่นได้ควรจะต้องเป็นคีย์หลักเท่านั้น
ดูตัวอย่างนะคะ เช่นตารางเนี้ย
เขาบอกว่าสิ่งที่เกิดขึ้นคือแอตทริบิวต์คือคอลัมน์ที่ไม่ใช่คีย์หลักหรือ Primary Key นะคะ ก็คือไม่ใช่คอลัมน์ที่มีเส้นขีดมันไประบุค่าอื่น ๆ ในตารางได้เช่น
ตารางนี้ก็คือเลขประจำตัว
ตัวเลขประจำตัวเนี่ย
ไปมีผลกับชื่อนามสกุลที่อยู่ตำแหน่งใช่ไหมคะ
เขาเนี่ย
รถประจำตำแหน่ง
มันไม่ถูกระบุโดยเลขประจำตัว
มันถูกระบุโดยรหัสตำแหน่ง
เหมือนถ้าเป็นผู้จัดการเนี่ย
แผนที่ผู้จัดการนะคะ จะรู้เลยว่ารถประจำตำแหน่งคืออะไร
แต่เขาไปเช็คที่รหัสตำแหน่ง
แผนที่จะเช็คกับเลขประจําตัว
การออกแบบที่ไม่ดี
เพราะฉะนั้นถ้าสมมุติว่าจะให้รถประจำตำแหน่งวิธีการแก้ปัญหาก็คือ
เราควรจะแยก
ตารางนี้
ออกไปสร้างตารางใหม่เลยค่ะ
มันไม่ควรจะมาขึ้นกับตาราง
ขี้มีกี่หลัก
แต่ไม่สามารถระบุค่าข้อมูลตรงนี้ได้เนี่ยมันไม่ควรทำ
กลับต่อมาเป็นการขึ้นต่อการเชิงกลุ่ม
นะคะ
น่าจะเป็นความสัมพันธ์ระหว่างคอลัมน์ Matrix
ขึ้นต่อกันแบบสมบูรณ์นะคะ ก็ไปสามารถระบุค่าอื่นได้
โดยที่
อย่างเช่นตัวอย่าง
ในตารางนี้นะคะ จะมีรหัสหลักสูตร
สามารถระบุรหัสวิชาได้หลายวิชาเช่น
จริง ๆ ในสถานศึกษาจะเห็นได้ว่ามีเลข
122
รหัสนักศึกษา
B12 คืออะไร 12 ก็คือหลักสูตรที่เราเรียนอยู่
ซึ่งในหลักสูตรที่โรงเรียนเนี่ยมันมีวิชา
มากกว่า 20 วิชา
นะคะ
ก็คือรหัสหลักสูตรเนี่ยมันสามารถระบุรหัสวิชาได้หลากหลายรหัสวิชามาก ๆ
ก็คือการขึ้นต่อกันแบบ
มีค่ามากกว่า 1
รหัสหลักสูตร
สามารถระบุรหัสวิชาได้หลายค่านั่นเอง
แล้วรหัสหลักสูตร
ก็สามารถระบุค่ารหัสนักศึกษาได้หลายคนเช่นกัน
เหมือนตอนนี้หลักสูตรที่โรงเรียน
ศึกษาเกือบ 100 คน
รหัสหลักสูตรเดียวนะ
นะคะ
นี่คือความสัมพันธ์แบบสามารถระบุค่าได้มากกว่า 1 นั้นเองแบบไหนค่า
เพราะฉะนั้นวิธีการแก้ปัญหาของสิ่งที่เกิดขึ้นนะคะ เราเลยจะต้องมีการ
กระบวนการปรับบรรทัดฐานหรือว่ากระบวนการปรับปรุงโครงสร้างของฐานข้อมูลนะคะ ที่มีความซ้ำซ้อนกันให้อยู่ในรูปแบบที่เป็นบรรทัดฐานก็คือ
เป็นรูปแบบที่พร้อมที่จะเอาไปพัฒนาเป็นฐานข้อมูลได้
โดยหลักการนะคะ
ที่บอกมี 5 ระดับ
แต่ระดับ
ที่ 3 เนี่ยก็ถือว่าเพียงพอสำหรับการออกแบบฐานข้อมูลในปัจจุบันแล้ว
โดย
ที่รักของการทำงานนะคะ ท่านที่ 1 นะคะ
กำจัดกลุ่มของข้อมูลที่มีความซ้ำซ้อนกันออกไป
ขอแลกง่ายมาก ๆ
ง่ายที่สุดก็คือ 1 nf นะคะ
ต่อมาครั้งที่ 2 อยู่ 2 nf
จะกำจัด
การขึ้นต่อกันบางส่วนออก
อันสุดท้าย 3nf นะคะ
กำจัดการขึ้นต่อกันของแอตทริบิวต์ที่ไม่ใช่ครีม
เดี๋ยวจะมาดูทีละขั้น
มันจะต้องเป็นยังไงบ้าง
คนแรกง่ายที่สุดง่ายมาก ๆ นะคะ
ให้นักศึกษาจำกระบวนการหลัก ๆ จะมี 3 ข้อนะคะ
ขั้นตอนการแรกเลยดูก่อนว่า
คำซ้อนกันไหม
คำที่ 2 คือมันขึ้นต่อกันแค่บางส่วนหรือเปล่า
อันที่ 3 อันไหนไม่ใช่ครีม
แต่มันไปส่งผลกระทบกับข้อมูลอื่นได้หรือเปล่า
ดูอันดับที่ 1 ก่อน
วันที่ 1 ได้มาก
นะคะ ทุก ๆ
คอลัมน์ akashic Records
จะต้องเป็นค่า Single Value คือมีค่าเดียวเท่านั้น
จะใส่แบบนี้ไม่ได้
เพราะฉะนั้นข้อมูลทุกแถวจะต้องไม่มีค่าที่ซ้ำกัน
อย่างเนี้ย
นักศึกษาคนที่ 1
แน่นอนทั้ง 3
1 เทอมเนี่ยคุณลงทะเบียนประมาณ 6-7 วิชาใช่ไหมคะ
ข้อมูลมันก็จะเป็นแบบนี้
ถ้าเราไม่มีการทำน้ำทะเลสั้น
คราวนี้
ขั้นตอนที่ 1
เราจะ
ข้อมูลที่ซ้ำซ้อนกันออกวิธีการง่ายมากค่ะ คือแจ้งข้อมูลออกเป็นอย่างละแถวที่ไม่ซ้ำกัน
ดูตัวอย่างนะคะ
วิธีการทำ 1 n f ง่ายมากค่ะ ถ้าข้อมูลตัวไหนเป็นกลุ่มนะคะ
คนที่ 1 วิชา
ลงทะเบียนเรียน 3 วิชาใช่ไหมคะคนที่ 2 มี 2 วิชา
สามารถทำในรูปแบบ 1nf ก็คือ
เอามันจะตายออกมาค่ะ
ย้ายข้อมูลพรุ่งนี้ออกมา
ง่ายมาก
ข้อมูลพรุ่งนี้ก็ทำซ้ำลงมาทำซ้ำลงมา
สำโรงมา
ทำซ้ำลงมา
ถามว่าอ้าวตาเขาทำไม
ทำไม 001 มันซ้ำกันได้ล่ะ
แต่รหัสวิชาเขาไม่ซ้ำกันเห็นไหมค่ะ
เด็กๆเลยง่ายมากค่ะ
ข้อมูลทำไมเป็นก้อนอย่างนี้เรากระจายออกมาเป็นแยกออกมาเป็นบรรทัดบรรทัดเลยแค่นั้นเอง
อย่างน้อยในข้อสอบ
ต้องทำเน็ตให้ได้
มันง่ายที่สุดแล้ว
นะคะ
ไม่ใช่ตัวนี้นะคะ ก็กระจายออกมา
แล้วคราวนี้ถ้าเรากระจายข้อมูลเรียบร้อยแล้วนะคะ
ว่าจะมาดูว่าในตารางนี้ค่ะ
มันมีตาราง
ของพนักงานใช่ไหมคะ
เขาจะมีคีย์หลัก 1 ตัวละ
แปลว่า
มันจะมีตัวนี้ค่ะ
ตัวที่ 1 ตัวที่ 2 ที่มีคุณสมบัติ
เป็นคีย์หลักได้
เราต้องแยกมันออก
ควรการนะคะ
ดูก่อนว่า
ตารางวิธีนะคะ สิ่งที่ขึ้นตรงกับคีย์หลักตัวนี้นะคะ ก็จะเป็
สังเกตเราว่าที่รักมีตัวเดียว
ข้อมูลมีเยอะมาก
นะคะ ออกมาได้อันแรกเลย
รหัส
โปรเจคนะคะ แล้รเจคนะคะ ใครเป็นผู้จัดการเงินเดือนเท่าไหร่
งบประมาณเท่าไหร่
คือมันจะเชื่อมโยงกับ
ข้อมูลที่เป็นคีย์หลักก็คือ Project Code วันนี้
ส่วนตัวนี้เป็นคีย์คู่แข่ง
2 ตัว
ฉันสามารถทำหน้าที่เป็นคีย์หลักให้กับอย่างตัวนี้นะคะ
มันจะเป็นคีย์หลักให้กับชื่อของพนักงาน
อย่างตัวนี้
ว่าจะเป็นคีย์หลักสำหรับชื่อแผนก
ถามว่า
มันขึ้นตรงกับโปรเจค Code ไหม
ไม่
นะคะ
ฉะนั้นการทำขั้นตอนต่อมานะคะ ส่ง EMS
ขั้นตอนที่ 1
เราจะต้องทำ 1 f มาเรียบร้อยแล้วซึ่งได้ทักมา
แล้วก็ต้องมา
บัตรของการขึ้นต่อกันบางส่วนออก
ก็คือการ
กำจัด
บิวตี้ไม่ขึ้น
คีย์หลักของตารางนั้นเอง
จะออกนะคะ
อย่างเช่นตัวนี้นะคะ
การขึ้นต่อกันบางส่วนจะเห็นได้ว่า
รหัสวิชากับชื่อวิชา
มันไม่ขึ้นตรงกับรหัสนักศึกษาใช่ไหมคะ นี้จำได้นะลูกเดิม
หารูปเดิม
วิธีกำจัดปัญหาเราก็ดึงสิ่งที่มันเป็นปัญหาสิ่งที่มันไม่ขึ้นตรงกับคีย์หลักตัวนั้น
ไปสร้างตารางใหม่
สร้างตารางเพิ่ม
เอาสิ่งที่เป็นปัญหาออกมาไปใส่ตารางใหม่กำหนดคีย์หลักใหม่
ในตารางเดิม
นะคะ
เราก็เอาคีย์หลักของตารางใหม่ไปใส่
แค่นั้นเอง
วิธีการก็คือ
รูปนี้นะคะ
สิ่งที่เป็นปัญหาที่จะยกตัวอย่างคือรหัสวิชา
ชิชา
เพราะรหัสวิชามันไม่ได้ขึ้นตรงกับรหัสนักศึกษา
เพราะฉะนั้นไอ้สองตัวนี้คือสิ่งที่เป็นปัญหา
วิธีการแก้ปัญหาคือเราสร้างตารางผลการเรียนใหม่
สร้างตารางวิชาใหม่
เห็นไหมคะ
ตารางใหม่เราจะตัดชื่อวิชาออก
แต่ต้องเหลือ
รหัสวิชาไว้เพื่อให้เชื่อมโยงว่ารหัสวิชานี้มันชื่อวิชาอะไร
ตาราง 1
แค่นั้นเองนะคะ
ดีค่ะ
อันนี้เป็นตัวอย่างของการ
สารในรูปแบบของส่ง EMS
เดี๋ยววันนี้
จะให้ทำการบ้านเดี๋ยวค่อยย้อนกลับมาแล้วกันนะคะ
สอนภาษา
เดี๋ยวแก้แล้ว
ตาเมื่อกี้นะคะ
ขั้นตอนสุดท้ายนะคะ 3nf
นะคะ
โดยความสัมพันธ์นะคะ ก่อนที่จะทำเป็นสามเณรได้จะต้องทำ 2 อย่างนี้มาก่อน
หลักของการทำขั้นตอนที่ 3 คือ
ต้องเอาความสัมพันธ์ที่ไม่ใช่คีย์หลัก
ออกนะคะ
เช่นไม่ใช่คีย์หลักแต่ไม่มีผลกับ
คนอื่นไม่ได้นะคะ ไม่ได้
วิธีการแก้ปัญหาเช่นเดิมค่ะ สร้างตารางใหม่ขึ้นมา
แก้ปัญหานาน ๆ
อย่างเช่นในตัวอย่างนะคะ
รหัสพนักงานนะคะ
ชื่อสกุลรหัสแผนกชื่อแผนกเงินเดือน
จะเห็นได้ว่าในตารางนี้เนี่ยคีย์หลักก็คือรหัสพนักงาน
วันนี้รหัสแผนกกับชื่อแผนกติดมาด้วย
ซึ่งมันไม่ได้เกี่ยวกับรหัสพนักงานเลย
วิธีการแก้ปัญหาก็คือ
เอารหัสแผนก
ชื่อแผนก
ไปสร้างตารางใหม่
แต่ต้องยังคงรหัสแผนกไว้
ตารางเดิมนะคะ
เพื่อให้มันเชื่อมโยงได้ว่าไอ้แผนก a001 เนี่ยคือแผนกอะไร
อันนี้คือการแก้ปัญหาไม่ใช่คีย์หลักแต่ไปส่งผลกับคอลัมน์อื่น ๆ ในตารางนะคะ
เ***จริง ๆ แล้วอยากให้ลองทำในห้องมากกว่าแต่ด้วยสัปดาห์นี้มันมีข้อจำกัดเนาะก็ไม่เป็นไร
นี้เป็นตัวอย่างนะคะ
สรุปนะคะ วิธีการทำนกในชาติหรือว่าการปรับบรรทัดฐานนะคะ
ทุก ๆ ที่ทุก ๆ คนร่ำในแต่ละแถว
จะต้องมีค่าของข้อมูลเพียงค่าเดียวเท่านั้น
เช่นเวลาเรากรอกเบอร์โทรศัพท์
เรามีโทรศัพท์ 3 เบอร์ก็จริงแต่เราจะกรอกได้แค่เบอร์เดียว
ถ้าอยากใส่เบอร์ที่ 2 ที่ 3 ก็ต้องเพิ่มข้อมูลแถวใหม่ขึ้นมา
ตอบมา
2 SF
ก็
ปัญหาคือถ้ามีข้อมูลนะคะ ขอข้อมูลทุกตัวในตารางนั้นจะต้องขึ้นกับคีย์หลัก
ของตาราง
ตัวเดียวเท่านั้น
นะคะ
ข้อที่ 3 ถ้า
คอลัมน์ไหนที่ไม่ใช่คีย์หลัก
ฟ้าส่งผลกับคอลัมน์อื่นในตารางไม่ได้
เพราะฉะนั้น
ไปตลาดข้อ 1 นี้คือแค่กระต่ายตาราง
อันที่ 2 อันที่ 3 ถ้ามีปัญหา
เราต้องสร้างตารางใหม่
การบ้านเอางี้ดีกว่า
อาจารย์จะให้ทำน่าจะส่งวันนี้
เอาแค่
ข้อเดียวนะคะ ข้อเดียวพอเพราะว่าจริง ๆ อยากให้ทำในห้องเดี๋ยวสัปดาห์หน้าค่อยทำในห้อง
จะให้ลองทำดูก่อนว่าที่เรียนไปวันนี้
เข้าใจไหม
ถ้าทำเสร็จแล้วก็ค่อยเอามาส่ง
ตู้ส่งงานอาจารย์เอาเฉพาะข้อดีนะข้อเดียว
คนเดียวพอวันนี้คนเดียวพอนะคะ ส่งในเวลานี้แหละ
ให้ลองทำดูว่าเข้าใจไหมข้อนี้
ทำอย่างเงี้ยทำยังไงได้มาก ๆ เลย
การเว้นช่องว่างให้แล้ว
เติมมา
2 มิติ
คุณเห็นไหมว่า
มันมีรหัสวิชาเนี่ย
ชาเนี่ย
ต้องทำยังไงกับมัน
แยกมันออกมาซิแยกยังไง
เอาข้าวเหนียวก่อน
นะคะ แล้วลอง
ส่งมาให้อาจารย์ดูก่อนว่า
เข้าใจมากน้อยขนาดไหน
จริง ๆ
อยากให้เรียนในห้องมากกว่าแต่วันนี้ก็เอา
มานี้ก่อนแล้วกัน
ให้ทุกคนหายดีกลับมาอาทิตย์หน้าค่อย
เดินดูในห้องดีกว่า
วันนี้ก็
ประมาณนี้นะคะ เดี๋ยวเวลาที่เหลือให้ทำข้อนี้แล้วมาส่ง
วันนี้เลยยิ่งดี
เวลาที่เหลือทำใส่กระดาษมาส่งอาจารย์
แล้วกันเนาะ
ประมาณนี้ค่ะ เวลาที่เหลือทำให้เสร็จภายในวันนี้นะคะ
ข้อเดียวเองนะคะ ข้อเดียว
ใครสงสัยไหมคะ
อุ้ยสงสัยไหม
เปิดไม่ได้หรือเปล่า
ไม่มีค่ะ อาจารย์เดี๋ยวถ้ายังไงเดี๋ยวให้อุบลไปส่งหรือยังไงคะเพราะว่าบนขึ้น
ไม่ ๆ ส่วนมากอยู่ในการอยู่หอนี่แหละ
ตอนนี้เหลืออยู่ประมาณ
ใส่ได้ก็เอามา
Ok Thank You
วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ พี่
ยังตั้งใจเรียนอยู่แล้วก็งานอย่าลืมส่งวันนี้นะคะ อยู่ดี ๆ ก็
ทำให้เสร็จ
แล้วก็ฝากเพื่อนมาส่งรวมกันมาส่งก็ได้นะคะ ถ้าใครอยู่หอก็จะมาทำอยู่ดี ๆ ก็ได้หรือว่าทำเสร็จแล้วมาส่งที่
อาการก็ได้
โอเคค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณล่างด้วยนะคะ
ค่าขอบคุณค่ะ
วันนี้ครบเนาะ
OK
ประมาณนี้
นะคะ
วันนี้จะเป็นบทที่ 5
เกี่ยวกับ
กระบวนการ
การปรับบรรทัดฐาน
ขาภาษาอังกฤษก็จะเป็นนกอะไร Season
มันก็จะมีความหมายแล้วก็จุดประสงค์ของการทำ
การปรับมาตรฐานนะคะ แล้วก็จะเกี่ยวกับ
ฟังก์ชั่นการขึ้นต่อการและกระบวนการในการทำนมคาร์เนชั่นด้วย
นะคะ
มี 3 ข้อวันนี้
โดยการประปาฐานนะคะ หรือว่านอนเมื่อไหร่แฟชั่นเนี่ยมันจะเป็นทฤษฎีที่
คนที่จะต้องออกแบบฐานข้อมูลเขาจะต้องมาแปลงข้อมูล
ข้อมูลอาจจะเป็นข้อมูลที่ซับซ้อน
นะคะ ให้มันง่าย
เข้าใจก็ง่าย
ใช้งานก็ง่ายแล้วก็ต้องเป็นระบบที่หลังจากออกแบบแล้วนำไปใช้งานจริงต้องเกิดปัญหาน้อยที่สุด
โดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานเนี่ยมันจะมี 3 ระดับ
จริง ๆ เราก็จะเรียกสั้น ๆ ว่า
ระดับแรกนึกว่า 1nf
2nf 3nf
ในระดับปริญญาตรีเนี่ย
ถึง 3ms ได้
ก็ถือว่าเก่งมากแล้ว
นะคะ
ถ้าเป็นระดับที่สูงขึ้นไปอีกก็จะถึงได้ถึง 5 nf เลย
นะคะ
อันนี้เป็น
แผนภาพกระบวนการทำงานนะคะ ก่อนที่เราจะมาทำกระบวนการปรับบรรทัดฐานได้เนี่ยมันก็ต้องวิเคราะห์ความต้องการของผู้ใช้งานก่อนว่าเขาต้อง
การระบุ
การฐานข้อมูลแบบไหนมีความต้องการใช้
ตารางกี่ตารางในฐานข้อมูลนะคะ
หลังจากนั้น
วาดรูป
แผนที่โรงเรียนอาทิตย์ที่แล้ว
นะคะ ว่าเป็นแผนภาพเพื่อให้เข้าใจว่า
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูล
มันตรงตามความต้องการหรือเปล่านะคะ
แต่รูปแบบของรูปที่เราวันอาทิตย์ที่แล้วเนี่ยมันจะยังเป็นรูปแบบที่
ยังไม่เป็นบรรทัดฐานหรือว่ายังไม่มีการจัดระเบียบความคิด
ข้อมูลที่ซ้ำซ้อนกันออกไปหรืออาจจะมีคีย์หลักที่มัน
ขอนแก่นนะคะ เราก็เลยจะต้องเอาข้อมูลจากที่เราว่าอาทิตย์ที่แล้วเนี่ย
เข้าสู่กระบวนการปรับพื้นฐานก่อน
ซึ่งอย่างที่บอก
เราทำแค่ถึง 3S เนี่ยก็
เก่งมากแล้ว
อย่างน้อย 2-3 นะคะ
ไอ้บอยคอร์ดกับสีเนี่ยไม่ทำก็ก็ก็รักไว้ได้นะคะ แต่อย่างน้อยต้องถึง
วัตถุประสงค์ของการปรับฐานนะคะ
แน่นอนลดความซ้ำซ้อนของข้อมูลก็คือถ้าข้อมูลมันซ้ำกันเนี่ยเราก็ต้องตัดออกไป
โครงสร้างเป็นสิ่งสำคัญมากเท่าไหร่เนื้อหาแล้วก็พื้นที่ในการเก็บข้อมูลอย่างมันก็จะเยอะ
ก็ทำให้สิ้นเปลือง
ประมาณเหมือนกัน
รวมถึงลดปัญหาความไม่ถูกต้องของข้อมูล
ข้อ
วันจันทร์อาจจะเกิดจากสาเหตุคือ
ถ้าเหมือนที่ตัดกระจกทุกอย่างก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่
นักศึกษา
เก็บข้อมู
คุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์
ที่บ้าน
ก็ต้องไปตามเปลี่ยนทุกที่เลย
นะคะ
ซึ่งเสียเวลาแล้วคราวนี้ก็จะเป็นที่เถียงกันว่าสรุปแล้วเบอร์ไหนถูกเบอร์ไหนผิด
โดยวัตถุประสงค์ของการปรับบรรทัดฐานก็คือข้อมูลจะถูกเก็บอยู่อย่างเดียว
ราคาเก็บไว้ที่เดียว
แต่สามารถเรียกใช้และใช้งานได้หลาย ๆ ที่พร้อมกันได้
แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูลหรือมีการลบหรือการเพิ่มข้อมูล
เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด
เราจะเก็บข้อมูลไว้ที่เดียว
แ
เพราะฉะนั้นข้อมูลก็จะเป็นข้อมูลที่ถูกต้องแล้วก็
ปัจจุบันด้วย
แ
อย่างที่ใช้ในการเก็บข้อมูลที่เดียวเนี่ยมันก็จะลดความผิดพลาดที่เกิดจากการ
เปลี่ยนแปลงข้อมูลปรับปรุงข้อมูลนะคะ เหมือนที่บอกว่าคือ
ถ้าเปลี่ยนเบอร์โทรศัพท์หรือเปลี่ยนบ้านเลขที่นะคะ ก็เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้
พร้อมกันถ้าต้องการข้อมูลนะคะ
ความซ้ำซ้อนกันของข้อมูลมันอาจจะเกิดความผิดพลาดของการปรับปรุงข้อมูลนะคะ
แนวคิดที่สำคัญของการออกแบบฐานข้อมูล
การออกแบบข้อมูลที่ซ้ำซ้อนกันน้อยที่สุด
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลแล้วก็ลดปัญหาที่จะเกิดขึ้น
ถ้าสมมุติว่าข้อมูลมันซ้ำซ้อนกันมากเกินไปหรือ
ปริมาณข้อมูลมันเยอะเกินไป
อย่างเช่นตัวอย่างนะคะ ตารางด้านบนตารางสีเทาข้างบน
จะเป็นตัวอย่างการออกแบบ
ฐานข้อมูลที่ดีเดี๋ยวจะมาให้ดูว่าทำไมมันถึงดีกว่าในตารางข้างบนเนี่ยมันจะมีตารางของพนักงานแล้วก็ต่างสาขา
จะเห็นได้ว่า
ตาราง
พนักงาน
จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขา
ก้อยไม่อยู่
ถามว่าทำไมไม่เอา
ข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ
ทำไมต้องแยกออก
ถ้า
ศึกษาดูคนแรกนะคะ
พนักงานคนแรกรหัสสาขา b005
ก็คือสาขา
เชียงใหม่
ถ้าสมมุติว่าพนักงานคนที่ 1 ลาออก
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ
มีการลบข้อมูล
บุคคลนี้หรอ
ขีดฆ่าทิ้ง
ฆ่าทิ้ง
สิ่งไหนที่หายไปบ้าง
แน่นอนสาขาเชียงใหม่จะหายไปด้วย
ถ้าสมมุติเราอยู่ด้วยกัน
แต่ถ้าสมมุติพนักงานคนนี้ลาออกสาขาเชียงใหม่ยังอยู่ไหม
ยังอยู่
นะคะ
ซึ่งแตกต่างจากด้านล่าง
ด้านล่าง
เห็นไหมคำว่า
ถ้าสมมุติว่าจะลบทิ้งหมดเลย
กากบาททิ้ง
สาขาเชียงใหม่หายไปด้วย
แบบที่ไม่ดี
เหมือน
คนข้างล่าง
ออก
สาขาพิษณุโลก
ก็หายไปด้วย
แต่ถ้าเป็นตารางด้านบน
ถ้าคนนี้ลาออก
สาขายังอยู่ไหม
ยังอยู่เหมือนเดิม
อันนี้คือการออกแบบฐานข้อมูลที่ดีถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อการเราจะต้องแยกตารางออก
ตัวอย่าง
นะคะ ถ้าการออกแบบที่ดีเนี่ยเราจะลด
ปัญหาความซ้ำซ้อนของข้อมูล
ได้
เช่นตัวนี้อันนี้เป็นตารางที่ออกแบบที่ไม่ดีนะคะ
เห็นไหมคะ ว่ามันจะมี
รหัสสาขา
แล้วก็ที่อยู่
อยู่ในตารางเดียวกัน
ถ้าสมมุติว่าอาจารย์เพิ่ม
เข้ามาใหม่อีก 1 คน
นะคะ
n e m
ถ้าต้องการเพิ่มพนักงานสาขา
เชียงใหม่ก็ต้องมากรอกข้อมูลตรงนี้อีก
เชียงใหม่ณโรงเรียนระโนด
แต่ถ้า
การออกแบบฐานข้อมูลที่ดีเนี่ย
เราแค่ใส่รหัสสาขา
ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้
เหมือนเวลาคุณไปธนาคารใช่ไหมคะ
คุณก็แค่ยื่นบัตรประชาชน
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณนงไป
หรืออาจจะเอาชิปการ์ดของคุณเนี่ยเสียบเข้าไปในเครื่องถามว่าตอนนี้เราได้กรอกข้อมูลไหม
ขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างที่คุณมีเขาจะดึงออกมาจากระบบให้เลยเราไม่ต้องมาเสียเวลาก่อน
เหมือนเมื่อก่อนเนี่ยต้องเขียนใส่กระดาษและเลขบัตรประชาชนด้านรายชื่ออะไรนามสกุลอะไรที่อยู่ที่ไหนเบอร์โทรศัพท์อะไรเดี๋ยวนี้ไม่ต้องเลยขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างเราสามารถดึงขึ้นมาได้อยู่แล้ว
อันนี้ก็เช่นเดียวกัน
ถ้าการออกแบบไม่ดีแต่เราต้องกรอกข้อมูลถูกต้องทุกช่องเลยเนี่ย
มันทำให้
อาจจะคนเดียวไม่เดือดร้อนค่ะ
ถ้าเป็นพนักงานใหม่เป็นเหมือนโรงงานน่ะค่ะ ที่รักพันคน
นั่งกรอก
เชียงใหม่เป็นพันครั้งเนี่ยเสียเวลามาก ๆ
อันนี้คือการออกแบบที่ไม่ดี
นะคะ
กลับอีกอย่างนึงถ้าสมมุติว่าเมื่อกี้อาจารย์เพิ่มพนักงานแล้ว
ถ้ามันอยากเพิ่มแค่สาขา
อย่าเพิ่งแค่สาขาซึ่งในตารางนี้
กีฬา
จำได้ไหมคะ ที่รักจะเป็นคีย์ที่ขีดเส้นใต้
ซึ่งอาจารย์อยากเพิ่มสาขาสมุทรปราการจะเพิ่มบี
100
สกลนคร
ละครนะคะ
ถามว่าเพิ่มได้ไหม อาจจะเป็นการตั้งสาขาแต่ยังไม่มีพนักงานหรอก
ถ้าจากตารางนี้
เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้
เรายังไม่มีรหัสพนักงานเพราะรหัสพนักงานเป็นคีย์หลัก
ครีม
คือคุณสมบัติมันคือเป็นค่าว่างไม่ได้
ก็ทำให้เราเพิ่มสาขาไม่ได้
ไม่มีพนักงาน
อันนี้ก็เป็น
ข้อผิดพลาดในการเพิ่มข้อมูลถ้าเราออกแบบ
ตารางแบบนี้นะคะ
ก็คือกัน
ปัญหาที่เกิดขึ้นจากการออกแบบตารางที่ดี
กลับ
หาโตมาเป็นปัญหาการลบข้อมูลที่อาจารย์บอก
ถ้าพนักงานคนนี้
ออก
สาขาเชียงใหม่หายไปด้วย
ลบไป
กรณีความผิดพลาดจากการเปลี่ยนแปลง
เหมือน b03 b03 นะคะ
เป็นกรุงเทพฯใช่ไหมคะ
แล้วคราวนี้ข้อมูลมันอยู่ในตารางเดียวกัน
ถ้านักศึกษาจะแก้สมมุติว่าเราย้ายจากกรุงเทพฯไปอยู่นนทบุรี
สมมุติมีพนักงาน 300 คน
คุณต้องแก้กรุงเทพฯ 30 ครั้ง
นนทบุรี
พนักงานมีคนส่งคนไม่ใช่ปัญหาค่ะ แต่ถ้าคุณเป็นโรงงานขนาดใหญ่
นั่งแก้ทีละ 30 คนไม่ใช่เรื่องสนุกแน่ ๆ
มันก็เป็นปัญหานะคะ เพราะฉะนั้น
เราควรแยกตารางพนักงานกับตารางสาขาออกจากกันนะคะ มีเป็นเหตุผล
นี่คือ
ขนาดข้อมูลขนาดเล็กนะคะ แล้วยังเห็นปัญหาขนาดนี้ถ้าสมมุติว่า
องค์กรขนาดใหญ่เป็นบริษัทเป็นโรงงานระดับโรงเรียนมีนักเรียนเป็น 2 302 3000 คนก็ได้นะคะ
มีปัญหาเยอะมากถ้าสมมุติว่าเราจัดการตารางไม่ดี
จากปัญหาที่เกิดขึ้นเมื่อกี้นะคะ อย่างที่บอกค่ะ เราจะแก้ปัญหาโดยการแยกตารางเป็น 2 ตารางแบบนี้นะคะ
ฟังก์ชั่นการขึ้นต่อกันนะคะ อันนี้เดี๋ยว
เป็นเกี่ยวกับตารางนึ่งนะคะ มีผลดีต่อราง 1 เราจะเรียกว่าเป็นฟังก์ชันการขึ้นต่อกัน
เดี๋ยวดูตัวอย่างเลยละกัน
อย่างเช่นทางนี้นะคะ
ดูจากรหัสพนักงานนะคะ
เขียนได้ว่ารหัสพนักงาน
จะส่งผลกับชื่อ
ตำแหน่ง
สัญลักษณ์ของการขึ้นต่อกันนะคะ อันไหนเป็นตัวหลัก
ชี้ไปที่ตัวรองราคาตามหัวลูกศรเลย
ดูทิศทางตามหัวลูกศรนะคะ อันไหนเป็นตัวหลักอันไหนเป็นตัวรอง
นะคะ
เช่น
ตัวนี้ถามว่าตำแหน่งบัญชีที่รหัสพนักงานได้ไหม นะคะ ถามว่า
ไม่ได้
เพราะการขึ้นต่อการจะต้องเป็นลักษณะหนึ่งต่อหนึ่งเท่านั้น
เป็นหนึ่งต่อกลุ่มไม่ได้
ชนิดของการขึ้นต่อกันนะคะ จะมีอยู่ 4 ชนิดนะคะ
ชนิดแรกเป็นการขึ้นต่อกันโดยสมบูรณ์
นะคะ
ซึ่งอาจจะเป็นเกี่ยวกับ
ตารางนะคะ จะมีคอลัมน์
1 คอลัมน์หรือมากกว่า 1 คอลัมน์มาประกอบกัน
โดยในคอลัมน์นะเนี่ย
ค่าที่ระบุ
ความพิเศษ
ของแถว ๆ ได้อย่างชัดเจน
aprilia จะเป็นค่าเฉพาะที่บอกเลยว่า
คอร์ดข้อมูลแถวนั้นเนี่ยมันมีลักษณะพิเศษเฉพาะตัวยังไง
โดยในทุกความสัมพันธ์เนี่ยจะต้องระบุค่าคีย์หลักไว้ด้วย
ครึ่งปีหลังนี้คือต้องเป็นค่าเอกลักษณ์คือไม่ซ้ำกันอยู่แล้ว
นะคะ
อย่างเช่นการขึ้นต่อกันอย่างสมบูรณ์อันแรกนะคะ
ก็คือคอลัมน์ที่ไม่ใช่คีย์หลักกีฬา
จำได้ใช่ไหมคะ คีย์หลักจะเป็น
คอลัมน์ที่มีขีดเส้นใต้
คอลัมน์ที่ไม่ใช่คีย์หลักจะขึ้นตรงต่อคอลัมน์ที่เป็นคีย์หลัก
หมอลำเดียวเท่านั้น
เช่นเลขบัตรประชาชน
จะขึ้น
จะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ
เพราะฉะนั้นการขึ้นตัวกันอย่างสมบูรณ์จะเป็นลักษณะแบบหนึ่งต่อหนึ่งนะคะ เลขบัตรประชาชน 1 เลข
ต้องเป็นของคนคนเดียวเท่านั้น
ไม่ใช่ว่าเลขประชาชนที่ใช้ 10 คนเป็นไปไม่ได้นะคะ
ตัวอย่างนะคะ
ตารางที่มี Column หลายตัว
นะคะ
ขึ้นอยู่กับคีย์หลักตัวเดียวเช่น
คนหนึ่งคนเนี่ย
ก็จะมีข้อมูลชื่อนามสกุลวันเดือนปีเกิดวันที่ทำบัตรใช่ไหมคะ
แต่ว่า
เขาจะต้องขึ้นตรงกับเลขบัตรประชาชนเดียวเท่านั้นถามว่าสามคนนี้
อาจจะเกิดวันเดียวกันก็ได้ค่ะ
เลขบัตรประชาชนเขาจะไม่เหมือนกัน
หรือเขาอาจจะมาทำบัตรวันเดียวกัน
หมายเลขบัตรประชาชนเขาจะไม่ซ้ำกัน
คืออะไร ซ้ำกันได้ทุกอย่างค่ะ ยกเว้นหมายเลขบัตรประชาชน
แต่บางตารางนะคะ
ก็อาจจะเป็นการรวมตัวกันของกีฬา
มากกว่า 1 ปีหลักนะคะ
มารวมกันเช่นนักศึกษา
วันนี้
เอกสารนี้
ลงทะเบียนวิชานี้
ได้เกรดอะไร
อันนี้ก็เป็นความสัมพันธ์ที่เกิดขึ้นได้เหมือนกันค่ะ ว่าบัตรนักศึกษาซ้ำกันได้ไหม
รหัสวิชาซ้ำกันได้ไหม
เหมือนชื่อวิชาการ
รหัสนึง
เชื่อใจคนอื่นก็รหัสวิชาอีกอันนึง
นี้จะไม่ซ้ำกันอยู่แล้วนะคะ
ต่อมาจะเป็นการขึ้นต่อกันบางส่วน
มันก็จะเป็นอาศัยความสัมพันธ์ที่เกิดขึ้นจาก
วิธีผสมนะคะ อาจจะเป็น
เส้นตรงจากตารางอื่นหรือส่งตารางมารวมกัน
อาจจะไม่ใช่คีย์หลักก็ได้แต่มันมีความหมายกับ
คอลัมน์นึง
เดี๋ยวจะยกตัวอย่างเลยดีกว่า
อย่างเช่น
นึกว่าตารางเทียบไซส์ให้ดูเมื่อกี้นะคะ ก็จะมีรหัสนักศึกษารหัสวิชามีเกรด
แล้วก็
มีการบอกด้วยว่ารหัสวิชานี้เป็นชื่อวิชาอะไร
นะคะ
มันจะเป็นการเกิดขึ้นเมื่อ
กีฬา
ประกอบกันด้วย
คอลัมน์หรือว่า Accident รวมกัน
โดยบางส่วนของคีย์หลักสามารถไประบุค่าอย่างอื่น
ที่ไม่ใช่คีย์หลักได้
นะคะ อย่างเช่นในความสัมพันธ์นี้คีย์หลักจะมี 2 ตัว
มีรหัสนักศึกษา
รหัสวิชา
ถามว่า
ถ้ามีแต่
รหัสนักศึกษา
นะคะ
รหัสวิชา
แล้วเราจะรู้ไหมว่าชื่อวิชาที่เราเรียนไปเนี่ย
วิชาอะไร
บางคนรู้รหัสวิชาแต่จำชื่อวิชาไม่ได้ก็มี
เพราะฉะนั้นรหัสวิชาเนี่ยมันเลยสามารถ
ไปส่งผลกับชื่อวิชาได้เหมือนกันเพราะเป็นตัวระบุว่า
ไปหลายวิชาเนี่ย
ชื่อวิชาอะไร
ก็คือคีย์หลักในตารางนี้มี 2 อัน
แต่มีคีย์หลัก 1 ตัวเนี่ย
ไปมีผลกับ
แอตทริบิวต์ 1 ได้
นะคะ อันนี้คือความขึ้นต่อกันบางส่วน
อย่างเช่นตัวนี้ก็จะเป็นของจริงถ้าสูตรว่าอาจารย์ปัดรหัสนักศึกษาออก
มีแค่ 5 วิชามีเกรดมีการ
วิชาเขียนโปรแกรมแล้วถาม
รู้ไหมคะ ว่าเกรดเอที่ของใคร
นะคะ หรือว่า
อย่าลบไปเที่ยวก่อนนะ
หรือว่า
การลบรหัสวิชาออก
เหลือแต่นักศึกษาเหลือเกรด
ชื่อวิชาแล้วถามว่า
รหัสวิชาอะไรล่ะที่เราได้เกรด A
เราก็ไม่ทราบอีกเหมือนกันนะคะ อันนี้ก็คือ
การขึ้นต่อกันบางส่วน
เป็นการขึ้นต่อกันแบบส่งต่อ
ก็จะเป็นความสัมพันธ์ที่เกิดขึ้นก็ต่อเมื่อมีแอตทริบิวต์หรือว่าคนอื่นที่ไม่ใช่ครีม
แต่ไปสามารถ
ขึ้น
สามารถระบุค่าของแอตทริบิวต์อื่นใน Accord ได้
ซึ่งเป็นการออกแบบที่ไม่เหมาะสม
เพราะส่วนใหญ่แล้วในตารางเนี่ย
ถ้าเราจะระบุค่าอื่นให้กับ
คอลัมน์อื่นได้ควรจะต้องเป็นคีย์หลักเท่านั้น
ดูตัวอย่างนะคะ เช่นตารางเนี้ย
เขาบอกว่าสิ่งที่เกิดขึ้นคือแอตทริบิวต์คือคอลัมน์ที่ไม่ใช่คีย์หลักหรือ Primary Key นะคะ ก็คือไม่ใช่คอลัมน์ที่มีเส้นขีดมันไประบุค่าอื่น ๆ ในตารางได้เช่น
ตารางนี้ก็คือเลขประจำตัว
ตัวเลขประจำตัวเนี่ย
ไปมีผลกับชื่อนามสกุลที่อยู่ตำแหน่งใช่ไหมคะ
เขาเนี่ย
รถประจำตำแหน่ง
มันไม่ถูกระบุโดยเลขประจำตัว
มันถูกระบุโดยรหัสตำแหน่ง
เหมือนถ้าเป็นผู้จัดการเนี่ย
แผนที่ผู้จัดการนะคะ จะรู้เลยว่ารถประจำตำแหน่งคืออะไร
แต่เขาไปเช็คที่รหัสตำแหน่ง
แผนที่จะเช็คกับเลขประจําตัว
การออกแบบที่ไม่ดี
เพราะฉะนั้นถ้าสมมุติว่าจะให้รถประจำตำแหน่งวิธีการแก้ปัญหาก็คือ
เราควรจะแยก
ตารางนี้
ออกไปสร้างตารางใหม่เลยค่ะ
มันไม่ควรจะมาขึ้นกับตาราง
ขี้มีกี่หลัก
แต่ไม่สามารถระบุค่าข้อมูลตรงนี้ได้เนี่ยมันไม่ควรทำ
กลับต่อมาเป็นการขึ้นต่อการเชิงกลุ่ม
นะคะ
น่าจะเป็นความสัมพันธ์ระหว่างคอลัมน์ Matrix
ขึ้นต่อกันแบบสมบูรณ์นะคะ ก็ไปสามารถระบุค่าอื่นได้
โดยที่
อย่างเช่นตัวอย่าง
ในตารางนี้นะคะ จะมีรหัสหลักสูตร
สามารถระบุรหัสวิชาได้หลายวิชาเช่น
จริง ๆ ในสถานศึกษาจะเห็นได้ว่ามีเลข
122
รหัสนักศึกษา
B12 คืออะไร 12 ก็คือหลักสูตรที่เราเรียนอยู่
ซึ่งในหลักสูตรที่โรงเรียนเนี่ยมันมีวิชา
มากกว่า 20 วิชา
นะคะ
ก็คือรหัสหลักสูตรเนี่ยมันสามารถระบุรหัสวิชาได้หลากหลายรหัสวิชามาก ๆ
ก็คือการขึ้นต่อกันแบบ
มีค่ามากกว่า 1
รหัสหลักสูตร
สามารถระบุรหัสวิชาได้หลายค่านั่นเอง
แล้วรหัสหลักสูตร
ก็สามารถระบุค่ารหัสนักศึกษาได้หลายคนเช่นกัน
เหมือนตอนนี้หลักสูตรที่โรงเรียน
ศึกษาเกือบ 100 คน
รหัสหลักสูตรเดียวนะ
นะคะ
นี่คือความสัมพันธ์แบบสามารถระบุค่าได้มากกว่า 1 นั้นเองแบบไหนค่า
เพราะฉะนั้นวิธีการแก้ปัญหาของสิ่งที่เกิดขึ้นนะคะ เราเลยจะต้องมีการ
กระบวนการปรับบรรทัดฐานหรือว่ากระบวนการปรับปรุงโครงสร้างของฐานข้อมูลนะคะ ที่มีความซ้ำซ้อนกันให้อยู่ในรูปแบบที่เป็นบรรทัดฐานก็คือ
เป็นรูปแบบที่พร้อมที่จะเอาไปพัฒนาเป็นฐานข้อมูลได้
โดยหลักการนะคะ
ที่บอกมี 5 ระดับ
แต่ระดับ
ที่ 3 เนี่ยก็ถือว่าเพียงพอสำหรับการออกแบบฐานข้อมูลในปัจจุบันแล้ว
โดย
ที่รักของการทำงานนะคะ ท่านที่ 1 นะคะ
กำจัดกลุ่มของข้อมูลที่มีความซ้ำซ้อนกันออกไป
ขอแลกง่ายมาก ๆ
ง่ายที่สุดก็คือ 1 nf นะคะ
ต่อมาครั้งที่ 2 อยู่ 2 nf
จะกำจัด
การขึ้นต่อกันบางส่วนออก
อันสุดท้าย 3nf นะคะ
กำจัดการขึ้นต่อกันของแอตทริบิวต์ที่ไม่ใช่ครีม
เดี๋ยวจะมาดูทีละขั้น
มันจะต้องเป็นยังไงบ้าง
คนแรกง่ายที่สุดง่ายมาก ๆ นะคะ
ให้นักศึกษาจำกระบวนการหลัก ๆ จะมี 3 ข้อนะคะ
ขั้นตอนการแรกเลยดูก่อนว่า
คำซ้อนกันไหม
คำที่ 2 คือมันขึ้นต่อกันแค่บางส่วนหรือเปล่า
อันที่ 3 อันไหนไม่ใช่ครีม
แต่มันไปส่งผลกระทบกับข้อมูลอื่นได้หรือเปล่า
ดูอันดับที่ 1 ก่อน
วันที่ 1 ได้มาก
นะคะ ทุก ๆ
คอลัมน์ akashic Records
จะต้องเป็นค่า Single Value คือมีค่าเดียวเท่านั้น
จะใส่แบบนี้ไม่ได้
เพราะฉะนั้นข้อมูลทุกแถวจะต้องไม่มีค่าที่ซ้ำกัน
อย่างเนี้ย
นักศึกษาคนที่ 1
แน่นอนทั้ง 3
1 เทอมเนี่ยคุณลงทะเบียนประมาณ 6-7 วิชาใช่ไหมคะ
ข้อมูลมันก็จะเป็นแบบนี้
ถ้าเราไม่มีการทำน้ำทะเลสั้น
คราวนี้
ขั้นตอนที่ 1
เราจะ
ข้อมูลที่ซ้ำซ้อนกันออกวิธีการง่ายมากค่ะ คือแจ้งข้อมูลออกเป็นอย่างละแถวที่ไม่ซ้ำกัน
ดูตัวอย่างนะคะ
วิธีการทำ 1 n f ง่ายมากค่ะ ถ้าข้อมูลตัวไหนเป็นกลุ่มนะคะ
คนที่ 1 วิชา
ลงทะเบียนเรียน 3 วิชาใช่ไหมคะ คนที่ 2 มี 2 วิชา
สามารถทำในรูปแบบ 1nf ก็คือ
เอามันจะตายออกมาค่ะ
ย้ายข้อมูลพรุ่งนี้ออกมา
กระต่ายออกใช่ไหมคะ กระจายออก
ง่ายมาก
ข้อมูลพรุ่งนี้ก็ทำซ้ำลงมาทำซ้ำลงมา
สำโรงมา
ทำซ้ำลงมา
ถามว่าอ้าวตาเขาทำไม
ทำไม 001 มันซ้ำกันได้ล่ะ
แต่รหัสวิชาเขาไม่ซ้ำกันเห็นไหมค่ะ
เด็ก ๆ เลยง่ายมากค่ะ
ข้อมูลทำไมเป็นก้อนอย่างนี้เรากระจายออกมาเป็นแยกออกมาเป็นบรรทัดบรรทัดเลยแค่นั้นเอง
อย่างน้อยในข้อสอบ
ต้องทำเน็ตให้ได้
มันง่ายที่สุดแล้ว
นะคะ
ไม่ใช่ตัวนี้นะคะ ก็กระจายออกมา
แล้วคราวนี้ถ้าเรากระจายข้อมูลเรียบร้อยแล้วนะคะ
ว่าจะมาดูว่าในตารางนี้ค่ะ
มันมีตาราง
ของพนักงานใช่ไหมคะ
เขาจะมีคีย์หลัก 1 ตัวละ
แปลว่า
มันจะมีตัวนี้ค่ะ
ตัวที่ 1 ตัวที่ 2 ที่มีคุณสมบัติ
เป็นคีย์หลักได้
เราต้องแยกมันออก
ควรการนะคะ
ดูก่อนว่า
ตารางวิธีนะคะ สิ่งที่ขึ้นตรงกับคีย์หลักตัวนี้นะคะ ก็จะเป็นตัวที่ 1 ตัวที่ 2 ตัวที่ 3
สังเกตเราว่าที่รักมีตัวเดียว
ข้อมูลมีเยอะมาก
นะคะ ออกมาได้อันแรกเลย
รหัส
โปรเจคนะคะ แล้วก็ชื่อโปรเจคนะคะ ใครเป็นผู้จัดการเงินเดือนเท่าไหร่
งบประมาณเท่าไหร่
คือมันจะเชื่อมโยงกับ
ข้อมูลที่เป็นคีย์หลักก็คือ Project Code วันนี้
ส่วนตัวนี้เป็นคีย์คู่แข่ง
2 ตัว
ฉันสามารถทำหน้าที่เป็นคีย์หลักให้กับอย่างตัวนี้นะคะ
มันจะเป็นคีย์หลักให้กับชื่อของพนักงาน
อย่างตัวนี้
ว่าจะเป็นคีย์หลักสำหรับชื่อแผนก
ถามว่า
มันขึ้นตรงกับโปรเจค Code ไหม
ไม่
นะคะ
ฉะนั้นการทำขั้นตอนต่อมานะคะ ส่ง EMS
ขั้นตอนที่ 1
เราจะต้องทำ 1 f มาเรียบร้อยแล้วซึ่งได้ทักมา
แล้วก็ต้องมา
บัตรของการขึ้นต่อกันบางส่วนออก
ก็คือการ
กำจัด
บิวตี้ไม่ขึ้น
คีย์หลักของตารางนั้นเอง
จะออกนะคะ
อย่างเช่นตัวนี้นะคะ
การขึ้นต่อกันบางส่วนจะเห็นได้ว่า
รหัสวิชากับชื่อวิชา
มันไม่ขึ้นตรงกับรหัสนักศึกษาใช่ไหมคะ นี้จำได้นะลูกเดิม
หารูปเดิม
วิธีกำจัดปัญหาเราก็ดึงสิ่งที่มันเป็นปัญหาสิ่งที่มันไม่ขึ้นตรงกับคีย์หลักตัวนั้น
ไปสร้างตารางใหม่
สร้างตารางเพิ่ม
เอาสิ่งที่เป็นปัญหาออกมาไปใส่ตารางใหม่กำหนดคีย์หลักใหม่
ในตารางเดิม
นะคะ
เราก็เอาคีย์หลักของตารางใหม่ไปใส่
แค่นั้นเอง
วิธีการก็คือ
รูปนี้นะคะ
สิ่งที่เป็นปัญหาที่จะยกตัวอย่างคือรหัสวิชา
ชิชา
เพราะรหัสวิชามันไม่ได้ขึ้นตรงกับรหัสนักศึกษา
เพราะฉะนั้นไอ้สองตัวนี้คือสิ่งที่เป็นปัญหา
วิธีการแก้ปัญหาคือเราสร้างตารางผลการเรียนใหม่
สร้างตารางวิชาใหม่
เห็นไหมคะ
ตารางใหม่เราจะตัดชื่อวิชาออก
แต่ต้องเหลือ
รหัสวิชาไว้เพื่อให้เชื่อมโยงว่ารหัสวิชานี้มันชื่อวิชาอะไร
ตาราง 1
แค่นั้นเองนะคะ
ดีค่ะ
อันนี้เป็นตัวอย่างของการ
สารในรูปแบบของส่ง EMS
เดี๋ยววันนี้
จะให้ทำการบ้านเดี๋ยวค่อยย้อนกลับมาแล้วกันนะคะ
สอนภาษา
เดี๋ยวแก้แล้ว
ตาเมื่อกี้นะคะ
ขั้นตอนสุดท้ายนะคะ 3nf
นะคะ
โดยความสัมพันธ์นะคะ ก่อนที่จะทำเป็นสามเณรได้จะต้องทำ 2 อย่างนี้มาก่อน
หลักของการทำขั้นตอนที่ 3 คือ
ต้องเอาความสัมพันธ์ที่ไม่ใช่คีย์หลัก
ออกนะคะ
เช่นไม่ใช่คีย์หลักแต่ไม่มีผลกับ
คนอื่นไม่ได้นะคะ ไม่ได้
วิธีการแก้ปัญหาเช่นเดิมค่ะ สร้างตารางใหม่ขึ้นมา
แก้ปัญหานาน ๆ
อย่างเช่นในตัวอย่างนะคะ
รหัสพนักงานนะคะ
ชื่อสกุลรหัสแผนกชื่อแผนกเงินเดือน
จะเห็นได้ว่าในตารางนี้เนี่ยคีย์หลักก็คือรหัสพนักงาน
วันนี้รหัสแผนกกับชื่อแผนกติดมาด้วย
ซึ่งมันไม่ได้เกี่ยวกับรหัสพนักงานเลย
วิธีการแก้ปัญหาก็คือ
เอารหัสแผนก
ชื่อแผนก
ไปสร้างตารางใหม่
แต่ต้องยังคงรหัสแผนกไว้
ตารางเดิมนะคะ
เพื่อให้มันเชื่อมโยงได้ว่าไอ้แผนก a001 เนี่ยคือแผนกอะไร
อันนี้คือการแก้ปัญหาไม่ใช่คีย์หลักแต่ไปส่งผลกับคอลัมน์อื่น ๆ ในตารางนะคะ
เ***จริง ๆ แล้วอยากให้ลองทำในห้องมากกว่าแต่ด้วยสัปดาห์นี้มันมีข้อจำกัดเนาะก็ไม่เป็นไร
นี้เป็นตัวอย่างนะคะ
สรุปนะคะ วิธีการทำนกในชาติหรือว่าการปรับบรรทัดฐานนะคะ
ทุก ๆ ที่ทุก ๆ คนร่ำในแต่ละแถว
จะต้องมีค่าของข้อมูลเพียงค่าเดียวเท่านั้น
เช่นเวลาเรากรอกเบอร์โทรศัพท์
เรามีโทรศัพท์ 3 เบอร์ก็จริงแต่เราจะกรอกได้แค่เบอร์เดียว
ถ้าอยากใส่เบอร์ที่ 2 ที่ 3 ก็ต้องเพิ่มข้อมูลแถวใหม่ขึ้นมา
ตอบมา
2 SF
ก็
ปัญหาคือถ้ามีข้อมูลนะคะ ขอข้อมูลทุกตัวในตารางนั้นจะต้องขึ้นกับคีย์หลัก
ของตาราง
ตัวเดียวเท่านั้น
นะคะ
ข้อที่ 3 ถ้า
คอลัมน์ไหนที่ไม่ใช่คีย์หลัก
ฟ้าส่งผลกับคอลัมน์อื่นในตารางไม่ได้
เพราะฉะนั้น
ไปตลาดข้อ 1 นี้คือแค่กระต่ายตาราง
อันที่ 2 อันที่ 3 ถ้ามีปัญหา
เราต้องสร้างตารางใหม่
การบ้านเอางี้ดีกว่า
อาจารย์จะให้ทำน่าจะส่งวันนี้
เอาแค่
ข้อเดียวนะคะ ข้อเดียวพอเพราะว่าจริง ๆ อยากให้ทำในห้องเดี๋ยวสัปดาห์หน้าค่อยทำในห้อง
จะให้ลองทำดูก่อนว่าที่เรียนไปวันนี้
เข้าใจไหม
ถ้าทำเสร็จแล้วก็ค่อยเอามาส่ง
ตู้ส่งงานอาจารย์เอาเฉพาะข้อดีนะข้อเดียว
คนเดียวพอวันนี้คนเดียวพอนะคะ ส่งในเวลานี้แหละ
ให้ลองทำดูว่าเข้าใจไหมข้อนี้
ทำอย่างเงี้ยทำยังไงได้มาก ๆ เลย
การเว้นช่องว่างให้แล้ว
เติมมา
2 มิติ
คุณเห็นไหมว่า
มันมีรหัสวิชาเนี่ย
ชาเนี่ย
ต้องทำยังไงกับมัน
แยกมันออกมาซิแยกยังไง
เอาข้าวเหนียวก่อน
นะคะ แล้วลอง
ส่งมาให้อาจารย์ดูก่อนว่า
เข้าใจมากน้อยขนาดไหน
จริง ๆ
อยากให้เรียนในห้องมากกว่าแต่วันนี้ก็เอา
มานี้ก่อนแล้วกัน
ให้ทุกคนหายดีกลับมาอาทิตย์หน้าค่อย
เดินดูในห้องดีกว่า
วันนี้ก็
ประมาณนี้นะคะ เดี๋ยวเวลาที่เหลือให้ทำข้อนี้แล้วมาส่ง
วันนี้เลยยิ่งดี
เวลาที่เหลือทำใส่กระดาษมาส่งอาจารย์
แล้วกันเนาะ
ประมาณนี้ค่ะ เวลาที่เหลือทำให้เสร็จภายในวันนี้นะคะ
ข้อเดียวเองนะคะ ข้อเดียว
ใครสงสัยไหมคะ
อุ้ยสงสัยไหม
เปิดไม่ได้หรือเปล่า
ไม่มีค่ะ อาจารย์เดี๋ยวถ้ายังไงเดี๋ยวให้อุบลไปส่งหรือยังไงคะเพราะว่าบนขึ้น
ไม่ ๆ ส่วนมากอยู่ในการอยู่หอนี่แหละ
ตอนนี้เหลืออยู่ประมาณ
ใส่ได้ก็เอามา
Ok Thank You
วันนี้ก็ประมาณนี้ค่ะ ขอบคุณทุกคนมากนะคะ พี่
ยังตั้งใจเรียนอยู่แล้วก็งานอย่าลืมส่งวันนี้นะคะ อยู่ดี ๆ ก็
ทำให้เสร็จ
แล้วก็ฝากเพื่อนมาส่งรวมกันมาส่งก็ได้นะคะ ถ้าใครอยู่หอก็จะมาทำอยู่ดี ๆ ก็ได้หรือว่าทำเสร็จแล้วมาส่งที่
อาการก็ได้
โอเคค่ะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณล่างด้วยนะคะ
ค่าขอบคุณค่ะ
วันนี้ครบเนาะ
OK
ประมาณนี้
นะคะ
วันนี้จะเป็นบทที่ 5
เกี่ยวกับ
กระบวนการ
การปรับบรรทัดฐาน
ขาภาษาอังกฤษก็จะเป็นนกอะไร Season
มันก็จะมีความหมายแล้วก็จุดประสงค์ของการทำ
การปรับมาตรฐานนะคะ แล้วก็จะเกี่ยวกับ
ฟังก์ชั่นการขึ้นต่อการและกระบวนการในการทำนมคาร์เนชั่นด้วย
นะคะ
มี 3 ข้อวันนี้
โดยการประปาฐานนะคะ หรือว่านอนเมื่อไหร่แฟชั่นเนี่ยมันจะเป็นทฤษฎีที่
คนที่จะต้องออกแบบฐานข้อมูลเขาจะต้องมาแปลงข้อมูล
ข้อมูลอาจจะเป็นข้อมูลที่ซับซ้อน
นะคะ ให้มันง่าย
เข้าใจก็ง่าย
ใช้งานก็ง่ายแล้วก็ต้องเป็นระบบที่หลังจากออกแบบแล้วนำไปใช้งานจริงต้องเกิดปัญหาน้อยที่สุด
โดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานเนี่ยมันจะมี 3 ระดับ
จริง ๆ เราก็จะเรียกสั้น ๆ ว่า
ระดับแรกนึกว่า 1nf
2nf 3nf
ในระดับปริญญาตรีเนี่ย
ถึง 3ms ได้
ก็ถือว่าเก่งมากแล้ว
นะคะ
ถ้าเป็นระดับที่สูงขึ้นไปอีกก็จะถึงได้ถึง 5 nf เลย
นะคะ
อันนี้เป็น
แผนภาพกระบวนการทำงานนะคะ ก่อนที่เราจะมาทำกระบวนการปรับบรรทัดฐานได้เนี่ยมันก็ต้องวิเคราะห์ความต้องการของผู้ใช้งานก่อนว่าเขาต้อง
การระบุ
การฐานข้อมูลแบบไหนมีความต้องการใช้
ตารางกี่ตารางในฐานข้อมูลนะคะ
หลังจากนั้น
วาดรูป
แผนที่โรงเรียนอาทิตย์ที่แล้ว
นะคะ ว่าเป็นแผนภาพเพื่อให้เข้าใจว่า
สิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูล
มันตรงตามความต้องการหรือเปล่านะคะ
แต่รูปแบบของรูปที่เราวันอาทิตย์ที่แล้วเนี่ยมันจะยังเป็นรูปแบบที่
ยังไม่เป็นบรรทัดฐานหรือว่ายังไม่มีการจัดระเบียบความคิด
ข้อมูลที่ซ้ำซ้อนกันออกไปหรืออาจจะมีคีย์หลักที่มัน
ขอนแก่นนะคะ เราก็เลยจะต้องเอาข้อมูลจากที่เราว่าอาทิตย์ที่แล้วเนี่ย
เข้าสู่กระบวนการปรับพื้นฐานก่อน
ซึ่งอย่างที่บอก
เราทำแค่ถึง 3S เนี่ยก็
เก่งมากแล้ว
อย่างน้อย 2-3 นะคะ
ไอ้บอยคอร์ดกับสีเนี่ยไม่ทำก็ก็ก็รักไว้ได้นะคะ แต่อย่างน้อยต้องถึง
วัตถุประสงค์ของการปรับฐานนะคะ
แน่นอนลดความซ้ำซ้อนของข้อมูลก็คือถ้าข้อมูลมันซ้ำกันเนี่ยเราก็ต้องตัดออกไป
โครงสร้างเป็นสิ่งสำคัญมากเท่าไหร่เนื้อหาแล้วก็พื้นที่ในการเก็บข้อมูลอย่างมันก็จะเยอะ
ก็ทำให้สิ้นเปลือง
ประมาณเหมือนกัน
รวมถึงลดปัญหาความไม่ถูกต้องของข้อมูล
ข้อมูลเนี่ยนอกจากที่จะไม่เกิดความสอดคล้องกันแล้วเนี่ย
วันจันทร์อาจจะเกิดจากสาเหตุคือ
ถ้าเหมือนที่ตัดกระจกทุกอย่างก็คือถ้าเราเก็บข้อมูลหลาย ๆ ที่
นักศึกษา
เก็บข้อมูลที่คณะด้วยเก็บที่มหาลัยด้วยเก็บที่สาขาด้วยเนี่ยบางทีถ้าวันนึง
คุณอาจจะเปลี่ยนแปลงเบอร์โทรศัพท์
ที่บ้าน
ก็ต้องไปตามเปลี่ยนทุกที่เลย
นะคะ
ซึ่งเสียเวลาแล้วคราวนี้ก็จะเป็นที่เถียงกันว่าสรุปแล้วเบอร์ไหนถูกเบอร์ไหนผิด
โดยวัตถุประสงค์ของการปรับบรรทัดฐานก็คือข้อมูลจะถูกเก็บอยู่อย่างเดียว
ราคาเก็บไว้ที่เดียว
แต่สามารถเรียกใช้และใช้งานได้หลาย ๆ ที่พร้อมกันได้
แต่ถ้ามันมีการเปลี่ยนแปลงข้อมูลหรือมีการลบหรือการเพิ่มข้อมูล
เพื่อให้ข้อมูลเป็นปัจจุบันที่สุด
เราจะเก็บข้อมูลไว้ที่เดียว
แก้ไขก็ที่เดียว
เพราะฉะนั้นข้อมูลก็จะเป็นข้อมูลที่ถูกต้องแล้วก็
ปัจจุบันด้วย
แล้วก็
อย่างที่ใช้ในการเก็บข้อมูลที่เดียวเนี่ยมันก็จะลดความผิดพลาดที่เกิดจากการ
เปลี่ยนแปลงข้อมูลปรับปรุงข้อมูลนะคะ เหมือนที่บอกว่าคือ
ถ้าเปลี่ยนเบอร์โทรศัพท์หรือเปลี่ยนบ้านเลขที่นะคะ ก็เปลี่ยนแปลงที่เดียวเราสามารถเรียกใช้ข้อมูลได้
พร้อมกันถ้าต้องการข้อมูลนะคะ
ความซ้ำซ้อนกันของข้อมูลมันอาจจะเกิดความผิดพลาดของการปรับปรุงข้อมูลนะคะ
แนวคิดที่สำคัญของการออกแบบฐานข้อมูล
การออกแบบข้อมูลที่ซ้ำซ้อนกันน้อยที่สุด
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลแล้วก็ลดปัญหาที่จะเกิดขึ้น
ถ้าสมมุติว่าข้อมูลมันซ้ำซ้อนกันมากเกินไปหรือ
ปริมาณข้อมูลมันเยอะเกินไป
อย่างเช่นตัวอย่างนะคะตารางด้านบนตารางสีเทาข้างบน
จะเป็นตัวอย่างการออกแบบ
จะเห็นได้ว่า
ตาราง
พนักงาน
จะมีส่วนหนึ่งที่เป็นข้อมูลของรหัสสาขา
ก้อยไม่อยู่
ถามว่าทำไมไม่เอา
ข้อมูลสาขามาไว้ในตารางพนักงานทีเดียวเลยล่ะ
ทำไมต้องแยกออก
ถ้า
ศึกษาดูคนแรกนะคะ
พนักงานคนแรกรหัสสาขา b005
ก็คือสาขา
เชียงใหม่
ถ้าสมมุติว่าพนักงานคนที่ 1 ลาออก
ก็จะมีการลบข้อมูลเกิดขึ้นใช่ไหมคะ
มีการลบข้อมูล
บุคคลนี้หรอ
ขีดฆ่าทิ้ง
ฆ่าทิ้ง
123123123
สิ่งไหนที่หายไปบ้าง
แน่นอนสาขาเชียงใหม่จะหายไปด้วย
ถ้าสมมุติเราอยู่ด้วยกัน
แต่ถ้าสมมุติพนักงานคนนี้ลาออกสาขาเชียงใหม่ยังอยู่ไหม
ยังอยู่
นะคะ
ซึ่งแตกต่างจากด้านล่าง
ด้านล่าง
เห็นไหมคำว่า
ถ้าสมมุติว่าจะลบทิ้งหมดเลย
กากบาททิ้ง
สาขาเชียงใหม่หายไปด้วย
แบบที่ไม่ดี
เหมือน
คนข้างล่าง
ออก
สาขาพิษณุโลก
ก็หายไปด้วย
แต่ถ้าเป็นตารางด้านบน
ถ้าคนนี้ลาออก
สาขายังอยู่ไหม
ยังอยู่เหมือนเดิม
อันนี้คือการออกแบบฐานข้อมูลที่ดีถ้าข้อมูลตัวไหนที่มันมีผลกระทบต่อการเราจะต้องแยกตารางออก
ตัวอย่าง
นะคะ ถ้าการออกแบบที่ดีเนี่ยเราจะลด
ปัญหาความซ้ำซ้อนของข้อมูล
ได้
เช่นตัวนี้อันนี้เป็นตารางที่ออกแบบที่ไม่ดีนะคะ
เห็นไหมคะ ว่ามันจะมี
รหัสสาขา
แล้วก็ที่อยู่
อยู่ในตารางเดียวกัน
ถ้าสมมุติว่าอาจารย์เพิ่ม
เข้ามาใหม่อีก 1 คน
นะคะ
n e m
ถ้าต้องการเพิ่มพนักงานสาขา
เชียงใหม่ก็ต้องมากรอกข้อมูลตรงนี้อีก
เชียงใหม่ณโรงเรียนระโนด
แต่ถ้า
การออกแบบฐานข้อมูลที่ดีเนี่ย
เราแค่ใส่รหัสสาขา
ไม่จำเป็นจะต้องพิมพ์ที่อยู่ทุกครั้งก็ได้
เหมือนเวลาคุณไปธนาคารใช่ไหมคะ
คุณก็แค่ยื่นบัตรประชาชน
พนักงานธนาคารก็จะกรอกเลขบัตรประชาชนคุณนงไป
หรืออาจจะเอาชิปการ์ดของคุณเนี่ยเสียบเข้าไปในเครื่องถามว่าตอนนี้เราได้กรอกข้อมูลไหม
ขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างที่คุณมีเขาจะดึงออกมาจากระบบให้เลยเราไม่ต้องมาเสียเวลาก่อน
เหมือนเมื่อก่อนเนี่ยต้องเขียนใส่กระดาษและเลขบัตรประชาชนด้านรายชื่ออะไรนามสกุลอะไรที่อยู่ที่ไหนเบอร์โทรศัพท์อะไรเดี๋ยวนี้ไม่ต้องเลยขอแค่มีเลขบัตรประชาชนข้อมูลทุกอย่างเราสามารถดึงขึ้นมาได้อยู่แล้ว
อันนี้ก็เช่นเดียวกัน
ถ้าการออกแบบไม่ดีแต่เราต้องกรอกข้อมูลถูกต้องทุกช่องเลยเนี่ย
มันทำให้
อาจจะคนเดียวไม่เดือดร้อนค่ะ
ถ้าเป็นพนักงานใหม่เป็นเหมือนโรงงานน่ะค่ะ ที่รักพันคน
นั่งกรอก
เชียงใหม่เป็นพันครั้งเนี่ยเสียเวลามากๆ
อันนี้คือการออกแบบที่ไม่ดี
นะคะ
กลับอีกอย่างนึงถ้าสมมุติว่าเมื่อกี้อาจารย์เพิ่มพนักงานแล้ว
ถ้ามันอยากเพิ่มแค่สาขา
อย่าเพิ่งแค่สาขาซึ่งในตารางนี้
กีฬา
จำได้ไหมคะที่รักจะเป็นคีย์ที่ขีดเส้นใต้
ซึ่งอาจารย์อยากเพิ่มสาขาสมุทรปราการจะเพิ่มบี
100
สกลนคร
ละครนะคะ
ถ้าจากตารางนี้
เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้
เรายังไม่มีรหัสพนักงานเพราะรหัสพนักงานเป็นคีย์หลัก
ครีม
คือคุณสมบัติมันคือเป็นค่าว่างไม่ได้
ก็ทำให้เราเพิ่มสาขาไม่ได้
ไม่มีพนักงาน
อันนี้ก็เป็น
ข้อผิดพลาดในการเพิ่มข้อมูลถ้าเราออกแบบ
ตารางแบบนี้นะคะ
ก็คือกัน
ปัญหาที่เกิดขึ้นจากการออกแบบตารางที่ดี
กลับ
หาโตมาเป็นปัญหาการลบข้อมูลที่อาจารย์บอก
ถ้าพนักงานคนนี้
ออก
สาขาเชียงใหม่หายไปด้วย
ลบไป
กรณีความผิดพลาดจากการเปลี่ยนแปลง
เหมือน b03 b03 นะคะ
เป็นกรุงเทพฯใช่ไหมคะ
แล้วคราวนี้ข้อมูลมันอยู่ในตารางเดียวกัน
ถ้านักศึกษาจะแก้สมมุติว่าเราย้ายจากกรุงเทพฯไปอยู่นนทบุรี
สมมุติมีพนักงาน 300 คน
คุณต้องแก้กรุงเทพฯ 30 ครั้ง
นนทบุรี
พนักงานมีคนส่งคนไม่ใช่ปัญหาค่ะแต่ถ้าคุณเป็นโรงงานขนาดใหญ่
นั่งแก้ทีละ 30 คนไม่ใช่เรื่องสนุกแน่ๆ
มันก็เป็นปัญหานะคะเพราะฉะนั้น
เราควรแยกตารางพนักงานกับตารางสาขาออกจากกันนะคะมีเป็นเหตุผล
นี่คือ
ขนาดข้อมูลขนาดเล็กนะคะแล้วยังเห็นปัญหาขนาดนี้ถ้าสมมุติว่า
องค์กรขนาดใหญ่เป็นบริษัทเป็นโรงงานระดับโรงเรียนมีนักเรียนเป็น 2 302 3000 คนก็ได้นะคะ
มีปัญหาเยอะมากถ้าสมมุติว่าเราจัดการตารางไม่ดี
จากปัญหาที่เกิดขึ้นเมื่อกี้นะคะอย่างที่บอกค่ะเราจะแก้ปัญหาโดยการแยกตารางเป็น 2 ตารางแบบนี้นะคะ
ฟังก์ชั่นการขึ้นต่อกันนะคะอันนี้เดี๋ยว
เป็นเกี่ยวกับตารางนึ่งนะคะมีผลดีต่อราง 1 เราจะเรียกว่าเป็นฟังก์ชันการขึ้นต่อกัน
เดี๋ยวดูตัวอย่างเลยละกัน
อย่างเช่นทางนี้นะคะ
ดูจากรหัสพนักงานนะคะ
เขียนได้ว่ารหัสพนักงาน
จะส่งผลกับชื่อ
ตำแหน่ง
สัญลักษณ์ของการขึ้นต่อกันนะคะอันไหนเป็นตัวหลัก
ชี้ไปที่ตัวรองราคาตามหัวลูกศรเลย
ดูทิศทางตามหัวลูกศรนะคะอันไหนเป็นตัวหลักอันไหนเป็นตัวรอง
นะคะ
เช่น
ตัวนี้ถามว่าตำแหน่งบัญชีที่รหัสพนักงานได้ไหมนะคะถามว่า
ไม่ได้
เพราะการขึ้นต่อการจะต้องเป็นลักษณะหนึ่งต่อหนึ่งเท่านั้น
เป็นหนึ่งต่อกลุ่มไม่ได้
ชนิดของการขึ้นต่อกันนะคะจะมีอยู่ 4 ชนิดนะคะ
ชนิดแรกเป็นการขึ้นต่อกันโดยสมบูรณ์
นะคะ
ซึ่งอาจจะเป็นเกี่ยวกับ
ตารางนะคะจะมีคอลัมน์
1 คอลัมน์หรือมากกว่า 1 คอลัมน์มาประกอบกัน
โดยในคอลัมน์นะเนี่ย
ค่าที่ระบุ
ความพิเศษ
ของแถวๆได้อย่างชัดเจน
aprilia จะเป็นค่าเฉพาะที่บอกเลยว่า
คอร์ดข้อมูลแถวนั้นเนี่ยมันมีลักษณะพิเศษเฉพาะตัวยังไง
โดยในทุกความสัมพันธ์เนี่ยจะต้องระบุค่าคีย์หลักไว้ด้วย
ครึ่งปีหลังนี้คือต้องเป็นค่าเอกลักษณ์คือไม่ซ้ำกันอยู่แล้ว
นะคะ
อย่างเช่นการขึ้นต่อกันอย่างสมบูรณ์อันแรกนะคะ
ก็คือคอลัมน์ที่ไม่ใช่คีย์หลักกีฬา
จำได้ใช่ไหมคะคีย์หลักจะเป็น
คอลัมน์ที่มีขีดเส้นใต้
คอลัมน์ที่ไม่ใช่คีย์หลักจะขึ้นตรงต่อคอลัมน์ที่เป็นคีย์หลัก
หมอลำเดียวเท่านั้น
เช่นเลขบัตรประชาชน
จะขึ้น
จะเป็นเจ้าของชื่อนี้เท่านั้นนะคะ
เพราะฉะนั้นการขึ้นตัวกันอย่างสมบูรณ์จะเป็นลักษณะแบบหนึ่งต่อหนึ่งนะคะเลขบัตรประชาชน 1 เลข
ต้องเป็นของคนคนเดียวเท่านั้น
ไม่ใช่ว่าเลขประชาชนที่ใช้ 10 คนเป็นไปไม่ได้นะคะ
ตัวอย่างนะคะ
ตารางที่มี Column หลายตัว
นะคะ
ขึ้นอยู่กับคีย์หลักตัวเดียวเช่น
คนหนึ่งคนเนี่ย
ก็จะมีข้อมูลชื่อนามสกุลวันเดือนปีเกิดวันที่ทำบัตรใช่ไหมคะ
แต่ว่า
เขาจะต้องขึ้นตรงกับเลขบัตรประชาชนเดียวเท่านั้นถามว่าสามคนนี้
อาจจะเกิดวันเดียวกันก็ได้ค่ะ
เลขบัตรประชาชนเขาจะไม่เหมือนกัน
หรือเขาอาจจะมาทำบัตรวันเดียวกัน
หมายเลขบัตรประชาชนเขาจะไม่ซ้ำกัน
คืออะไรซ้ำกันได้ทุกอย่างค่ะยกเว้นหมายเลขบัตรประชาชน
แต่บางตารางนะคะ
ก็อาจจะเป็นการรวมตัวกันของกีฬา
มากกว่า 1 ปีหลักนะคะ
มารวมกันเช่นนักศึกษา
วันนี้
เอกสารนี้
ลงทะเบียนวิชานี้
ได้เกรดอะไร
อันนี้ก็เป็นความสัมพันธ์ที่เกิดขึ้นได้เหมือนกันค่ะว่าบัตรนักศึกษาซ้ำกันได้ไหม
รหัสวิชาซ้ำกันได้ไหม
เหมือนชื่อวิชาการ
รหัสนึง
เชื่อใจคนอื่นก็รหัสวิชาอีกอันนึง
นี้จะไม่ซ้ำกันอยู่แล้วนะคะ
ต่อมาจะเป็นการขึ้นต่อกันบางส่วน
มันก็จะเป็นอาศัยความสัมพันธ์ที่เกิดขึ้นจาก
วิธีผสมนะคะอาจจะเป็น
เส้นตรงจากตารางอื่นหรือส่งตารางมารวมกัน
อาจจะไม่ใช่คีย์หลักก็ได้แต่มันมีความหมายกับ
คอลัมน์นึง
เดี๋ยวจะยกตัวอย่างเลยดีกว่า
อย่างเช่น
นึกว่าตารางเทียบไซส์ให้ดูเมื่อกี้นะคะก็จะมีรหัสนักศึกษารหัสวิชามีเกรด
แล้วก็
มีการบอกด้วยว่ารหัสวิชานี้เป็นชื่อวิชาอะไร
นะคะ
มันจะเป็นการเกิดขึ้นเมื่อ
กีฬา
ประกอบกันด้วย
คอลัมน์หรือว่า Accident รวมกัน
โดยบางส่วนของคีย์หลักสามารถไประบุค่าอย่างอื่น
ที่ไม่ใช่คีย์หลักได้
นะคะอย่างเช่นในความสัมพันธ์นี้คีย์หลักจะมี 2 ตัว
มีรหัสนักศึกษา
รหัสวิชา
ถามว่า
ถ้ามีแต่
รหัสนักศึกษา
นะคะ
รหัสวิชา
แล้วเราจะรู้ไหมว่าชื่อวิชาที่เราเรียนไปเนี่ย
วิชาอะไร
บางคนรู้รหัสวิชาแต่จำชื่อวิชาไม่ได้ก็มี
เพราะฉะนั้นรหัสวิชาเนี่ยมันเลยสามารถ
ไปส่งผลกับชื่อวิชาได้เหมือนกันเพราะเป็นตัวระบุว่า
ไปหลายวิชาเนี่ย
ชื่อวิชาอะไร
ก็คือคีย์หลักในตารางนี้มี 2 อัน
แต่มีคีย์หลัก 1 ตัวเนี่ย
ไปมีผลกับ
แอตทริบิวต์ 1 ได้
นะคะอันนี้คือความขึ้นต่อกันบางส่วน
อย่างเช่นตัวนี้ก็จะเป็นของจริงถ้าสูตรว่าอาจารย์ปัดรหัสนักศึกษาออก
มีแค่ 5 วิชามีเกรดมีการ
วิชาเขียนโปรแกรมแล้วถาม
รู้ไหมคะว่าเกรดเอที่ของใคร
นะคะหรือว่า
อย่าลบไปเที่ยวก่อนนะ
หรือว่า
การลบรหัสวิชาออก
เหลือแต่นักศึกษาเหลือเกรด
ชื่อวิชาแล้วถามว่า
รหัสวิชาอะไรล่ะที่เราได้เกรด A
เราก็ไม่ทราบอีกเหมือนกันนะคะอันนี้ก็คือ
การขึ้นต่อกันบางส่วน
เป็นการขึ้นต่อกันแบบส่งต่อ
ก็จะเป็นความสัมพันธ์ที่เกิดขึ้นก็ต่อเมื่อมีแอตทริบิวต์หรือว่าคนอื่นที่ไม่ใช่ครีม
แต่ไปสามารถ
ขึ้น
สามารถระบุค่าของแอตทริบิวต์อื่นใน Accord ได้
ซึ่งเป็นการออกแบบที่ไม่เหมาะสม
เพราะส่วนใหญ่แล้วในตารางเนี่ย
ถ้าเราจะระบุค่าอื่นให้กับ
คอลัมน์อื่นได้ควรจะต้องเป็นคีย์หลักเท่านั้น
ดูตัวอย่างนะคะเช่นตารางเนี้ย
เขาบอกว่าสิ่งที่เกิดขึ้นคือแอตทริบิวต์คือคอลัมน์ที่ไม่ใช่คีย์หลักหรือ Primary Key นะคะก็คือไม่ใช่คอลัมน์ที่มีเส้นขีดมันไประบุค่าอื่นๆในตารางได้เช่น
ตารางนี้ก็คือเลขประจำตัว
ตัวเลขประจำตัวเนี่ย
ไปมีผลกับชื่อนามสกุลที่อยู่ตำแหน่งใช่ไหมคะ
เขาเนี่ย
รถประจำตำแหน่ง
มันไม่ถูกระบุโดยเลขประจำตัว
มันถูกระบุโดยรหัสตำแหน่ง
เหมือนถ้าเป็นผู้จัดการเนี่ย
แผนที่ผู้จัดการนะคะจะรู้เลยว่ารถประจำตำแหน่งคืออะไร
แต่เขาไปเช็คที่รหัสตำแหน่ง
แผนที่จะเช็คกับเลขประจําตัว
การออกแบบที่ไม่ดี
เพราะฉะนั้นถ้าสมมุติว่าจะให้รถประจำตำแหน่งวิธีการแก้ปัญหาก็คือ
เราควรจะแยก
ตารางนี้
ออกไปสร้างตารางใหม่เลยค่ะ
มันไม่ควรจะมาขึ้นกับตาราง
ขี้มีกี่หลัก
แต่ไม่สามารถระบุค่าข้อมูลตรงนี้ได้เนี่ยมันไม่ควรทำ