บทที่ 5 : 5.5 ส่วนประกอบของ DBMS
๕.๕ ส่วนประกอบของระบบการจัดการฐานข้อมูล (DBMS Components)
ระบบการจัดการฐานข้อมูล (DBMS: Database Management System) เป็นกลไกสำคัญในการเชื่อมโยงผู้ใช้งานกับฐานข้อมูล โดยทำหน้าที่เป็นตัวกลางสำหรับ การสอบถามข้อมูล (Querying), การจัดการข้อมูล (Manipulating), และการควบคุมสิทธิ์ (Access Control)
ผู้ใช้ไม่จำเป็นต้องทราบรายละเอียดเชิงลึกเกี่ยวกับการจัดเก็บข้อมูลเชิงกายภาพภายในระบบ แต่ควรเข้าใจ ภาษาสอบถามข้อมูล (Query Language) เพื่อเรียกใช้และจัดการข้อมูลอย่างมีประสิทธิภาพ

รูปที่ 5.14 โครงสร้างภาษา SQL
🔹 1) ภาษา SQL (Structured Query Language)
ภาษา SQL เป็นภาษามาตรฐานที่ใช้กับฐานข้อมูลเชิงสัมพันธ์ทุกระบบ ไม่ว่าจะเป็น PostgreSQL, MySQL, SQLite หรือ Oracle DB โดยเฉพาะในระบบ GIS ที่ใช้ PostGIS หรือ SpatiaLite SQL ยังสามารถใช้จัดการข้อมูลเชิงพื้นที่โดยตรงอีกด้วย
🧩 องค์ประกอบของ SQL แบ่งออกเป็น 3 ประเภทหลัก
ประเภท | คำอธิบาย | ตัวอย่าง |
---|---|---|
DDL (Data Definition Language) | นิยามโครงสร้างฐานข้อมูล เช่น ตาราง ฟิลด์ คีย์ | CREATE TABLE , ALTER TABLE |
DML (Data Manipulation Language) | จัดการข้อมูลในตาราง เช่น เพิ่ม ลบ แก้ไข | SELECT , INSERT , UPDATE , DELETE |
DCL (Data Control Language) | ควบคุมสิทธิ์การเข้าถึง | GRANT , REVOKE |
📍 ตัวอย่างการใช้งานในระบบ GIS
🔸 การนิยามตารางข้อมูลพื้นที่ (DDL)
sqlCopyEditCREATE TABLE landuse (
id SERIAL PRIMARY KEY,
name TEXT,
land_type TEXT
);
🔸 การเพิ่มข้อมูล (DML)
sqlCopyEditINSERT INTO landuse (name, land_type)
VALUES ('แปลงนา', 'เกษตรกรรม');
🔸 การสอบถามข้อมูล (DML)
sqlCopyEditSELECT name, land_type
FROM landuse
WHERE land_type = 'เกษตรกรรม';
🔸 การควบคุมสิทธิ์ผู้ใช้ (DCL)
sqlCopyEditGRANT SELECT ON landuse TO user_gis_viewer;
🌍 กรณีพิเศษ: SQL เชิงพื้นที่ (Spatial SQL)
ระบบ DBMS ที่รองรับ GIS เช่น PostGIS เพิ่มความสามารถให้ SQL สามารถจัดการข้อมูลพิกัดและพื้นที่ได้ เช่น:
sqlCopyEditSELECT name
FROM farm_plot
WHERE ST_Contains(geom, ST_SetSRID(ST_Point(100.45, 13.76), 4326));
กรณีนี้ใช้ SQL เพื่อสอบถามว่า “จุดพิกัดนี้อยู่ในแปลงใดบ้าง”
2) ภาษาสำหรับนิยามข้อมูล (Data Definition Language – DDL)
ภาษานิยามข้อมูล (DDL) เป็นภาษาที่ใช้ในการกำหนด โครงสร้างทางตรรกะของฐานข้อมูล ซึ่งครอบคลุมการสร้าง แก้ไข และลบองค์ประกอบของฐานข้อมูล เช่น ตาราง (Tables), สคีมา (Schema), ดัชนี (Index), ความสัมพันธ์ระหว่างตาราง (Constraints) และชนิดข้อมูล (Data Types)
ในบริบทของระบบ สารสนเทศภูมิศาสตร์ (GIS) การใช้ DDL มีความสำคัญในการนิยามตารางที่เก็บข้อมูลเชิงพื้นที่ เช่น จุด (Point), เส้น (Line), พื้นที่ (Polygon) รวมถึงเขตข้อมูลเชิงคุณลักษณะ
✨ คำว่า Schema คืออะไร?
ในฐานข้อมูลเชิงสัมพันธ์ (RDBMS) เช่น PostgreSQL, MySQL หรือ SQL Server นั้น Schema
หมายถึง ชุดของโครงสร้างข้อมูลที่จัดกลุ่มอยู่ด้วยกัน ซึ่งอาจประกอบด้วย:
- ตาราง (Tables)
- วิว (Views)
- ฟังก์ชัน (Functions)
- ดรรชนี (Indexes)
- ความสัมพันธ์เชิงตรรกะ (Constraints)
📘 คำสั่งสำคัญใน DDL
ประเภทคำสั่ง | คำอธิบาย | ตัวอย่าง |
---|---|---|
CREATE | ใช้สำหรับการสร้างตาราง, ดรรชนี, หรือสคีมา | CREATE TABLE , CREATE INDEX |
ALTER | ใช้ปรับโครงสร้างตาราง เช่น เพิ่ม/ลบฟิลด์ | ALTER TABLE ADD COLUMN |
DROP | ลบโครงสร้างตารางหรือดรรชนี | DROP TABLE , DROP INDEX |
🧭 ตัวอย่าง DDL สำหรับระบบ GIS (ใช้ใน PostGIS หรือ SpatiaLite)
1. สร้างตารางแปลงเกษตรกรรม
sqlCopyEditCREATE TABLE farm_plot (
plot_id SERIAL PRIMARY KEY,
owner_id INTEGER NOT NULL,
area DECIMAL(10,2),
land_use TEXT
);
2. เพิ่มคอลัมน์ข้อมูลเชิงพื้นที่
sqlCopyEditSELECT AddGeometryColumn('public', 'farm_plot', 'geom', 4326, 'POLYGON', 2);
ใช้ใน PostGIS เพื่อเพิ่มเขตข้อมูลที่ใช้เก็บ รูปทรงแปลงเกษตร โดยใช้ระบบพิกัด EPSG:4326
3. สร้างดรรชนีเชิงพื้นที่
sqlCopyEditCREATE INDEX idx_farm_geom
ON farm_plot
USING GIST (geom);
ดรรชนี GIST ช่วยเพิ่มประสิทธิภาพการค้นหาข้อมูลเชิงพื้นที่ เช่น
ST_Intersects()
,ST_Within()
4. ปรับโครงสร้างตาราง (เช่น เพิ่มคอลัมน์)
sqlCopyEditALTER TABLE farm_plot
ADD COLUMN crop_type TEXT;
5. ลบตาราง (หากไม่ต้องการ)
sqlCopyEditDROP TABLE farm_plot;
✅ สรุปความสำคัญของ DDL ใน GIS Database
- ช่วยกำหนดรูปแบบโครงสร้างข้อมูลให้ชัดเจน (Data Model)
- รองรับการจัดเก็บ ข้อมูลเชิงคุณลักษณะและเชิงพื้นที่
- สนับสนุนการทำงานร่วมกับเครื่องมือ GIS เช่น QGIS, ArcGIS ผ่าน PostGIS หรือ SpatiaLite
- ปรับแต่งโครงสร้างเพื่อเพิ่มประสิทธิภาพการค้นหาหรือวิเคราะห์เชิงพื้นที่
3) ภาษาสำหรับการจัดการข้อมูล (Data Manipulation Language – DML)
ภาษาจัดการข้อมูล (DML) เป็นองค์ประกอบสำคัญของ Structured Query Language (SQL) ซึ่งใช้สำหรับ ควบคุมและจัดการข้อมูลภายในตารางของฐานข้อมูล โดยมุ่งเน้นที่การกระทำกับระเบียนข้อมูล (Records) ที่ถูกกำหนดโครงสร้างไว้แล้วผ่านคำสั่ง DDL (Data Definition Language)
ในบริบทของระบบสารสนเทศภูมิศาสตร์ (GIS) คำสั่ง DML ถูกใช้เพื่อจัดการข้อมูลเชิงคุณลักษณะ (Attribute Data) หรือแม้แต่ข้อมูลเชิงพื้นที่ (Spatial Data) ที่อยู่ในตารางของระบบ GIS เช่น ข้อมูลแปลงที่ดิน เส้นทางคมนาคม แหล่งน้ำ ฯลฯ
🔹 คำสั่งหลักในกลุ่ม DML
คำสั่ง | ความหมาย | ตัวอย่าง |
---|---|---|
SELECT | ค้นคืนข้อมูลจากตาราง | SELECT * FROM landuse; |
INSERT | เพิ่มระเบียนใหม่เข้าไปในตาราง | INSERT INTO farmer (name, village) VALUES ('สมชาย', 'บ้านโนนสวรรค์'); |
UPDATE | ปรับปรุงข้อมูลในระเบียนที่มีอยู่ | UPDATE landuse SET type = 'เกษตร' WHERE id = 1; |
DELETE | ลบข้อมูลระเบียนออกจากตาราง | DELETE FROM river WHERE name = 'คลองบางไทร'; |
SQL DML เป็นภาษาในกลุ่ม 4GL (Fourth Generation Language) ที่มีความง่ายในการเรียนรู้และใช้งาน เมื่อเทียบกับภาษาในยุคที่ 3 เช่น COBOL, C, หรือ Pascal
🌍 ตัวอย่าง DML เชิงพื้นที่ใน GIS (Spatial DML)
🔸 การค้นหาแปลงที่ดินที่อยู่ในรัศมี 1 กม. จากสถานีวัดอากาศ
sqlCopyEditSELECT plot_id, owner
FROM farm_plot
WHERE ST_DWithin(geom, ST_SetSRID(ST_MakePoint(100.75, 13.75), 4326), 1000);
🔸 การเพิ่มข้อมูลตำแหน่งจุดตรวจสุขภาพลงในตาราง health_check_point
sqlCopyEditINSERT INTO health_check_point (name, geom)
VALUES ('จุดตรวจ A', ST_SetSRID(ST_MakePoint(100.5, 13.9), 4326));
🧠 ความสามารถขยายเพิ่มเติมของ DML
- DBMS หลายระบบ (เช่น PostgreSQL/PostGIS, SQLite/SpatiaLite) สามารถใช้ DML กับข้อมูลเชิงพื้นที่ได้โดยตรง
- สนับสนุน QBE (Query By Example) และ QUEL ซึ่งเป็นเครื่องมือเสริมในการสอบถามข้อมูลด้วยภาพหรือตัวอย่าง
- ระบบ DBMS บางระบบยังรองรับ Embedded SQL ที่สามารถฝัง SQL ลงในภาษาโปรแกรมอื่น เช่น Python, C, หรือ Java เพื่อสร้างโปรแกรมประยุกต์ GIS
✅ สรุป
- DML คือภาษาที่ใช้จัดการระเบียนข้อมูลภายในโครงสร้างฐานข้อมูลที่สร้างโดย DDL
- ใช้สำหรับการ เรียกดู เพิ่ม ลบ ปรับปรุงข้อมูล ทั้งเชิงคุณลักษณะและเชิงพื้นที่
- เป็นพื้นฐานสำคัญของระบบการวิเคราะห์ข้อมูล GIS โดยเฉพาะเมื่อเชื่อมกับฟังก์ชันการวิเคราะห์เชิงพื้นที่ใน Spatial DBMS
4) ภาษาสำหรับการควบคุมข้อมูล (Data Control Language – DCL)
ภาษาสำหรับการควบคุมข้อมูล (DCL) เป็นชุดคำสั่งภายใต้ Structured Query Language (SQL) ที่ออกแบบมาเพื่อ ควบคุมสิทธิการเข้าถึง (Access Control) และ การดำเนินการกับข้อมูลในฐานข้อมูล (Authorization) โดยมีเป้าหมายหลักในการรักษา ความปลอดภัย ความถูกต้อง (Data Integrity) และการป้องกัน ความขัดแย้งของข้อมูล (Concurrency Control) เมื่อมีผู้ใช้หลายคนเข้าถึงข้อมูลพร้อมกัน
🔐 ความสำคัญของ DCL ในระบบฐานข้อมูล GIS
- ควบคุมสิทธิของผู้ใช้งาน GIS แต่ละกลุ่ม เช่น นักวิเคราะห์, นักสำรวจภาคสนาม, ผู้บริหาร
- ป้องกันการลบหรือแก้ไขข้อมูลโดยไม่ได้รับอนุญาต
- สนับสนุนระบบหลายผู้ใช้ (Multi-user Environment) เช่น WebGIS, QGIS + PostgreSQL (PostGIS)
🔑 คำสั่งสำคัญใน DCL
คำสั่ง | ความหมาย | ตัวอย่างการใช้ |
---|---|---|
GRANT | มอบสิทธิให้ผู้ใช้เข้าถึงหรือกระทำการกับฐานข้อมูล | GRANT SELECT, INSERT ON landuse TO user_gis; |
REVOKE | เพิกถอนสิทธิที่เคยมอบให้ผู้ใช้ | REVOKE INSERT ON landuse FROM user_gis; |
📦 กรณีศึกษาการใช้งานในระบบ GIS (PostGIS)
🔸 การให้สิทธิอ่านเฉพาะข้อมูลพื้นที่ป่าไม้
sqlCopyEditGRANT SELECT ON forest_boundary TO analyst_group;
🔸 การให้สิทธิแก้ไขเฉพาะตำแหน่งจุดตรวจอากาศ
sqlCopyEditGRANT SELECT, UPDATE ON air_station_point TO station_editor;
🔸 ยกเลิกสิทธิการเพิ่มข้อมูลในชั้นข้อมูลที่ดิน
sqlCopyEditREVOKE INSERT ON land_parcel FROM trainee_user;
คำสั่งเหล่านี้ทำให้สามารถจัดการการเข้าถึงและป้องกันการแก้ไขข้อมูล GIS ที่สำคัญได้อย่างเป็นระบบ
🔄 การทำงานร่วมกับ Role-Based Access Control (RBAC)
- ผู้ใช้หลายคนสามารถรวมเป็นกลุ่ม (Role)
- กำหนดสิทธิในระดับ Role แล้วมอบให้ผู้ใช้
- เหมาะสำหรับระบบ GIS ที่มีหลายระดับการใช้งาน เช่น QGIS Server, GeoServer, หรือ WebGIS ที่ใช้ PostgreSQL/PostGIS
✅ สรุป
ประเด็นสำคัญ | รายละเอียด |
---|---|
จุดมุ่งหมายของ DCL | ควบคุมความปลอดภัย ความถูกต้อง และการเข้าถึงของผู้ใช้ในฐานข้อมูล |
คำสั่งสำคัญ | GRANT (ให้สิทธิ), REVOKE (เพิกถอนสิทธิ) |
ความสำคัญใน GIS | ป้องกันข้อมูลจากการถูกลบ/แก้ไขโดยไม่ได้รับอนุญาต สนับสนุนงานภาคสนามและการแบ่งงานร่วมกัน |
ระบบที่สนับสนุน | PostgreSQL/PostGIS, MySQL, SQL Server, Oracle Spatial |