ทำความเข้าใจ Database คืออะไร?
Database (ฐานข้อมูล) คือ กลุ่มข้อมูลขนาดใหญ่ที่ถูกเก็บรวบรวมไว้ที่ใดที่หนึ่ง โดยเป็นข้อมูลที่มีความสัมพันธ์กัน ซึ่งถูกจัดเก็บอย่างเป็นระบบ โดยมีซอฟต์แวร์เข้ามาควบคุมกระบวนการใช้งาน การทำงาน หรือการประมวลผล ทำให้ผู้ใช้สามารถใช้ข้อมูลได้อย่างมีประสิทธิภาพ
ซอฟต์แวร์ที่ควบคุม Database จะเรียกว่า DBMS (Database Management System) หรือ ระบบจัดการฐานข้อมูล มีหน้าที่ช่วยให้ผู้ใช้เข้าถึงข้อมูลได้ง่ายสะดวกและมีประสิทธิภาพ ทั้งการสร้างฐานข้อมูล การแก้ไขฐานข้อมูล หรือค้นหาข้อมูล ซึ่งช่วยลดการเก็บข้อมูลที่ซ้ำซ้อนและรักษาความถูกต้องของข้อมูลภายใน Database
พื้นฐานการออกแบบ Database ให้มีประสิทธิภาพ
ข้อมูลในยุคดิจิทัลกลายเป็นสินทรัพย์สำคัญของธุรกิจในการบริหารจัดการและการใช้งาน เพื่อให้การทำงานขององค์กรมีประสิทธิภาพและศักยภาพสูงขึ้น แนวคิดการออกแบบ Database ให้ยืดหยุ่นและตอบโจทย์กับความต้องการขององค์กรที่เปลี่ยนแปลงไปตามสถานการณ์อย่างรวดเร็วจึงมีความสำคัญ โดยเฉพาะในยุค New Normal ที่มีความอ่อนไหวสูง ซึ่งหลักการออกแบบ Database ให้มีประสิทธิภาพง่าย ๆ มีดังนี้
Performance ในองค์กรต้องมี Database ที่มีประสิทธิภาพการทำงานสูง เพื่อรองรับ Workload ได้หลากหลายรูปแบบภายในระบบเดียว
Security มีความมั่นคงปลอดภัย ซึ่งสามารถปกป้องข้อมูลที่สำคัญได้ตลอดเวลา โดยไม่กระทบต่อประสิทธิภาพการทำงานด้านอื่น ๆ
Availability มั่นคงและมีเสถียรภาพ มี Downtime ที่ต่ำ ซึ่งจะลดโอกาสที่ระบบจะหยุดทำงาน โดยอาจเกิดขึ้นได้ทั้งจากความผิดพลาดของผู้ปฏิบัติงาน ระบบ และปัจจัยแวดล้อมอื่น ๆ ทำให้เกิดความเสียหายทั่วทั้งระบบ อีกทั้งต้องมีการอัปเกรดระบบทั้งในระดับของ Software และ Hardware ตลอดเวลา
Manageability บริหารจัดการและบำรุงรักษาได้ง่าย เพื่อช่วยลดระยะเวลาในการทำงานลง รวมถึงลดต้นทุนด้านเวลาและค่าบำรุงรักษาลงด้วย
Storage จัดเก็บข้อมูลได้อย่างเต็มประสิทธิภาพ สามารถลดหรือเพิ่มขยายได้ทั้งในระยะสั้นและระยะยาว ซึ่งจะช่วยให้องค์กรสามารถทำงานได้ยืดหยุ่นมากยิ่งขึ้น
แนวคิด Database นี้เป็นเพียงพื้นฐานคร่าว ๆ ที่ทุกองค์กรสามารยกระดับการทำงานของโครงสร้างพื้นฐานด้าน IT หรือ IT Infrastructure ซึ่งจะช่วยให้ Database สามารถตอบโจทย์โซลูชันที่แตกต่างกันออกไปได้อย่างมีประสิทธิภาพ ทั้งความยืดหยุ่น การทำงานเชิงรุก หรือการประมวลผลข้อมูลต่าง ๆ การเริ่มต้นลงทุนด้าน Database หรือ IT Infrastructure จึงเป็นก้าวแรกที่สำคัญขององค์กรธุรกิจ
วิวัฒนาการของ Database เป็นอย่างไร?
Database ถูกพัฒนาขึ้นมาตั้งแต่ปี 1960 เริ่มต้นจาก Hierarchical และ Network Database
จนมาถึงปี 1980 มีการนำเอา Object-Oriented-Database (OODBMS) มาใช้งาน ซึ่งเป็นพื้นฐานของระบบ Relation Database ที่ใช้กันอยู่ในปัจจุบัน บางครั้งจึงสามารถแบ่งประเภทของ Database ตามรูปแบบของชนิดข้อมูลได้ เช่น ตัวเลข ตัวอักษร หรือ รูปภาพ และแบ่งตามความนิยมของ Relational Database เช่น Distributed Database, Cloud Database หรือ NoSQL Database
Relational Database ถูกคิดค้นขึ้นโดย E.F. Codd (IBM) ในปี 1970 โดยสร้างจากข้อมูลของกลุ่ม Table ที่มีข้อมูลภายในแบ่งตามประเภทที่ตั้งไว้ แต่ละ Table จะมี Column อย่างน้อย 1 ชนิด และแต่ละ Row จะมีข้อมูลตามชนิดที่ Column กำหนดไว้
Standard Query Language (SQL) ก็เป็นมาตรฐานหนึ่งที่ผู้ใช้งานสร้างไว้เชื่อมต่อกับ Relational Database ซึ่งง่ายต่อการเพิ่มข้อมูล ทำให้ไม่กระทบต่อโปรแกรมอื่น ๆ ที่ใช้งานร่วมกัน
Distributed Database คือ ฐานข้อมูลที่ถูกเก็บกระจายออกไปหลาย ๆ ที่ โดยอาศัยกระบวนการแจกจ่ายและสำรองข้อมูล ผ่านทางระบบ Network ซึ่งมี 2 รูปแบบ ได้แก่
Homogeneous — ระบบทั้งหมดต้องเป็น OS และ Database ชนิดเดียวกัน
Heterogeneous — ระบบจะเหมือนหรือต่างกันก็ได้
NoSQL Database คือ ฐานข้อมูลที่ถูกใช้ในรูปแบบการกระจายข้อมูล จึงมีประสิทธิภาพสูงสำหรับ Big Data เพราะออกแบบมาเพื่อให้รองรับข้อมูลขนาดใหญ่และไม่ได้มีรูปแบบตายตัวได้
Cloud Database คือ ฐานข้อมูลแบบใหม่ที่ถูกสร้างขึ้นบนระบบ Virtualized คล้ายกันกับระบบ Hybrid Cloud, Public Cloud หรือ Private Cloud โดยเราสามารถเพิ่ม ลด หรือปรับแต่งขนาดของ Resource ได้ตลอดเวลา
โมเดลฐานข้อมูลเชิงสัมพันธ์
โมเดลข้อมูลเชิงสัมพันธ์ (Entity Relationship Model) หรือ E-R Model ถูกนำเสนอโดย Chen (1976) และได้รับการพัฒนาจะสมบูรณ์ในปี 1979 เพื่อใช้ในการอธิบายฐานข้อมูลในรูปแบบแผนภาพ เรียกว่า E-R diagram นั้นคือมนุษย์พยายาม เขียนสร้างที่เป็นจินตภาพ (ในที่นี้คือมุมมองที่เขามองฐานข้อมูล) ให้เป็นกายภาพ ในรูปแผนภาพ แผนภาพ ER ดังกล่าวใช้พื้นฐานของโมเดลข้อมูลเชิงตรรกะ (Logical Data Model) ของ Fleming ที่เสนอไว้ในปี 1989 เป็นวิธีการแสดงความต้องการสารสนเทศในระบบธุรกิจให้เป็นแผนภาพ ในขั้นตอนการวิเคราะห์และออกแบบระบบฐานข้อมูล เน้นตัวข้อมูลที่มีอยู่จริงโดยไม่คำนึงถึงรายละเอียดในการ ติดตั้ง,ความต้องการพิเศษอื่นในแง่การใช้งาน และความเร็วในการสืบค้นข้อมูล หรืออาจกล่าวอีกนัยหนึ่ง ว่าโมเดลข้อมูลเชิงตรรกะเป็นการสร้างโครงร่างวิวของ ผู้ใช้ (Skeletal User View) จะแสดงข้อมูลในขอบเขตที่ผู้ออกแบบสนใจโดยมีสิ่งที่ต้องกำหนดเป็นพื้นฐาน ได้แก่ เอนทิตี้, รีเลชั่นชิป, แอททริบิวต์ ในแง่ของ ER-Diagram ประกอบด้วย
เอนทิตี้ (Entity) คือ สิ่งที่มีอยู่จริง จับต้องได้ หรือเป็นจินตภาพที่แสดงความเป็นหนึ่งเดียว เมื่อกล่าวถึงแล้วทุกคนเข้าใจตรงกัน เช่น สินค้า, วัตถุดิบ, แผนกต่าง ๆ, การสั่งซื้อ
รีเลชั่นชิป (Relationship) คือความสัมพันธ์ซึ่งเป็นลักษณะการเกี่ยวพันกันระหว่างเอนทิตี้หนึ่งกับตัว มันเองหรือ เอนทิตี้อื่น อาจเป็นความสัมพันธ์ที่มากกว่า 2 เอนทิตี้ก็ได้ เช่น แผนกจัดซื้อทำการสั่งซื้อสินค้าหรือวัตถุดิบ
แอททริบิวต์ (Attribute) คือกลุ่มของค่าความจริงใด ๆ ที่เป็นรายละเอียดของเอนทิตี้ซึ่งแสดงลักษณะ และ คุณสมบัติของเอนทิตี้ ท าให้เข้าใจเอนทิตี้ได้ลึกซึ้งยิ่งขึ้น และเป็นสิ่งที่ไม่สามารถแตกย่อยลงไปได้อีกโดยไม่เสียความหมายไป เช่น รหัสสินค้า, สถานที่เก็บ, ชื่อสินค้า, ราคานอกจากนั้นยังมีการระบุด้วยว่าแอททริบิวต์ใดเป็นคีย์ก าหนดกฎข้อบังคับต่าง ๆ ของเอนทิตี้และรีเลชั่นชิป
การเปลี่ยนจากความสัมพันธ์เป็นตาราง
การเปลี่ยนจากความสัมพันธ์เป็นตาราง มีแนวทางในการทำดังนี้
1) ความสัมพันธ์เป็นแบบกลุ่มต่อกลุ่ม (M : N)
ให้นำความสัมพันธ์นั้นมาสร้างเป็นตารางใหม่ โดยน าไพรมารี่คีย์ของเอนทิตี้ที่มีความสัมพันธ์กับความสัมพันธ์นั้นมากำหนด เป็นพรอพเพอตี้ของตารางใหม่ พร้อมทั้งกำหนดให้ทำหน้าที่เป็นไพรมารี่คีย์หากความสัมพันธ์นั้นมีพรอพเพอตี้ของความสัมพันธ์ด้วย ก็นำพรอพเพอตี้นั้นมาเป็น แอททริบิวต์ของตารางใหม่ด้วย
2) ความสัมพันธ์เป็นแบบหนึ่งต่อกลุ่ม (1 : N)
ให้นำค่าไพรมารี่คีย์ของเอนทิตี้ที่มีความสัมพันธ์ทางด้าน หนึ่ง มาเป็นแอททริบิวต์ หนึ่ง ของเอนทิตี้ทางด้านกลุ่ม โดยไม่ต้องมีการสร้างตารางของความสัมพันธ์ขึ้นมาใหม่
3) ความสัมพันธ์เป็นแบบหนึ่งต่อหนึ่ง (1 : 1)
ให้นำค่าไพรมารี่คีย์ของเอนทิตี้ที่มีความสัมพันธ์กัน มาเป็นแอททริบิวต์หนึ่งของอีกเอนทิตี้ที่มีความสัมพันธ์กัน โดยจะนำจากเอนทิตี้ด้านใดก็ได้โดยไม่ต้องมีการสร้างตารางของ ความสัมพันธ์ขึ้นมาใหม่
ความหมายของคีย์ (Keys) ชนิดต่าง ๆ ใน Database
Keys หมายถึง ฟิลด์ (Field) แอตทริบิวต์ (Attribute) หรือ คอลัมน์ (Column) จำนวน 1 คอลัมน์ หรือ อาจเป็น หลาย ๆ คอลัมน์ มาประกอบกันก็ได้ มีค่า ไม่ซ้ำกัน ในแต่ละแถว มีคุณสมบัติที่เป็นเอกลักษณ์ (Unique) สามารถใช้คอลัมนั้นในการระบุถึงคอลัมน์อื่น ๆ ในแถว (Row) เรคอร์ด (Record) หรือ ทูเพิล (Tuple) นั้นได้
Super Key หมายถึง คอลัมน์ หรือ กลุ่มของคอลัมน์ ที่สามารถใช้จำแนกความแตกต่างของแต่ละแถวได้ หากมีคอลัมน์หรือกลุ่มของคอลัมน์ใด ที่ไม่มีโอกาสมีค่าซ้ำกันเลยในแต่ละแถว (Unique) ก็จัดได้ว่าคอลัมน์นั้น หรือ กลุ่มของคอลัมน์นั้น เป็น Super Key
เมื่อเราพิจารณาคำจำกัดความแล้ว เราอาจพิจารณาได้ว่ามี Super Key ใน Table Employees ทั้งหมดดังนี้
EmpID
EmpID + FirstName
EmpID + LastName
EmpID + DepID
EmpID + Position
EmpID + FirstName + LastName
EmpID + FirstName + DepID
EmpID + FirsttName + Position
EmpID + LastName + DepID
EmpID + LastName + Position
EmpID + DepID + Position
FirstName + LastName + DepID + Position
Composite Key หมายถึง Key ที่ประกอบกัน หรือ มีมากกว่า 1 Key เช่น
EmpID + FirstName
EmpID + LastName
EmpID + FirstName + LastName
FirstName + LastName + DepID + Position
แต่ EmpID ไม่ใช่ Composite Key เนื่องจากเป็นเพียงแค่ Key เดียว
Candidate Key หมายถึง Super Key ที่มีคอลัมน์เดียว หรือ Super Key ที่มีหลายคอลัมน์ แต่ ไม่มีบางส่วนของ Key เป็น Unique Subset
Unique Subset คือ มีค่าไม่ซ้ำกันในแต่ละแถว
จาก Table Employees เราจะได้ Candidate Key ทั้งหมดเป็นดังนี้
EmpID ตรงตามเงื่อนไขแรก คือ เป็น Super Key ที่มีคอลัมน์เดียว
FirstName + LastName + DepID + Position ตรงตามเงื่อนไขที่สอง คือ ไม่มีบางส่วนเป็น Unique Subset
ส่วน Super Key อื่น ๆ ถือว่าผิดเงื่อนไขที่สอง คือ มี Unique Subset เกิดขึ้น
เช่น Super Key ในข้อ 2 EmpID + FirstName มี Unique Subset เกิดขึ้น
EmpID + FirstName ถือเป็น Composite Key คือเป็น Key ประกอบ
และหนึ่งใน Key ประกอบมีความเป็น Unique Subset เกิดขึ้น นั่นคือ EmpID เป็น Unique ทำให้ไม่เป็น Candidate Key
Primary Key หมายถึง Key ที่ถูกเลือกมาจาก Candidate Key โดยมีหลักเกณฑ์ดังนี้
ต้องไม่มีค่าซ้ำกันในแต่ละแถว
ต้องไม่มีค่าเป็น NULL (ค่าว่าง)
Primary Key จะถูกเปลี่ยนแปลงค่าไม่ได้
Alternate Key หมายถึง Key ที่ไม่ได้ถูกเลือกให้เป็น Primary Key นั่นก็คือ FirstName + LastName + DepID + Position
Foreign Key หมายถึง Key ที่อ้างไปยัง Primary Key ของ Table หนึ่ง
เช่น ใน Table Employees DepID ถือเป็น Foreign Key เพราะ DepID ได้อ้างไปยัง Primary Key ของอีก Table หนึ่ง
โปรแกรมสำหรับการจัดการฐานข้อมูล SQLite
สำหรับ SQLite (เอสคิวแอลไลท์) บน Android (แอนดรอยด์) นั้น มีเรื่องเล็กน้อยที่ Developer (ดีเวลลอปเปอร์) ควรจะรู้ คือว่า Databases file (ดาต้าเบส ไฟล์) ที่สร้างขึ้นมานั้น จะต้องมี Table android_metadata (เทเบิล แอนดรอยด์_เมตะดาต้า) อยู่ด้วย ถึงจะใช้งานได้ SQLite เป็น Database (ดาต้าเบส) ขนาดเล็ก ที่ทำงานบนระบบต่างๆ ของสมาร์ทโฟน ซึ่ง Android นี้ก็ใช้ SQLite เป็น Database ของแต่ละ Application (แอพพลิเคชั่น) เช่นกัน โดย Application หนึ่ง ก็จะมีฐานข้อมูลของแต่ละ Application ซึ่งไม่ได้ใช้งานร่วมกัน
SQLite เป็นโปรแกรมฐานข้อมูลที่มีขนาดเล็กมาก (ไม่ถึง 1MB) เก็บฐานข้อมูลเป็นไฟล์โดยไม่จำเป็นต้องมีเซิร์ฟเวอร์ ทำให้ถูกใช้ในหลายๆ โปรแกรมหรือถูกติดตั้งลงไปในอุปกรณ์พกพาหลายชนิดๆ เช่น iPhone (ไอโฟน), Android เพื่อใช้ในการเก็บข้อมูล
โปรแกรมสำหรับการจัดการฐานข้อมูล MySQL
MySQL คือ ระบบจัดการฐานข้อมูล หรือ Database Management System (DBMS) แบบข้อมูลเชิงสัมพันธ์ หรือ Relational Database Management System (RDBMS) ซึ่งเป็นระบบฐานข้อมูลที่จัดเก็บรวบรวมข้อมูลในรูปแบบตาราง โดยมีการแบ่งข้อมูลออกเป็นแถว (Row) และในแต่ละแถวแบ่งออกเป็นคอลัมน์ (Column) เพื่อเชื่อมโยงระหว่างข้อมูลในตารางกับข้อมูลในคอลัมน์ที่กำหนด แทนการเก็บข้อมูลที่แยกออกจากกัน โดยไม่มีความเชื่อมโยงกัน ซึ่งประกอบด้วยข้อมูล (Attribute) ที่มีความสัมพันธ์เชื่อมโยงกัน (Relation) โดยใช้ RDBMS Tools สำหรับการควบคุมและจัดเก็บฐานข้อมูลที่จำเป็น ทำให้นำไปประยุกต์ใช้งานได้ง่าย ช่วยเพิ่มประสิทธิภาพในการทำงานให้มีความยืดหยุ่นและรวดเร็วได้มากยิ่งขึ้น รวมถึงเชื่อมโยงข้อมูล ที่จัดแบ่งกลุ่มข้อมูลแต่ละประเภทได้ตามต้องการ จึงทำให้ MySQL เป็นโปรแกรมระบบจัดฐานข้อมูลที่ได้รับความนิยมสูง
MySQL เป็น Open Source ที่ถูกพัฒนาขึ้นจาก MySQL AB ในประเทศสวีเดน โดยชาวสวีเดน 2 คน คือ David Axmark และ Allan Larsson ร่วมกับชาวฟินแลนด์ Michael Monty Widenius ซึ่งต่อมาในปี ค.ศ. 2008 ถูกซื้อกิจการโดย Sun Microsystems และภายหลัง Oracle Corporation ได้เข้าซื้อกิจการในปี ค.ศ. 2010
MySQL มีหน้าที่จัดเก็บข้อมูลอย่างเป็นระบบ รองรับคำสั่งภาษา Structured Query Language หรือ SQL เพื่อจัดการกับฐานข้อมูลโดยเฉพาะ เป็นภาษามาตรฐานบนระบบฐานข้อมูลเชิงสัมพันธ์และเป็นระบบเปิด (Open System) ที่มีโครงสร้างของภาษาที่เข้าใจง่าย ไม่ซับซ้อน และนิยมใช้งานร่วมกับภาษาโปรแกรม PHP รวมถึงภาษาอื่น ๆ ที่สามารถทำงานร่วมกันกับฐานข้อมูล MySQL ได้หลากหลาย เช่น C, C++, Python, Java เป็นต้น อีกทั้ง MySQL ยังได้รับการออกแบบและปรับให้มีความเหมาะสมสำหรับการพัฒนา Website และ Web Application ทำให้สามารถรองรับการทำงานได้ทุกแพลตฟอร์ม รวมถึงการอนุญาตให้ผู้ใช้งานหลายคนสามารถใช้งานพร้อมกันได้ (Multi-user) นอกจากนั้นยังสามารถจัดการและสร้างฐานข้อมูลจำนวนมากรวมถึงประมวลผลหลาย ๆ งานได้พร้อมกัน (Multi-threaded) อย่างสมบูรณ์ จึงทำให้ MySQL เป็นตัวเลือกยอดนิยมสำหรับธุรกิจการพาณิชย์อิเล็กทรอนิกส์ หรือ Electronic Commerce (E-Commerce) และเหมาะสำหรับการนำไปใช้งานสร้างเว็บไซต์ทั่วไป เพราะมีความแม่นยำ ครบครัน ช่วยให้เข้าถึงข้อมูลได้อย่างรวดเร็ว อีกทั้งยังมีความน่าเชื่อถือสูง และยังมีโปรแกรมเสริมช่วยจัดฐานข้อมูลที่ใช้งานง่าย เช่น Mysql Admin, phpMyAdmin เป็นต้น
MySQL ใช้ทำงานอะไรบ้าง ?
MySQL มีให้เลือกใช้งาน 2 รุ่น ได้แก่ MySQL Community Edition ที่เป็นเวอร์ชันฟรี ซึ่งเป็น Open Source และ MySQL Enterprise Edition ที่มีคุณสมบัติมากกว่าและการสนับสนุนด้านเทคนิคที่ครอบคลุม รวมถึงยังได้รับอนุญาตให้ใช้ในเชิงพาณิชย์ โดย MySQL เป็นตัวเลือกยอดนิยมสำหรับเว็บไซต์ขนาดใหญ่และ Web Application เนื่องจากสามารถรองรับการรับส่งข้อมูลในระดับสูง รวมถึงยังมีคุณสมบัติที่ช่วยเพิ่มประสิทธิภาพการทำงาน เช่น กระบวนการจัดเก็บข้อมูล (Store Procedure), กระบวนการทำงานแบบอัตโนมัติ (Database Trigger), มุมมองฐานข้อมูล (Database View) และภาพรวมระบบฐานข้อมูล (Database Schema) เป็นต้น
โดย MySQL ถูกนำไปใช้ในองค์กรหรือกลุ่มธุรกิจชั้นนำต่าง ๆ มากมาย เพราะสามารถปรับใช้ให้เข้ากับความต้องการของแต่ละองค์กรได้อย่างมีประสิทธิภาพ เช่น
▪ การจัดเก็บข้อมูลสำหรับ Website
▪ การจัดเก็บข้อมูลสำหรับ Mobile Application
▪ การจัดเก็บข้อมูลสำหรับ Application สำหรับองค์กร
▪ การจัดเก็บข้อมูลทางการแพทย์
▪ การจัดเก็บข้อมูลทางการเงิน
▪ การจัดเก็บและสร้างฐานข้อมูลของลูกค้า
ภาษา SQL คืออะไร
Structured Query Language (SQL) เป็นภาษาโปรแกรมสำหรับจัดเก็บและประมวลผลข้อมูลในฐานข้อมูลแบบเชิงสัมพันธ์ ฐานข้อมูลแบบเชิงสัมพันธ์เก็บข้อมูลในรูปแบบตารางที่มีแถวและคอลัมน์ที่เป็นตัวแทนของหมวดข้อมูลที่แตกต่างกันและความสัมพันธ์ต่างๆ ระหว่างค่าข้อมูล สามารถใช้คำสั่ง SQL ในการจัดเก็บ ปรับปรุง ลบ ค้นหา และดึงข้อมูลจากฐานข้อมูล นอกจากนี้ยังสามารถใช้ SQL ในการรักษาและเพิ่มประสิทธิภาพการทำงานของฐานข้อมูล
ทำไม SQL จึงเป็นสิ่งสำคัญ
Structured Query Language (SQL) เป็นภาษาแบบสอบถามที่นิยมใช้บ่อยในทุกประเภทของแอปพลิเคชัน นักวิเคราะห์ข้อมูลและนักพัฒนาเรียนรู้และใช้ SQL เพราะมันบูรณาการได้ดีกับการเขียนโปรแกรมภาษาที่แตกต่างกัน ตัวอย่างเช่น พวกเขาสามารถฝังแบบสอบถาม SQL กับการเขียนโปรแกรมภาษา Java เพื่อสร้างประสิทธิภาพสูงโปรแกรมประมวลผลข้อมูลที่มีระบบฐานข้อมูล SQL ที่สำคัญเช่น Oracle หรือ MS SQL Server SQL ยังค่อนข้างง่ายที่จะเรียนรู้ในขณะที่มันใช้คำหลักภาษาอังกฤษทั่วไปในงบ
ประวัติของ SQL
SQL ถูกคิดค้นขึ้นในช่วงคริสต์ทศวรรษ 1970 โดยอาศัยรูปแบบข้อมูลเชิงสัมพันธ์ มันเป็นที่รู้จักกันในครั้งแรกเป็นภาษาแบบสอบถามภาษาอังกฤษที่มีโครงสร้าง (SEQUEL) ระยะต่อมาถูกย่อเป็น SQL Oracle เดิมชื่อซอฟต์แวร์เชิงสัมพันธ์กลายเป็นผู้ขายรายแรกที่เสนอระบบการจัดการฐานข้อมูลแบบเชิงสัมพันธ์ของ SQL
ส่วนประกอบของระบบ SQL มีอะไรบ้าง
ระบบการจัดการฐานข้อมูลแบบเชิงสัมพันธ์ใช้ภาษาแบบสอบถามที่มีโครงสร้าง (SQL) ในการจัดเก็บและจัดการข้อมูล ระบบจัดเก็บตารางฐานข้อมูลหลายเชื่อมต่อกันและกัน MS SQL Server MySQL หรือ MS Access เป็นตัวอย่างของระบบการจัดการฐานข้อมูลแบบเชิงสัมพันธ์ ต่อไปนี้เป็นส่วนประกอบของระบบดังกล่าว
ตาราง SQL
ตาราง SQL เป็นองค์ประกอบพื้นฐานของฐานข้อมูลแบบเชิงสัมพันธ์ ตารางฐานข้อมูล SQL ประกอบด้วยแถวและคอลัมน์ วิศวกรฐานข้อมูลสร้างความสัมพันธ์ระหว่างตารางฐานข้อมูลหลายตารางเพื่อเพิ่มประสิทธิภาพพื้นที่เก็บข้อมูล
ตัวอย่างเช่นว ิศวกรฐานข้อมูลสร้างตาราง SQL สำหรับผลิตภัณฑ์ในร้านค้า
รหัสผลิตภัณฑ์ ชื่อผลิตภัณฑ์ รหัสสี
0001 ที่นอน สี 1
0002 หมอน สี 2
จากนั้นวิศวกรฐานข้อมูลเชื่อมโยงตารางผลิตภัณฑ์ไปยังตารางสีที่มี รหัสสี
รหัสสี ชื่อสี
สี 1 สีน้ำเงิน
สี 2 สีแดง
คำสั่ง SQL
คำสั่ง SQL หรือแบบสอบถาม SQL เป็นคำสั่งที่ถูกต้องที่ระบบการจัดการฐานข้อมูลแบบเชิงสัมพันธ์เข้าใจ นักพัฒนาซอฟต์แวร์สร้างคำสั่ง SQL โดยใช้องค์ประกอบภาษา SQL ที่แตกต่างกัน องค์ประกอบภาษา SQL เป็นส่วนประกอบ เช่น ตัวระบุ ตัวแปร และเงื่อนไขการค้นหาที่สร้างคำสั่ง SQL ที่ถูกต้อง
ยกตัวอย่างเช่นคำสั่ง SQL ต่อไปนี้ใช้คำสั่ง SQL INSERT เพื่อเก็บ ที่นอนยี่ห้อ A ราคา 499 USD ลงในตารางชื่อ Mattress_table ที่มีชื่อคอลัมน์ brand_name และ Cost ใส่เข้าไปใน Mattress_table (brand_name และ cost)
ค่า ('A', '499');
ขั้นตอนการจัดเก็บ
วิธีการจัดเก็บเป็นคอลเลกชันของ SQL หนึ่งคำสั่งหรือมากกว่าที่เก็บไว้ในฐานข้อมูลแบบเชิงสัมพันธ์ นักพัฒนาซอฟต์แวร์ใช้วิธีการจัดเก็บเพื่อปรับปรุงประสิทธิผลและประสิทธิภาพ ตัวอย่างเช่น สามารถสร้างขั้นตอนการจัดเก็บสำหรับการปรับปรุงตารางการขายแทนการเขียนคำสั่ง SQL เดียวกันในการแอปพลิเคชันที่ต่างกัน
SQL ทำงานอย่างไร
การใช้ภาษาแบบสอบถามที่มีโครงสร้าง (SQL) มีเครื่องเซิร์ฟเวอร์ที่ประมวลผลคำสั่งฐานข้อมูลและส่งผลกลับ กระบวนการ SQL จะต้องผ่านส่วนประกอบซอฟต์แวร์หลายส่วนมีดังต่อไปนี้
ตัวแยกวิเคราะห์
ตัวแยกวิเคราะห์เริ่มต้นด้วยการสร้างโทเค็นหรือเปลี่ยนบางคำในคำสั่ง SQL ที่มีสัญลักษณ์พิเศษ จากนั้นจะตรวจสอบคำสั่งต่อไปนี้
ความถูกต้อง
ตัวแยกวิเคราะห์ตรวจสอบว่าคำสั่ง SQL สอดคล้องกับความหมายหรือกฎ SQL ที่ให้ความถูกต้องของคำสั่งแบบสอบถาม ยกตัวอย่างเช่น ตัวแยกวิเคราะห์ตรวจสอบว่าคำสั่ง SQL ลงท้ายด้วยอัฒภาคหรือไม่ ถ้าอัฒภาคหายไป ตัวแยกวิเคราะห์ส่งกลับข้อผิดพลาด
การให้สิทธิ์
ตัวแยกวิเคราะห์ยังตรวจสอบว่าผู้ใช้ที่เรียกใช้แบบสอบถามได้รับการอนุมัติที่กำหนดสำหรับจัดการกับข้อมูลนั้นๆ หรือไม่ ตัวอย่างเช่น เฉพาะผู้ใช้ระดับผู้ดูแลระบบเท่านั้นที่อาจมีสิทธิลบข้อมูล
Engine เชิงสัมพันธ์
Engine เชิงสัมพันธ์หรือหน่วยประมวลผลแบบสอบถามสร้างแผนสำหรับการเรียก เขียน หรือปรับปรุงข้อมูลที่สอดคล้องกันในลักษณะที่มีประสิทธิภาพมากที่สุด ยกตัวอย่างเช่น การตรวจสอบสำหรับคำสั่งที่คล้ายกัน ใช้วิธีการจัดการข้อมูลก่อนหน้านี้อีกหรือสร้างใหม่ เขียนแผนในการแสดงระดับกลางของคำสั่ง SQL ที่เรียกว่ารหัสไบต์ ฐานข้อมูลแบบเชิงสัมพันธ์ใช้รหัสไบต์ดำเนินการค้นหาฐานข้อมูลและปรับเปลี่ยนได้อย่างมีประสิทธิภาพ
Engine จัดเก็บข้อมูล
Engine จัดเก็บข้อมูลหรือเครื่องมือฐานข้อมูลเป็นส่วนประกอบซอฟต์แวร์ที่ประมวลผลรหัสไบต์และเรียกใช้คำสั่ง SQL ตามสั่ง อ่านและเก็บข้อมูลในไฟล์ฐานข้อมูลในดิสก์เก็บข้อมูลทางกายภาพ เมื่อเสร็จสิ้น Engine จัดเก็บข้อมูลส่งผลที่ได้กลับไปยังแอปพลิเคชันที่ร้องขอ
คำสั่ง SQL มีอะไรบ้าง
แบบสอบถามภาษามีโครงสร้าง (SQL) มีคำสั่งเป็นคำหลักเฉพาะหรือคำสั่ง SQL ที่นักพัฒนาใช้ในการจัดการกับข้อมูลที่เก็บไว้ในฐานข้อมูลแบบเชิงสัมพันธ์ สามารถจัดหมวดหมู่คำสั่ง SQL ดังต่อไปนี้
ภาษานิยามข้อมูล
ภาษานิยามข้อมูล (DDL) หมายถึงคำสั่ง SQL ที่ออกแบบโครงสร้างฐานข้อมูล วิศวกรฐานข้อมูลใช้ DDL เพื่อสร้างและแก้ไขวัตถุฐานข้อมูลตามความต้องการของธุรกิจ ตัวอย่างเช่น วิศวกรฐานข้อมูลใช้คำสั่ง CREATE เพื่อสร้างวัตถุฐานข้อมูลเช่นตาราง มุมมอง และดัชนี
ภาษาแบบสอบถามข้อมูล
ภาษาแบบสอบถามข้อมูล (DQL) ประกอบด้วยคำสั่งสำหรับการดึงข้อมูลที่เก็บไว้ในฐานข้อมูลแบบเชิงสัมพันธ์ การใช้งานซอฟต์แวร์ใช้คำสั่ง SELECT เพื่อกรองและส่งกลับผลลัพธ์เฉพาะจากตาราง SQL
ภาษาการจัดการข้อมูล
คำสั่งภาษาการจัดการข้อมูล (DML) เขียนข้อมูลใหม่หรือปรับเปลี่ยนระเบียนที่มีอยู่ในฐานข้อมูลแบบเชิงสัมพันธ์ ตัวอย่างเช่น แอปพลิเคชันใช้คำสั่ง INSERT เพื่อเก็บบันทึกใหม่ในฐานข้อมูล
ภาษาควบคุมข้อมูล
ผู้ดูแลฐานข้อมูลใช้ภาษาควบคุมข้อมูล (DCL) เพื่อจัดการหรืออนุญาตการเข้าถึงฐานข้อมูลสำหรับผู้ใช้รายอื่น ตัวอย่างเช่นพวกเขาสามารถใช้คำสั่ง GRANT เพื่ออนุญาตให้บางแอปพลิเคชันจัดการกับหนึ่งตารางหรือมากกว่าได้
ภาษาควบคุมการทำธุรกรรม
Engine เชิงสัมพันธ์ใช้ภาษาควบคุมการทำธุรกรรม (TCL) เพื่อใเปลี่ยนแปลงฐานข้อมูลโดยอัตโนมัติ ตัวอย่างเช่น ฐานข้อมูลใช้คำสั่ง ROLLBACK เพื่อยกเลิกการทำธุรกรรมที่ผิดพลาด
มาตรฐาน SQL อะไร
มาตรฐาน SQL เป็นชุดของแนวทางที่กำหนดอย่างเป็นทางการของภาษาแบบสอบถามที่มีโครงสร้าง (SQL) สถาบันมาตรฐานแห่งชาติอเมริกัน (ANSI) และองค์การระหว่างประเทศว่าด้วยการมาตรฐาน (ISO) ได้นำมาตรฐาน SQL มาใช้ในปีค.ศ. 1986 ผู้จำหน่ายซอฟต์แวร์ใช้มาตรฐาน ANSI SQL เพื่อสร้างซอฟต์แวร์ฐานข้อมูล SQL สำหรับนักพัฒนา
SQL Injection คืออะไร
SQL Injection เป็นการโจมตีทางไซเบอร์ที่เกี่ยวข้องกับการหลอกลวงฐานข้อมูลด้วยแบบสอบถาม SQL แฮกเกอร์ใช้ SQL Injection เพื่อดึง แก้ไข หรือทำให้ข้อมูลเสียหายในฐานข้อมูล SQL ตัวอย่างเช่น พวกเขาอาจจะกรอกคำสั่ง SQL แทนชื่อของบุคคลในฟอร์มส่งเพื่อดำเนินการโจมตี SQL Injection
MySQL คืออะไร?
MySQL เป็นระบบการจัดการฐานข้อมูลแบบเชิงสัมพันธ์โอเพนซอร์สที่นำเสนอโดย Oracle นักพัฒนาสามารถดาวน์โหลดและใช้ MySQL โดยไม่ต้องจ่ายค่าธรรมเนียมการออกใบอนุญาต พวกเขาสามารถติดตั้ง MySQL บนระบบปฏิบัติการที่แตกต่างกันหรือเซิร์ฟเวอร์คลาวด์ MySQL เป็นระบบฐานข้อมูลที่นิยมสำหรับแอปพลิเคชันเว็บ
SQL เทียบกับ MySQL
Structured Query Language (SQL) เป็นภาษามาตรฐานสำหรับการสร้างและการจัดการฐานข้อมูล MySQL เป็นโปรแกรมฐานข้อมูลแบบเชิงสัมพันธ์ที่ใช้คำสั่ง SQL ในขณะที่คำสั่ง SQL จะถูกกำหนดโดยมาตรฐานสากลซอฟต์แวร์ MySQL ผ่านการอัพเกรดและการปรับปรุงอย่างต่อเนื่อง
NoSQL คืออะไร
NoSQL หมายถึงฐานข้อมูลที่ไม่ใช่แบบเชิงสัมพันธ์ที่ไม่ได้ใช้ตารางการจัดเก็บข้อมูล นักพัฒนาเก็บข้อมูลในรูปแบบที่แตกต่างกันของฐานข้อมูล NoSQL รวมทั้งกราฟ เอกสาร และค่าคีย์ ฐานข้อมูล NoSQL เป็นที่นิยมสำหรับการใช้งานที่ทันสมัยเพราะพวกเขาจะปรับขนาดได้ในแนวนอน การปรับขนาดแนวนอนหมายถึงการเพิ่มพลังการประมวลผลโดยการเพิ่มคอมพิวเตอร์ที่เรียกใช้ซอฟต์แวร์ NoSQL มากขึ้น
SQL เทียบกับ NoSQL
ภาษาแบบสอบถามที่มีโครงสร้าง (SQL) ให้ภาษาการจัดการข้อมูลโดยรวม แต่การดำเนินการ NoSQL จะขึ้นอยู่กับเทคโนโลยีที่แตกต่างกัน นักพัฒนาใช้ SQL สำหรับการใช้งานการทำธุรกรรมและการวิเคราะห์ในขณะที่ NoSQL เหมาะสำหรับการตอบสนองแอปพลิเคชันที่ใช้งานหนัก
เซิร์ฟเวอร์ SQL คืออะไร
SQL Server เป็นชื่ออย่างเป็นทางการของระบบการจัดการฐานข้อมูลแบบเชิงสัมพันธ์ของไมโครซอฟต์ที่จัดการกับข้อมูลที่มี SQL MS SQL Server มีหลายรุ่นและแต่ละรุ่นถูกออกแบบมาสำหรับเวิร์กโหลดและความต้องการเฉพาะ
การสร้าง Database
การสร้างพื้นที่ในการจัดเก็บข้อมูลอย่างเป็นระบบ ช่วยลดการเก็บข้อมูลที่ซ้ำซ้อน รวมถึงรักษาความถูกต้องของข้อมูล และที่สำคัญป้องกันและรักษาความปลอดภัยให้กับข้อมูลเหล่านี้ ได้อย่างมีประสิทธิภาพ
ขั้นตอนการสร้าง Database (การสร้างฐานข้อมูล) >> https://shorturl.at/vyzFK
การสร้างตารางข้อมูลใน Database
การสร้างพื้นที่ในการจัดเก็บข้อมูลอย่างเป็นระบบ ช่วยลดการเก็บข้อมูลที่ซ้ำซ้อน รวมถึงรักษาความถูกต้องของข้อมูล และที่สำคัญป้องกันและรักษาความปลอดภัยให้กับข้อมูลเหล่านี้ ได้อย่างมีประสิทธิภาพ
ขั้นตอนการสร้าง Database (การสร้างฐานข้อมูล) และ
ขั้นตอนการเพิ่มข้อมูลใน Database (การเพิ่มข้อมูลในฐานข้อมูล) และ
ขั้นตอนการลบข้อมูลใน Database (การลบข้อมูลในฐานข้อมูล)
รวมไปถึงบทเรียน phpMyAdmin part Database ทั้งหมด >> https://shorturl.at/qNZ57
ความหมายของคีย์ (Keys) ชนิดต่าง ๆ ใน Database
Keys หมายถึง ฟิลด์ (Field) แอตทริบิวต์ (Attribute) หรือ คอลัมน์ (Column) จำนวน 1 คอลัมน์ หรือ อาจเป็น หลาย ๆ คอลัมน์ มาประกอบกันก็ได้ มีค่า ไม่ซ้ำกัน ในแต่ละแถว มีคุณสมบัติที่เป็นเอกลักษณ์ (Unique) สามารถใช้คอลัมนั้นในการระบุถึงคอลัมน์อื่น ๆ ในแถว (Row) เรคอร์ด (Record) หรือ ทูเพิล (Tuple) นั้นได้
Super Key หมายถึง คอลัมน์ หรือ กลุ่มของคอลัมน์ ที่สามารถใช้จำแนกความแตกต่างของแต่ละแถวได้ หากมีคอลัมน์หรือกลุ่มของคอลัมน์ใด ที่ไม่มีโอกาสมีค่าซ้ำกันเลยในแต่ละแถว (Unique) ก็จัดได้ว่าคอลัมน์นั้น หรือ กลุ่มของคอลัมน์นั้น เป็น Super Key
เมื่อเราพิจารณาคำจำกัดความแล้ว เราอาจพิจารณาได้ว่ามี Super Key ใน Table Employees ทั้งหมดดังนี้
EmpID
EmpID + FirstName
EmpID + LastName
EmpID + DepID
EmpID + Position
EmpID + FirstName + LastName
EmpID + FirstName + DepID
EmpID + FirsttName + Position
EmpID + LastName + DepID
EmpID + LastName + Position
EmpID + DepID + Position
FirstName + LastName + DepID + Position
Composite Key หมายถึง Key ที่ประกอบกัน หรือ มีมากกว่า 1 Key เช่น
EmpID + FirstName
EmpID + LastName
EmpID + FirstName + LastName
FirstName + LastName + DepID + Position
แต่ EmpID ไม่ใช่ Composite Key เนื่องจากเป็นเพียงแค่ Key เดียว
Candidate Key หมายถึง Super Key ที่มีคอลัมน์เดียว หรือ Super Key ที่มีหลายคอลัมน์ แต่ ไม่มีบางส่วนของ Key เป็น Unique Subset
Unique Subset คือ มีค่าไม่ซ้ำกันในแต่ละแถว
จาก Table Employees เราจะได้ Candidate Key ทั้งหมดเป็นดังนี้
EmpID ตรงตามเงื่อนไขแรก คือ เป็น Super Key ที่มีคอลัมน์เดียว
FirstName + LastName + DepID + Position ตรงตามเงื่อนไขที่สอง คือ ไม่มีบางส่วนเป็น Unique Subset
ส่วน Super Key อื่น ๆ ถือว่าผิดเงื่อนไขที่สอง คือ มี Unique Subset เกิดขึ้น
เช่น Super Key ในข้อ 2 EmpID + FirstName มี Unique Subset เกิดขึ้น
EmpID + FirstName ถือเป็น Composite Key คือเป็น Key ประกอบ
และหนึ่งใน Key ประกอบมีความเป็น Unique Subset เกิดขึ้น นั่นคือ EmpID เป็น Unique ทำให้ไม่เป็น Candidate Key
Primary Key หมายถึง Key ที่ถูกเลือกมาจาก Candidate Key โดยมีหลักเกณฑ์ดังนี้
ต้องไม่มีค่าซ้ำกันในแต่ละแถว
ต้องไม่มีค่าเป็น NULL (ค่าว่าง)
Primary Key จะถูกเปลี่ยนแปลงค่าไม่ได้
Alternate Key หมายถึง Key ที่ไม่ได้ถูกเลือกให้เป็น Primary Key นั่นก็คือ FirstName + LastName + DepID + Position
Foreign Key หมายถึง Key ที่อ้างไปยัง Primary Key ของ Table หนึ่ง
เช่น ใน Table Employees DepID ถือเป็น Foreign Key เพราะ DepID ได้อ้างไปยัง Primary Key ของอีก Table หนึ่ง
บทเรียน phpMyAdmin part Database ทั้งหมด >> https://shorturl.at/qNZ57
การเชื่อมต่อฐานข้อมูลมีหลายวิธี ขึ้นอยู่กับการใช้งานฐานข้อมูลนั้น ๆ
โดยสามารถดูคู่มือการเชื่อมต่อข้อมูลได้จากลิงก์นี้ >> https://flpnuol.weebly.com/uploads/2/4/5/9/24599736/phpmyadmin.pdf
บทเรียน phpMyAdmin part Database ทั้งหมด >> https://shorturl.at/qNZ57
**ขอขอบคุณเจ้าของข้อมูลทุก ๆ แหล่งที่มา รวมไปถึงเจ้าของสื่อการเรียนรู้ทุกชิ้นเป็นอย่างสูง**