You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/th/2-Working-With-Data/05-relational-databases
localizeflow[bot] c8ba6c6e53
chore(i18n): sync translations with latest source changes (chunk 1/1, 213 changes)
1 month ago
..
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 213 changes) 1 month ago
assignment.md chore(i18n): sync translations with latest source changes (chunk 1/1, 213 changes) 1 month ago

README.md

การทำงานกับข้อมูล: ฐานข้อมูลเชิงสัมพันธ์

 Sketchnote โดย (@sketchthedocs)
การทำงานกับข้อมูล: ฐานข้อมูลเชิงสัมพันธ์ - Sketchnote โดย @nitya

มีโอกาสที่คุณเคยใช้สเปรดชีตในอดีตเพื่อเก็บข้อมูล คุณมีชุดของแถวและคอลัมน์ โดยที่แถวเก็บข้อมูล (หรือข้อมูล) และคอลัมน์อธิบายข้อมูล (บางครั้งเรียกว่าข้อมูลเมตา) ฐานข้อมูลเชิงสัมพันธ์ถูกสร้างขึ้นบนหลักการพื้นฐานนี้ของคอลัมน์และแถวในตาราง ทำให้คุณสามารถมีข้อมูลกระจายอยู่ในหลายตารางได้ ซึ่งช่วยให้คุณทำงานกับข้อมูลที่ซับซ้อนมากขึ้น หลีกเลี่ยงการทำซ้ำ และมีความยืดหยุ่นในการสำรวจข้อมูล มาสำรวจแนวคิดของฐานข้อมูลเชิงสัมพันธ์กัน

แบบทดสอบก่อนบรรยาย

ทุกอย่างเริ่มต้นด้วยตาราง

ฐานข้อมูลเชิงสัมพันธ์มีแกนหลักเป็นตาราง เช่นเดียวกับสเปรดชีต ตารางคือการรวบรวมของคอลัมน์และแถว แถวเก็บข้อมูลหรือข้อมูลที่เราต้องการทำงานด้วย เช่น ชื่อเมืองหรือปริมาณฝนตก คอลัมน์อธิบายข้อมูลที่เก็บไว้

เรามาเริ่มต้นการสำรวจด้วยการสร้างตารางเพื่อเก็บข้อมูลเกี่ยวกับเมือง เราอาจเริ่มด้วยชื่อและประเทศ คุณสามารถเก็บข้อมูลนี้ในตารางดังนี้:

City Country
Tokyo Japan
Atlanta United States
Auckland New Zealand

สังเกตชื่อคอลัมน์ city, country และ population ที่อธิบายข้อมูลที่เก็บไว้ และแต่ละแถวมีข้อมูลเกี่ยวกับเมืองหนึ่งเมือง

ข้อจำกัดของวิธีการใช้ตารางเดียว

มีโอกาสที่ตารางข้างต้นดูคุ้นเคยกับคุณ ลองเพิ่มข้อมูลเพิ่มเติมในฐานข้อมูลที่กำลังเติบโตของเรา — ปริมาณฝนรายปี (เป็นมิลลิเมตร) เราจะเน้นปี 2018, 2019 และ 2020 หากเราเพิ่มข้อมูลสำหรับโตเกียว อาจดูเหมือนดังนี้:

City Country Year Amount
Tokyo Japan 2020 1690
Tokyo Japan 2019 1874
Tokyo Japan 2018 1445

คุณสังเกตอะไรเกี่ยวกับตารางของเรา? คุณอาจสังเกตว่าเรากำลังทำซ้ำชื่อและประเทศของเมืองซ้ำๆ นั่นอาจใช้พื้นที่เก็บข้อมูลมาก และไม่จำเป็นต้องมีสำเนาหลายชุดเลย เพราะโตเกียวมีชื่อเดียวที่เราสนใจ

โอเค ลองทำอย่างอื่นดู ลองเพิ่มคอลัมน์ใหม่สำหรับแต่ละปี:

City Country 2018 2019 2020
Tokyo Japan 1445 1874 1690
Atlanta United States 1779 1111 1683
Auckland New Zealand 1386 942 1176

แม้ว่าวิธีนี้จะหลีกเลี่ยงการทำซ้ำแถว แต่ก็เพิ่มความท้าทายอื่นๆ เราต้องแก้ไขโครงสร้างของตารางทุกครั้งที่มีปีใหม่ นอกจากนี้ เมื่อข้อมูลของเราเติบโต การมีปีเป็นคอลัมน์จะทำให้การดึงข้อมูลและคำนวณค่าทำได้ยากขึ้น

นี่คือเหตุผลที่เราต้องมีหลายตารางและความสัมพันธ์ โดยการแยกข้อมูลออก เราสามารถหลีกเลี่ยงการทำซ้ำและมีความยืดหยุ่นมากขึ้นในการทำงานกับข้อมูลของเรา

แนวคิดของความสัมพันธ์

กลับมาที่ข้อมูลของเราและกำหนดวิธีการแยกข้อมูล เรารู้ว่าเราต้องเก็บชื่อและประเทศของเมือง ดังนั้นสิ่งนี้น่าจะเหมาะสมที่สุดในตารางเดียว

City Country
Tokyo Japan
Atlanta United States
Auckland New Zealand

แต่ก่อนที่เราจะสร้างตารางถัดไป เราต้องหาวิธีอ้างอิงแต่ละเมือง เราต้องมีรูปแบบของตัวระบุ, ID หรือ (ในคำศัพท์ทางเทคนิคของฐานข้อมูล) กุญแจหลัก กุญแจหลักคือค่าที่ใช้ระบุแถวเฉพาะในตาราง แม้ว่าสิ่งนี้อาจขึ้นอยู่กับค่าตัวเอง (เช่น เราอาจใช้ชื่อเมือง) แต่มันควรจะเป็นตัวเลขหรือตัวระบุอื่นๆ เสมอ เราไม่ต้องการให้ id เปลี่ยนแปลงเพราะจะทำให้ความสัมพันธ์เสียหาย คุณจะพบว่าในกรณีส่วนใหญ่กุญแจหลักหรือ id จะเป็นตัวเลขที่สร้างขึ้นโดยอัตโนมัติ

กุญแจหลักมักย่อว่า PK

cities

city_id City Country
1 Tokyo Japan
2 Atlanta United States
3 Auckland New Zealand

คุณจะสังเกตว่าเราใช้คำว่า "id" และ "กุญแจหลัก" สลับกันในบทเรียนนี้ แนวคิดที่นี่ใช้กับ DataFrames ซึ่งคุณจะได้สำรวจในภายหลัง DataFrames ไม่ใช้คำว่า "กุญแจหลัก" อย่างไรก็ตามคุณจะสังเกตว่าพฤติกรรมของมันคล้ายกันมาก

เมื่อเราสร้างตาราง cities แล้ว มาลองเก็บข้อมูลปริมาณฝนแทน แทนที่จะทำซ้ำข้อมูลเต็มของเมือง เราสามารถใช้ id ได้ เราควรแน่ใจว่าตารางที่สร้างขึ้นใหม่มีคอลัมน์ id ด้วย เพราะทุกตารางควรมี id หรือกุญแจหลัก

rainfall

rainfall_id city_id Year Amount
1 1 2018 1445
2 1 2019 1874
3 1 2020 1690
4 2 2018 1779
5 2 2019 1111
6 2 2020 1683
7 3 2018 1386
8 3 2019 942
9 3 2020 1176

สังเกตคอลัมน์ city_id ภายในตาราง rainfall ที่สร้างขึ้นใหม่ คอลัมน์นี้เก็บค่าที่อ้างอิงถึง ID ในตาราง cities ในคำศัพท์ทางเทคนิคของข้อมูลเชิงสัมพันธ์ นี่เรียกว่า foreign key; คือกุญแจหลักจากตารางอื่น คุณสามารถคิดว่ามันเป็นการอ้างอิงหรือชี้ไปยังข้อมูล city_id 1 อ้างอิงถึงโตเกียว

[!NOTE]
foreign key มักย่อว่า FK

การดึงข้อมูล

เมื่อข้อมูลของเราแยกออกเป็นสองตาราง คุณอาจสงสัยว่าเราจะดึงข้อมูลอย่างไร หากเราใช้ฐานข้อมูลเชิงสัมพันธ์ เช่น MySQL, SQL Server หรือ Oracle เราสามารถใช้ภาษาที่เรียกว่า Structured Query Language หรือ SQL SQL (บางครั้งออกเสียงว่า sequel) เป็นภาษามาตรฐานที่ใช้ดึงและแก้ไขข้อมูลในฐานข้อมูลเชิงสัมพันธ์

ในการดึงข้อมูล คุณใช้คำสั่ง SELECT โดยพื้นฐานแล้ว คุณ เลือก คอลัมน์ที่ต้องการดู จาก ตารางที่เก็บข้อมูลนั้น หากคุณต้องการแสดงชื่อเมืองเท่านั้น คุณสามารถใช้คำสั่งดังนี้:

SELECT city
FROM cities;

-- Output:
-- Tokyo
-- Atlanta
-- Auckland

SELECT คือที่ที่คุณระบุคอลัมน์ และ FROM คือที่ที่คุณระบุตาราง

[!NOTE]
ไวยากรณ์ SQL ไม่สนใจตัวพิมพ์เล็กหรือใหญ่ หมายความว่า select และ SELECT มีความหมายเหมือนกัน อย่างไรก็ตาม ขึ้นอยู่กับประเภทของฐานข้อมูลที่คุณใช้ คอลัมน์และตารางอาจแยกแยะตัวพิมพ์เล็กใหญ่ได้ ดังนั้นจึงเป็นแนวปฏิบัติที่ดีในการปฏิบัติต่อทุกอย่างในโปรแกรมมิ่งเหมือนกับว่ามันแยกแยะตัวพิมพ์เล็กใหญ่ เมื่อเขียนคำสั่ง SQL มักนิยมเขียนคำสำคัญเป็นตัวพิมพ์ใหญ่ทั้งหมด

คำสั่งข้างต้นจะแสดงเมืองทั้งหมด ลองนึกภาพว่าเราต้องการแสดงเฉพาะเมืองในนิวซีแลนด์ เราต้องมีตัวกรองบางอย่าง คำสำคัญ SQL สำหรับสิ่งนี้คือ WHERE หรือ "ที่บางอย่างเป็นจริง"

SELECT city
FROM cities
WHERE country = 'New Zealand';

-- Output:
-- Auckland

การรวมข้อมูล

จนถึงตอนนี้เราได้ดึงข้อมูลจากตารางเดียว ตอนนี้เราต้องการนำข้อมูลจากทั้ง cities และ rainfall มารวมกัน ซึ่งทำได้โดยการ join หรือรวมตารางเข้าด้วยกัน คุณจะสร้างรอยต่อระหว่างสองตาราง และจับคู่ค่าจากคอลัมน์ของแต่ละตาราง

ในตัวอย่างของเรา เราจะจับคู่คอลัมน์ city_id ใน rainfall กับคอลัมน์ city_id ใน cities ซึ่งจะจับคู่ค่าปริมาณฝนกับเมืองที่เกี่ยวข้อง ประเภทของ join ที่เราจะทำคือ inner join หมายความว่าหากแถวใดไม่ตรงกับข้อมูลจากตารางอื่น จะไม่แสดง ในกรณีของเรา ทุกเมืองมีข้อมูลปริมาณฝน ดังนั้นทุกอย่างจะถูกแสดง

มาดึงข้อมูลปริมาณฝนของปี 2019 สำหรับทุกเมืองของเรากัน

เราจะทำเป็นขั้นตอน ขั้นตอนแรกคือรวมข้อมูลโดยระบุคอลัมน์สำหรับรอยต่อ - city_id ดังที่เน้นไว้ก่อนหน้านี้

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id

เราเน้นสองคอลัมน์ที่ต้องการ และความจริงที่ว่าเราต้องการรวมตารางโดยใช้ city_id ตอนนี้เราสามารถเพิ่มคำสั่ง WHERE เพื่อกรองเฉพาะปี 2019

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019

-- Output

-- city     | amount
-- -------- | ------
-- Tokyo    | 1874
-- Atlanta  | 1111
-- Auckland |  942

สรุป

ฐานข้อมูลเชิงสัมพันธ์เน้นการแบ่งข้อมูลระหว่างหลายตารางซึ่งจะนำกลับมารวมกันเพื่อแสดงและวิเคราะห์ ซึ่งให้ความยืดหยุ่นสูงในการคำนวณและจัดการข้อมูล คุณได้เห็นแนวคิดหลักของฐานข้อมูลเชิงสัมพันธ์ และวิธีการทำ join ระหว่างสองตาราง

🚀 ความท้าทาย

มีฐานข้อมูลเชิงสัมพันธ์มากมายบนอินเทอร์เน็ต คุณสามารถสำรวจข้อมูลโดยใช้ทักษะที่คุณได้เรียนรู้ข้างต้น

แบบทดสอบหลังบรรยาย

แบบทดสอบหลังบรรยาย

ทบทวน & ศึกษาด้วยตนเอง

มีแหล่งข้อมูลหลายแห่งบน Microsoft Learn สำหรับคุณที่จะศึกษาต่อเกี่ยวกับ SQL และแนวคิดฐานข้อมูลเชิงสัมพันธ์

การบ้าน

แสดงข้อมูลสนามบิน


ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ Co-op Translator แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้