บทสรุปฐานข้อมูล
🤔 จะทำงานได้ต้องรู้เรื่องฐานข้อมูลแค่ไหนกันนะ ?
Last updated
Was this helpful?
🤔 จะทำงานได้ต้องรู้เรื่องฐานข้อมูลแค่ไหนกันนะ ?
Last updated
Was this helpful?
ในรอบนี้ ดช.แมวน้ำ จะมาสรุป ความรู้ขั้นต่ำสุด
ในการทำงานกับฐานข้อมูล ในระดับที่เอาไปทำงานจริงได้
ให้เพื่อนๆได้เข้าใจกันว่า การทำงานและการออกแบบฐานข้อมูล เขามีวิธีคิด วิธีออกแบบยังไงบ้าง ซึ่งคนไม่มีความรู้เรื่องนี้เลยก็สามารถเข้าใจได้ง่ายๆแน่นอนฮ๊าฟ
คำเตือน ความรู้ที่จะสอนต่อไปนี้น่าจะเรียกได้ว่า ถ้าไม่รู้เรื่องพวกนี้ ก็น่าจะไปสายอาชีพนี้ได้ยากม๊วก ดังนั้นลองเช็คคร่าวๆหน่อยว่ามีข้อไหนที่ตัวเองยังตกหรือเปล่า
เกร็ดความรู้ Database ในโลกปัจจุบันนั้นมีทั้งหมด 4 ตระกูลหลัก Graph, Key-Value store, Document database, Column store ซึ่งแต่ละตระกูลนั้นมันเก่งคนละด้านกัน ซึ่งในรอบนี้เราจะมาเรียนการออกแบบโดยใช้ database ที่ทั่วโลกยังคงนิยมใช้กันอยู่นั่นคือ Relational Database นั่นเอง ซึ่งถ้าเราเข้าใจการออกแบบตัวนี้แล้ว ก็น่าจะแก้ปัญหาได้ 90% ของโลกใบนี้ได้แล้วล่ะ ส่วนที่เหลืออีก 10% คือกรณีพิเศษที่เราจำเป็นต้องไปใช้ตระกูลอื่นๆนั่นเอง ดังนั้นเรียนตัวนี้ไปก่อนก็ไม่เสียหาย เพราะมันยังเป็นพื้นฐานในการคิดของตระกูลอื่นๆด้วยนั่นเอง
เวลาที่เราทำแอพอะไรก็ตามแต่ ถ้าแอพของเรามีการบันทึกข้อมูลของผู้ใช้เอาไว้ เช่น เก็บชื่อผู้ใช้ เก็บที่อยู่ บลาๆ นั่นหมายความว่าเราต้องเอาข้อมูลพวกนั้นไปเซฟเก็บไว้ซักที่ ชิมิ? โดยที่ๆเราเอาข้อมูลพวกนั้นไปเซฟไว้นั่นแหละคือ ฐานข้อมูลรูปแบบหนึ่งนั่นเอง เช่น บันทึกเป็นไฟล์เก็บไว้ หรือเชื่อมต่อไปยัง Database ชนิดต่างๆยังไงก็ตาม สิ่งที่แรกเราควรรู้ก่อนทำงานกับฐานข้อมูลก็คือ 💖 วิธีการออกแบบฐานข้อมูล
ซึ่งขั้นตอนในการออกแบบ ดช.แมวน้ำ ได้แยกออกเป็นเรื่องๆด้านล่างไว้เรียบร้อยแล้วครัช
การออกแบบ Database เริ่มต้นที่การ ลองมโนสิ่งที่เก็บในระบบออกมา
แล้วลองเขียนลงกระดาษเล่นดู ซึ่งอยากฟุ้งซ่านแค่ไหนก็จัดเต็มได้เลย ตามในวีดีโอด้านล่าง
หลังจากที่ฟุ้งซ่านเสร็จเราก็เอาทั้งหมดมาลองจัดกลุ่มดู
จัดผิดจัดถูกก็ทำๆไปเถอะ และหลังจากที่จัดกลุ่มเสร็จ เราก็จะมาดูว่าข้อมูลที่อยู่ในแต่ละกลุ่มนั้น มันจำเป็นต่อระบบหรือเปล่า?
ซึ่งอันไหนที่เราคิดว่ามันไม่จำเป็นเราก็ไล่ลบของพวกนั้นทิ้งไปซะ
ตัดๆทิ้งไปก่อน ถ้ามันจะเป็นเดี๋ยวมันก็กลับมาเอง ส่วนที่ลิสต์ไว้จะถูกกลุ่มหรือเปล่าก็ช่างมัน เดี๋ยวทำไปเรื่อยๆก็จะรู้เองเช่นกัน
หลังจากที่จัดกลุ่มเสร็จหมดละ ถัดไปเราก็จะ จำลองข้อมูล
กันเล่นๆ เพื่อที่จะดูว่าสิ่งที่เราคิดไว้มันดูแล้วโอเคหรือเปล่า ซึ่งถ้าดูแล้วมันพอที่จะใช้ได้อยู่ ถัดไปเราก็จะต้องทำการสร้าง Primary Key
ให้มัน เพื่อให้เราสามารถสั่งดำเนินการต่างๆได้ถูก record ที่เราอยากจะทำ
คราวนี้เราก็จะมาดูความสัมพันธ์ของตารางแต่ละตัวกัน ซึ่งหลักๆจะมีทั้งหมด 3 รูปแบบคือ 1:1
, 1:Many
และ Many:Many
โดยที่ความสัมพันธ์แต่ละรูปแบบนั้นก็จะมีวิธีในการออกแบบที่แตกต่างกันไป ตามในวีดีโอด้านล่าง
ความสัมพันธ์
การออกแบบ
1:1
เลือก Primary Key ของตารางไหนก็ได้ ไปใส่อีกตารางหนึ่ง เพื่อใช้เป็น Foreign Key
1:Many
เลือก Primary Key ของตารางที่เป็น 1 ไปใส่ในตารางที่เป็น Many เพื่อนำไปเป็น Foreign Key
Many:Many
สร้างตารางใหม่ขึ้นมา โดยนำ Primary Key ของทั้ง 2 ตารางเข้าไปในตารางใหม่
เพื่อนำไปเป็น Foreign Key และแนะนำให้สร้าง Primary Key ของตัวเองขึ้นมาด้วย
จากขั้นตอนทั้งหมดที่ทำไปด้านบน เราจะถือว่าเป็นการออกแบบฐานข้อมูลแบบกากๆ ยังไม่เหมาะสมที่จะเอาไปใช้งานจริง เพราะมันจะมีหลายอย่างที่ทำให้เราทำงานกับฐานข้อมูลได้ยาก เช่น ของบางอย่างไม่ควรอยู่ในตารางนั้น หรือ มันมีข้อมูลซ้ำกันอยู่เต็มไปหมด ดังนั้นในรอบนี้เราจะมาใช้หลัก Normalization
เพื่อที่จะลดปัญหาที่ว่ามาพวกนั้นดูละกัน
Tips การใช้งานจริง
Denormalization
Bottlenecks
Paging
Calculation value
Lean computations
Design Document database (MongoDB) เดี๋ยวเปิดสอนการทำ MongoDb เป็นอีกคอร์สเลยละกัน
คิดไรได้เดี๋ยวเอามาใส่ต่อ
บทความนี้กำลังทำอยู่ คาดว่าจะเสร็จราวๆวันอาทิตย์ที่ 23/02/2020 นี้แหละ ส่วนใครที่ไม่อยากพลาดอัพเดทก็เข้าไปกดติดตามที่ลิงค์นี้ ได้เลย และถ้าช่วยกดแชร์ด้วยจะเป็นพระคุณอย่างมากครัช