9.06.2554

ปฏิบัติการที่6 SQL

H: จากข้อ e เมื่อแปลออกมาเป็นภาษาคำถามของมนุษย์จะได้ว่า  ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต อาจารย์ที่ปรึกษา และชั้น จากตารางนักเรียน (student) โดยมีเงือนไขคือเป็นนิสิตชั้นปีที่ 2 ให้ลองแปลข้อ f ออกมาเป็นภาษาคำถามของมนุษย์
ตอบ   
F: SELECT studentid,Name, Advisor,Class,Hobby
FROM student 
WHERE Hobby LIKE'อ่าน';
            
  
            จากเงื่อนไขด้ายบนสามารถอธิบายได้ดังนี้  ให้เลือกให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต อาจารย์ที่ปรึกษา ชั้น และงานอดิเรก จากตารางนักเรียน(student)โดยมีเงือนไขคือ ตารางงานอดิเรกโดยมีคำว่า
อ่านหนังสือ
  
I: ให้นิสิตสืบค้นข้อมูลด้วยภาษา SQL ตามคำถาม ให้เลือกฟิลด์ทั้งหมดจากตารางรายวิชา (subject)
ตอบ  
SELECT subjectid,Name,Credit,Book,Teacher
FROM subject;
จากการเขียนเงื่อนไขจะได้ตามภาพ



J: ให้นิสิตสืบค้นข้อมูลด้วยภาษา SQL ตามคำถาม ให้เลือกฟิลด์รหัสรายวิชา ชื่อรายวิชา และจำนวนหน่วยกิต จากตารางรายวิชา (subject)"
ตอบ
SELECT subjectid,Name,Credit
FROM subject;
จากการเขียนเงื่อนไขจะได้ดังภาพ



K : ให้นิสิตสืบค้นข้อมูลด้วยภาษาSQLตามคำถาม ให้เลือกฟิลด์รหัสรายวิชา ชื่อรายวิชา และจำนวนหน่วยกิต จากตารางรายวิชา (subject) โดยมีเงือนไขคือเป็นรายวิชา 104111
ตอบ
SELECT subjectid,Name,Credit
FROM subject
WHERE subjectid=104111;
จะได้ดังปรากฏณ์ดังนี้



L: ทดลองพิมพ์ SELECT Student.Studentid,Student.Name,Register.Score,Register.Grade FROM Register,student WHERE  (Register.Studentid=Student.Studentid AND Register.Studentid=4902) แล้วเลือก Run Query
ตอบ
จากการเขียนเงื่อนไขจะได้ตามภาพ



M: ทดลองปรับเป็น SELECT student.Studentid,student.Name,Register.Score,Register.Grade,Subject.Name FROM Register,Student,Subject WHERE(Register.Studentid=student.Studentid AND Register.Studentid=4902 ) AND (Register.Subjectid=Subject.Subjectid)
ตอบ
จากการเขียนเงื่อนไขจะได้ตามภาพ



N: ทดลองปรับเป็น  SELECT student.Studentid,student.Name,Register.Score,Register.Grade,Subject.Name 
FROM Register,student,Subject WHERE (Register.Studentid=student.Studentid) AND (Register.Subjectid=Subject.Subjectid AND Register.Subjectid=104111)
ตอบ
จากการเขียนเงื่อนไขจะได้ตามภาพ



O:จากข้อ "m" เมื่อแปลออกมาเป็นภาษาคำถามของมนุษย์จะได้ว่า "ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต คะแนน เกรด และชื่อรายวิชา จากตารางนักเรียน(student) การลงทะเบียน(Register) และรายวิชา(Subject) โดยมีเงือนไขคือแสดงเฉพาะนิสิตรหัส 4902 เท่านั้น"ให้ลองแปล "n" ออกมาเป็นภาษาคำถามของมนุษย์
ตอบ
ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต คะแนน เกรด และชื่อรายวิชาจากตารางนักเรียน (student)การลงทะเบียน (Register) และรายวิชา (Subject) โดยมีเงือนไขคือแสดงรหัสรายวิชา 104111 เท่านั้น


P: ให้นิสิตสืบค้นข้อมูลด้วยภาษา SQL ตามคำถาม ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต คะแนน เกรด และชื่อรายวิชา จากตารางนักเรียน  (Student) การลงทะเบียน (Register) และรายวิชา (Subject) โดยมีเงือนไขคือแสดงเฉพาะ             
รายวิชารหัส 104111  เท่านั้น และนิสิตอยู่ในชมรมภูมิศาสตร์เท่านั้น
ตอบ
                SELECT Student.Studentid,student.Name,Register.Score,Register.Grade,Subject.Name ,student.Club
FROM Register,student,Subject 
WHERE Register.Studentid=student.Studentid AND Register.Subjectid=Subject.Subjectid AND Register.Subjectid=104111 AND student.Club='ภูมิศาสตร์';
จะได้ดังภาพ


9.04.2554

Structured Query Language ; SQL

Structured  Query Language ; SQL
        SQL จัดเป็นภาษามาตรฐานบนระบบฐานข้อมูลเชิงสัมพันธ์  ซึ่งเป็นภาษาที่สามารถใช้งานได้ในคอมพิวเตอร์หลายระดับด้วยกัน  ไม่ว่าจะเป็นระดับเมนเฟรมคอมพิวเตอร์จนถึงไมโครคอมพิวเตอร์  ชุดคำสั่ง หรือ ภาษา SQL นั้นถูกพัฒนาจากแนวความคิดทางคณิตศาสตร์ คือ Relational Algebra  และ    Relation Calculus  ตามแนวคิดของเทคโนโลยีฐานข้อมูลเชิงสัมพันธ์  ที่ E.F. Codd เป็นผู้คิดค้นขึ้นเมื่อปี ค.ศ. 1970 และต่อมาบริษัท IBM จึงเริ่มทำการวิจัยพัฒนาเมื่อ ปี ค.ศ. 1974 โดยใช้ชื่อว่า “SEQUEL”  (Structured English  Query  Language) จากนั้นจึงมีการปรับปรุงและเปลี่ยนชื่อมาเป็น SQL
       หลังจากปี ค.ศ. 1970 เป็นต้นมา ระบบฐานข้อมูล   ORACLE ซึ่งถูกพัฒนาโดยบริษัท ORACLE  Corporation และถือเป็นก้าวแรกในเชิงพาณิชย์สำหรับการพัฒนาระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่ตั้งอยู่บนพื้นฐานของ SQL และต่อมาก็มีผลิตภัณฑ์อื่นๆ พัฒนาตามมา เช่น INGRESS
      เมื่อมีผลิตภัณฑ์จากผู้ผลิตต่างๆ มากขึ้น จึงทำให้เกิด SQL หลายๆรูปแบบจากผลิตภัณฑ์ต่างๆ ดังนั้นในราวปี ค.ศ. 1982 ทาง ANSI     จึงได้คิดค้นและร่างมาตรฐานของชุดคำสั่ง SQL เพื่อให้ผู้ผลิตรายต่างๆ สร้างชุดคำสั่งดังกล่าวให้อยู่ภายใต้มาตรฐานเดียวกัน  แต่ในปัจจุบันแต่ละผลิตภัณฑ์ต่างก็มีการเพิ่มคุณสมบัติพิเศษเพิ่มเติมเพื่อให้มีประสิทธิภาพยิ่งขึ้นและถือเป็นจุดขายของผลิตภัณฑ์  แต่ทั้งนี้ โดยหลักการแล้วชุดคำสั่งดังกล่าวยังคงตั้งอยู่บนพื้นฐานที่ทาง ANSI บัญญัติไว้ โดยในปัจจุบันมีระบบการจัดการฐานข้อมูลต่างๆ อาทิเช่น ORACLE , DB2 , SYBASE , Informix , MS-SQL , MS-Access ตลอดจน MS-FoxPro เป็นต้น   ซึ่งการใช้งานภาษา SQL ในปัจจุบันมี 2 ลักษณะ คือ แบบโต้ตอบ (Interactive SQL) และ แบบฝังตัวในโปรแกรม (Embedded  SQL)
วัตถุประสงค์ของ SQL
                1. สร้างฐานข้อมูลและโครงสร้างรีเลชั่น
                2. สนับสนุนงานด้านการจัดการฐานข้อมูลพื้นฐาน เช่น การเพิ่ม การปรับปรุง การลบข้อมูลจากรีเลชั่น
                3. สนับสนุนการค้นหา สืบถาม หรือคิวรี่ข้อมูลและการแปลงข้อมูลให้อยู่ในรูปสารสนเทศ
ประเภทของคำสั่งภาษา SQL
                1. ภาษานิยามข้อมูล (Data Definition Language : DDL)   เป็นกลุ่มคำสั่งที่ใช้ในการสร้างฐานข้อมูล การกำหนดโครงสร้างข้อมูลว่ามีคอลัมน์หรือแอตตริบิวต์ใด     ชนิดข้อมูลเป็นประเภทใด รวมทั้งการจัดการด้านการเพิ่ม แก้ไข ลบ แอตตริบิวต์ต่างๆในรีเลชั่น และการสร้างดัชนี
                2. ภาษาการจัดการข้อมูล (Data Manipulation Language : DML) เป็นกลุ่มคำสั่งที่ถือเป็นแกนสำคัญของภาษา SQL  โดยกลุ่มคำสั่งเหล่านี้จะใช้ในการ  Update   เพิ่ม   ปรับปรุงและการ    Query   ข้อมูลในฐานข้อมูล ซึ่งอาจเป็นชุดคำสั่งในลักษณะ Interactive SQL  หรือ  Embedded SQL ก็ได้
                3. ภาษาควบคุมข้อมูล (Data Control Language : DCL)     ซึ่งเป็นกลุ่มคำสั่งที่จะช่วยให้ผู้บริหาร      ฐานข้อมูล    (DBA) สามารถควบคุมฐานข้อมูลเพื่อกำหนดสิทธิการอนุญาต  (Grant)   หรือการยกเลิกการเข้าใช้ (Revoke)  ฐานข้อมูล ซึ่งเป็นกระบวนการป้องกันความปลอดภัยในฐานข้อมูล  รวมทั้งการจัดการทรานแซกชั่น (Transaction Management) แต่ละ DBMS จะมีการกำหนดชนิดข้อมูลซึ่งประกอบไปด้วยตัวแปรต่างๆ เช่น numeric , string , date , time เป็นต้น
                                                                        ตารางแสดงชนิดของข้อมูลของ ORACLE7


ภาษานิยามข้อมูล (Data Definition Language : DDL)
        CREATE  คำสั่งที่ใช้ในการสร้าง  เช่น CREATE TABLE สร้างตาราง ,  CREATE VIEW สร้างวิว
        DROP       คำสั่งที่ใช้ในการลบ เช่น DROP TABLE ลบตาราง  , DROP  VIEW ลบวิว
        ALTER     คำสั่งที่ใช้ในการเปลี่ยนแปลงโครงสร้างตาราง
ภาษาการจัดการข้อมูล (Data Manipulation Language : DML)
        SELECT    คำสั่งที่ใช้ในการคิวรีข้อมูลในฐานข้อมูล
        INSERT     คำสั่งที่ใช้เพิ่มข้อมูลในตาราง
        UPDATE   คำสั่งที่ใช้ปรับปรุงข้อมูล (Update) ในตาราง
        DELETE   คำสั่งที่ใช้ลบข้อมูลออกจากตาราง
Select  Statement
    คำสั่ง Select เป็นคำสั่งที่ใช้เรียกดูข้อมูลจากตารางข้อมูลตามความต้องการของผู้ใช้ โดยสามารถใช้ร่วมกับ Function ทางคณิตศาสตร์   หรือเงื่อนไขประกอบต่างๆ ใน SQL  Command  ได้    อีกทั้งยังสามารถเรียกดูข้อมูลจากหลายๆตารางพร้อมกัน  ซึ่งประโยค SELECT จะมีรูปแบบการใช้งานดังนี้

Column_expression  เป็นการแทนค่าชื่อคอลัมน์ หรือ expression , table_name คือชื่อของตารางที่ต้องการเข้าถึงเพื่อวิวข้อมูล และ alias  คือชื่อย่อของตารางที่ใช้แทน table_name โดยลำดับของการประมวลผลชุดคำสั่ง SELECT มีดังนี้
? FROM             กำหนดตารางที่ต้องการใช้งาน
? WHERE          สร้างเงื่อนไขเพื่อการกรอง (filter) แถวที่ต้องการ
? GROUP BY    จัดกลุ่ม แถว ที่มีค่าคอลัมน์เดียวกัน
? HAVING        กรองกลุ่มเนื้อหาในบางเงื่อนไขจาก  GROUP BY
? ORDER BY      กำหนดให้เรียงผลลัพธ์  โดยที่  ASC       คือการเรียงลำดับจากน้อยไปมาก (Default)  และ DESC    คือการเรียงลำดับจากมากไปน้อย
                      ใน  SQL  สามารถใช้เครื่องหมายเปรียบเทียบ (Comparison Operators) ต่างๆ ได้ดังนี้
=   ,  ?  ,   ?    ,  ?  ,  ?   และ   ? ?  หรือ   ?    หรือใช้เครื่องหมายทางตรรกะ (logical  Operators)  ได้แก่  AND , OR , NOT  หรือการใช้เงื่อนไข (Condition) อื่นๆ  เช่น
- BETWEEN  /  NOT BETWEEN   ใช้แสดงข้อมูลเป็นช่วงๆ หรือระหว่างข้อมูล A ถึง B
- IN /  NOT IN                   ใช้แสดงตำแหน่งข้อมูลหรือกำหนดตำแหน่ง
- LIKE / NOT LIKE                        เป็นโอเปอเรเตอร์ที่ใช้ในการค้นหาข้อมูลด้วยตัวอักษรด้วยเครื่องหมาย
  Wildcard เช่น % และ _  คล้ายๆ การใช้ * ใน DOS
- IS NULL / IS NOT NULL            ใช้ค้นหาข้อมูลที่บางคอลัมน์ของตาราง  มี/ไม่มี  ข้อมูล
การใช้ฟังก์ชั่นต่างๆ ใน SQL
- COUNT  เป็นฟังก์ชั่นใช้ในการนับคำนวณ
- SUM       เป็นฟังก์ชั่นหาผลรวม
- AVG       เป็นฟังก์ชั่นหาค่าเฉลี่ย
- MIN        เป็นฟังก์ชั่นหาค่าต่ำสุด
- MAX     เป็นฟังก์ชั่นหาค่าสูงสุด
และยังมี การใช้ SQL Command สำหรับการจัดการข้อมูลในลักษณะอื่นๆ อีกมากมาย เช่น  NESTED QUERY การ  JOIN  ,  การ   UNION  , INTERSECT , EXCEPT     ตลอดจนการ      INSERT  DELETE และ UPDATE ข้อมูลในตาราง     ซึ่งสามารถติดตามได้จากหนังสือหรือ คู่มือภาษา  SQL ทั่วๆ  ไป
ภาษาควบคุมข้อมูล (Data Control  Language ; DCL)  
           การควบคุมข้อมูลถือเป็นการควบคุมความปลอดภัยในการใช้งานข้อมูลจากฐานข้อมูล กล่าวคือ ฐานข้อมูลมีวัตถุประสงค์ที่ต้องการให้ผู้ใช้หลายๆคนสามารถเข้าถึงข้อมูลส่วนกลางได้ ซึ่งหากปราศจากควบคุมความปลอดภัยในฐานข้อมูลแล้ว ย่อมก่อให้เกิดปัญหาต่างๆตามมา    ดังนั้นผู้บริหารฐานข้อมูล     จึงจำเป็นต้องทำการกำหนดสิทธิการเข้าใช้งานที่ควรจะเป็นให้แก่ User ในแต่ละระดับ ว่าจะสามารถเข้าถึงข้อมูลได้มากน้อยอย่างไร
           ความปลอดภัยในฐานข้อมูลถือเป็นสิ่งสำคัญที่ไม่ควรมองข้าม   เพราะข้อมูลอาจเกิดความเสียหายได้ถ้าไม่มีการควบคุมความปลอดภัย   ดังนั้นเมื่อมีการควบคุมความปลอดภัย นั่นหมายถึงการป้องกันมิให้ผู้ที่ไม่มีสิทธิในการเข้าถึงข้อมูลจัดการกับข้อมูลในฐานข้อมูลได้ เช่น การกำหนดให้ผู้ใช้งานในแผนกแคชเชียร์สามารถเข้าถึงข้อมูลเพียงแค่เรียกดูราคาสินค้าเท่านั้น  ไม่สามารถปรับปรุงข้อมูลราคาสินค้าเหล่านั้นได้   แต่พนักงานการตลาดที่ดูแลเรื่องราคาสินค้าและโปรโมชั่น มีสิทธิเข้าถึงข้อมูลราคาและเปลี่ยนแปลงราคาสินค้าได้ เป็นต้น การจัดการดังกล่าวจะทำให้ฐานข้อมูลในองค์การมีความปลอดภัยต่อการบุกรุกไม่ว่าจะเป็นการจงใจหรือไม่ตั้งใจก็ตาม    และช่วยลดความเสี่ยงต่อการสูญหายของข้อมูลด้วย
           นอกจากความปลอดภัยในการกำหนดสิทธิการใช้งานของผู้ใช้แล้ว  ยังรวมไปถึงการควบคุมภาวะการเข้าพร้อมกัน (Concurrency Control) ด้วยซึ่งหากปราศจากการควบคุมอาจก่อให้เกิดความผิดพลาดในการ   อัพเดทข้อมูลและส่งผลต่อความเสียหายในข้อมูลได้  เช่น การบันทึกข้อมูลบัญชีของธนาคารแห่งหนึ่ง ซึ่งวันวันหนึ่งมีลูกค้ามากมายหลายคนเข้าใช้บริการตู้ ATM จากหลายๆ สถานที่   ถ้าหากไม่มีการควบคุมภาวะการเข้าถึงข้อมูลพร้อมกัน ลูกค้า ตั้งแต่2 คน ขึ้นไปใช้ATM พร้อมกัน ข้อมูลทางบัญชีอาจรับข้อมูลของลูกค้าคนหนึ่งแต่อีกคนหนึ่งอาจไม่รับ    ทำให้ข้อมูลเสียหายไม่ตรงกับความเป็นจริงได้  จึงต้องมีการควบคุมภาวะการเข้าพร้อมกันด้วยการให้ข้อมูลของฝ่ายใดฝ่ายหนึ่งเกิดการรอ    (wait)   จนกว่ารายการของลูกค้าคนที่เข้าถึงข้อมูลได้ก่อนจะแล้วเสร็จ  แล้วจึงค่อยดำเนินการต่อไป
คำสั่ง GRANT  เป็นคำสั่งที่ใช้ในการกำหนดสิทธิในการเข้าถึงข้อมูลว่าจะให้ผู้ใช้รายใดเข้าถึงฐานข้อมูล  สามารถจัดการข้อมูลในตาราง  หรือวิว ใดบ้าง  เช่น กำหนดให้ผู้ใช้บางคนสามารถ     SELECT   ข้อมูลได้อย่างเดียว   ในขณะที่บางคนสามารถปรับปรุงเปลี่ยนแปลงแก้ไขข้อมูลได้  ด้วยการ INSERT  DELETE เป็นต้น



คำสั่ง REVOKE   เมื่อสามารถกำหนดสิทธิการใช้งานแก่ผู้ใช้ได้ ก็สามารถยกเลิกสิทธิ์บางสิทธิ์ได้   

ตัวอย่างโปรแกรมสำเร็จรูปในการจัดการฐานข้อมูล
         (Microsoft  Access  , Microsoft  SQL Server   และ  MySQL) 1. โปรแกรม Microsoft Access  
        เป็นโปรแกรมการจัดการฐานข้อมูลในช่วงต้นๆ ของ กลุ่มบริษัทไมโครซอฟท์   ซึ่งออกแบบให้ใช้งานจัดการฐานข้อมูลได้ง่าย  ไม่ซับซ้อน  ซึ่งประกอบไปด้วยองค์ประกอบหลักของแถบเครื่องมือ (tool bar) ตามโครงสร้างของโปรแกรมไมโครซอฟท์ออฟฟิศทั่วไป  ส่วนของการจัดการฐานข้อมูลประกอบไปด้วย ตาราง แบบสอบถาม ฟอร์ม รายงาน แมโครและโมดูล ดังภาพข้างล่าง
        ในภาพแสดงถึงมุมมองหนึ่งใน Microsoft Access ที่แสดงโครงสร้างของข้อมูล Customers ในระบบการจัดการฐานข้อมูลของบริษัท Northwind  ว่าประกอบไปด้วยกลุ่มของ ฟีลด์ข้อมูลใดบ้างและชนิดข้อมูล (Data types) เป็นอย่างไร  พร้อมกับคำอธิบายข้อมูล (Data description) 

        Microsoft Access มีความสามารถในการแสดงในมุมมองที่หลากหลาย ดังภาพข้างล่างบนเป็นลักษณะการเรียกดูฐานข้อมูลพนักงานในลักษณะที่เรียกว่ามุมมอง ฟอร์ม (Form View) สามารถแสดงข้อมูลที่จำเป็นได้ภายในหน้าจอเดียวกัน และมีรูปแบบสวยงาม ซึ่งมีลักษณะการใช้งานที่ง่ายกว่ามุมมองตารางข้อมูล (Table หรือ Relation) ดังภาพข้างล่าง

    

       Query     คิวรี่ เป็นองค์ประกอบที่สำคัญมากของระบบการจัดการฐานข้อมูล เพราะหมายถึงการสอบถามหรือเรียกดูข้อมูลตามความต้องการของผู้ใช้  (Customized  data  inquiry)   ซึ่งผู้ใช้สามารถตั้งคำถามได้ตามต้องการเช่น ต้องการทราบยอดขายของสินค้าในปี 1995 ดังตัวอย่างในภาพข้างล่างMicrosoft Access ก็จะแสดงข้อมูลออกมาให้ในตารางขวามือ   ลักษณะการเรียกดูข้อมูลตามวัตถุประสงค์ใช้งานแบบนี้เรียกว่า  แบบสอบถามหรือ  “QUER

2. Microsoft SQL Server
        เป็นโปรแกรมการจัดการฐานข้อมูลในตระกูล   Microsoft อีกเช่นกัน   แต่เน้นใช้งานในระบบเครือข่าย Client / Server โดยเฉพาะ  ดังนั้นการใช้งานฐานข้อมูล SQL Server ต้องมีการสร้างระบบเครือข่ายและให้ Sever เป็นฐานข้อมูล  ส่วนที่ Clients จะมีเพียงแต่ตัวโปรแกรมเท่านั้น  เป็นการประหยัดทรัพยากรหน่วยความจำในเครื่อง Clients  และต้องการให้มีศูนย์กลางข้อมูลอยู่เพียงแหล่งเดียวเพื่อการจัดการและควบคุมการเข้าใช้ได้อย่างมีประสิทธิภาพ   โปรแกรม MS-SQL Server  จึงถูกพัฒนาขึ้นภายใต้การใช้ภาษา SQL ที่เป็นสากล  ที่สามารถใช้งานร่วมกับฐานข้อมูลอื่นที่มีโครงสร้างภาษาเดียวกัน เช่น ฐานข้อมูลที่สร้างขึ้นจาก Microsoft Access ก็สามารถใช้งานร่วมกันกับ SQL Server ได้เลย  คำสั่งต่างๆ ที่ใช้ใน SQL Server กับ Access จึงเป็นคำสั่งเดียวกัน   และออกแบบให้งานได้ง่ายด้วยหน้าต่าง
Windows ที่ผู้ใช้ส่วนใหญ่คุ้นเคย  การใช้งาน SQL Server จะต้องอยู่บนสถาปัตยกรรมโครงสร้างฐานข้อมูลแบบ Client /

Server  และมีการเชื่อมต่อ (connect) กับฐานข้อมูลทุกครั้งที่มีการใช้งาน
ภาพแสดงหน้าต่างโปรแกรมการจัดการฐานข้อมูล Microsoft SQL Server 2000
3. MySQL
        โปรแกรม MySQL   เป็นโปรแกรมการจัดการฐานข้อมูลอีกโปรแกรมหนึ่งที่ใช้ภาษา   SQL  เป็นที่นิยมและรู้จักกันในวงการ  DBMS อย่างกว้างขวาง   ซึ่งนักบริหารฐานข้อมูลนิยมใช้กันมากในปัจจุบัน   เพราะใช้งานได้ดีในระบบปฏิบัติการทุกชนิด  โดยเฉพาะอย่างยิ่งในระบบปฏิบัติการลีนุกซ์  ซึ่งรองรับ  My SQL  ได้เป็นอย่างดี
MySQL เป็นโปรแกรมบริหารจัดการด้านฐานข้อมูล (Database Management)
                MySQL ทำงานในลักษณะฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System : RDBMS)   คำว่า ฐานข้อมูลเชิงสัมพันธ์ ก็คือ ฐานข้อมูลที่แยกข้อมูลไปเก็บเอาไว้ในหน่วยย่อย ซึ่งเรียกว่าตารางข้อมูล   (Table)  แทนที่จะเก็บข้อมูลทั้งหมดรวมกันเอาไว้แห่งเดียว    และแต่ละหน่วยย่อยที่ใช้เก็บข้อมูลต่างมีความสัมพันธ์เชื่อมโยงกันอยู่ ยกตัวอย่างเช่น ข้อมูลสินค้า ซึ่งสามารถจัดเก็บแยกกันได้ แล้วอาศัยรหัสของสินค้าในการเรียกค้นข้อมูลที่จัดเก็บแยกกันเอาไว้ การที่เราจะเข้าไปจัดการกับข้อมูล ต้องอาศัยภาษาคอมพิวเตอร์ที่เรียกว่า  SQL   ซึ่งย่อมาจาก Structure Query Language ชื่อ MySQL ก็สื่อให้ทราบว่าเกี่ยวกับภาษา SQL อยู่แล้ว ดังนั้น MySQL จึงทำงานตามคำสั่งภาษา   SQL  ได้ อันเป็นไปตามมาตรฐานของโปรแกรมทางด้านฐานข้อมูลที่จะต้องมีความสามารถรองรับคำสั่งที่เป็นภาษา SQL
        MySQL เป็นโปรแกรมที่เปิดเผยรายละเอียดซอร์สโค้ดต่อบุคคลทั่วไป   (Open Source Software)   ซึ่งหมายความว่า ใครก็ตามที่มีความรู้ทางด้านภาษาคอมพิวเตอร์อย่างดีก็สามารถนำเอาซอร์สโค้ดของโปรแกรม   MySQL  ซึ่งเขียนด้วยภาษา C ไปดัดแปลง ปรับปรุง แก้ไข ให้ตรงกับที่ต้องการได้ทันทีโดยไม่ผิดกฎหมาย ใช้ได้กับระบบปฏิบัติการหลากหลายระบบ เช่น Linux, Solaris,  Mac OS X Server,  OS/2   Warp, Sun OS,  Windows 9x/NT/2000/XP และระบบตระกูล Unix อีกมากมาย ซึ่งทุกระบบปฏิบัติการสามารถเชื่อมโยงและแลกเปลี่ยนข้อมูลกันได้เป็นอย่างดี
ภาพที่ 4.13 ตัวอย่างหน้าต่างของโปรแกรม MySQL  (http://www.mysql.com/)

    ปัจจัยสำคัญอยู่ที่การออกแบบฐานข้อมูล  ซึ่งผู้ใช้งานต้องเข้าใจถึงโครงสร้างเชิงตรรกะของข้อมูลด้วย  จึงจะนำไปประยุกต์ใช้งานได้อย่างเหมาะสม  
ขอขอบคุณ.......http://beprogrammer.tripod.com/WEBprogrammer/sql/sql.html

การเขียนแผนภาพ ER Diagram


คุณลักษณะของ ER Diagram
                1. แสดงได้ด้วยแผนภาพ (Graphical Diagrams) ไม่ว่าจะเป็นเทคนิคโมเดลข้อมูลแบบใดก็ตามจะมีภาษาและรูปภาพทางกราฟฟิกโดยเฉพาะ เพื่อใช้แสดงรายละเอียดข้อมูลทั้งกลุ่มใหญ่และรายละเอียดส่วนย่อย ซึ่งทำ ให้ง่ายต่อการแปลความ เช่น ใช้วงกลม หรือสี่เหลี่ยมแทนเอนทิตีใช้เส้นโค้งหรือเส้นตรงแทนรีเลชันชิป
                2. แสดงชัดเจนถึงความหมายของข้อมูล (Explicit Representation of Semantic) มีทางเลือกในการแสดงความหมายของข้อมูล เราอาจใช้สัญลักษณ์ที่ต่างกันจำ นวนมากบ้างน้อยบ้างเพื่อแสดง แต่จุดสำ คัญคือแผนภาพที่ได้ออกมาควรง่าย ไม่ซับซ้อน และเห็นความหมายของข้อมูลชัดเจน
                3. แสดงรายละเอียดในระดับที่เหมาะสม (Appropriate Level of Detail) กล่าวคือโมเดลระดับตรรกะจะมีรายละเอียดที่เพียงพอที่จะชี้จุดที่ทำ ให้เกิดความแตกต่างระหว่างชนิดของข้อมูลรีเลชันชิปและข้อบังคับต่าง ๆ แต่จะน้อยกว่าโมเดลทางกายภาพโดยเฉพาะอย่างยิ่งสัญลักษณ์หนึ่ง ๆ ไม่ควรมีหลายความหมาย
                4. ไม่พึ่งพิงกับระบบจัดการฐานข้อมูลแบบใดแบบหนึ่ง (DBMS Independence) โมเดลที่ได้จากการออกแบบแล้วควรใช้ได้กับระบบฐานข้อมูลหลายแบบ ได้แก่ แบบความสัมพันธ์, แบบลำ ดับชั้นและแบบเครือข่าย
                5. ง่ายต่อการศึกษาและใช้งาน ในที่นี้จะต้องง่ายเพียงพอสำ หรับผู้ใช้ทุกประเภทจะทำ
ความเข้าใจและนำ ไปใช้ได้

ขั้นตอนการ ออกแบบ ER Model
                ในการออกแบบ ER-Diagram มีด้วยกันหลายขั้นตอนสำ หรับใน 5 ขั้นตอนแรกจะเป็นการออกแบบทางด้านโครงสร้างพื้นฐานของโมเดล ได้แก่ พวกเอนทิตี, รีเลชันชิป, คีย์หลัก, คีย์สำ รอง, คีย์ภายนอก, กฎเกณฑ์ พื้นฐาน จากนั้นจึงเริ่มเพิ่มรายละเอียดในระดับที่ผู้ใช้มองเห็น (User View) และรวมรายละเอียดเหล่านั้นเข้าด้วยกันจึงได้เป็นโมเดลข้อมูลเชิงตรรกะที่สมบูรณ์

 ขั้นตอนที่ 1 การกำ หนดเอนทิตีหลัก
                จากตัวอย่างทั้งหมด สามารถออกแบบฐานข้อมูลโดยเริ่มจากการนำ Requirement ในข้างต้นที่กล่าวมาแล้ว การกำ หนดเอนทิตีนั้นเป็นงานที่ยาก และต้องอาศัยความร่วมมือของผู้ที่เข้าใจระบบที่เราออกแบบ เพื่อ คัดเลือกสิ่งที่ถูกต้อง มีความสำ คัญและเหมาะสมที่สุดมาเป็นเอนทิตี วิธีการอย่างคร่าว ๆ ก็คือให้พิจารณาข้อมูลทั้งหมดที่มี และจัดกลุ่มของข้อมูล โดยดูจากค่า และความหมายถ้าสามารถรวมกลุ่มกันได้ก็ให้รวมเข้าไว้ในเอนทิตีเดียวกัน แล้ว จึงนำ ไป กำ หนดชื่อและความหมายลงในพจนานุกรมข้อมูล และเขียนลงโมเดลข้อมูลด้วยการตั้งชื่อไม่ควรเกิน 20 ตัวอักษร

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

ตัวอย่างเช่น
จงเขียนเป็น ER diagram ของ ฐานข้อมูล COMPANY (ที่กล่าวในข้างต้น) ประกอบด้วย 4
Entity (EMPLOYEE , DEPARTMENT , PROJECT , DEPENDENT)
โดยมีความสัมพันธ์ (Relation type) ดังต่อไปนี้
                1. MANAGES เป็นความสัมพันธ์แบบ 1:1 ระหว่าง Employee กับ Department กล่าวคือ แต่ละ Department ต้องมีผู้จัดการ (Manages) บริหาร 1 คน เสมอ และมีการเก็บข้อมูลวันแรกของการทำ งานของพนักงานทุกคนโดยใช้ Startdate Attribute
                2. WORK_FOR เป็นความสัมพันธ์แบบ 1: N ระหว่าง DEPARTMENT และ EMPLOYEE
                3. SUPERVISION เป็นความสัมพันธ์แบบ 1: N ระหว่าง (ฝ่ายบริหารเช่น ผู้จัดการหรือหัวหน้าแผนก) กับ EMPLOYEE (ผู้ใต้บังคับบัญชา)
                4. CONTROLS เป็นความสัมพันธ์แบบ 1:N ระหว่าง DEPARTMENT กับ PROJECT
                5. WORKS_FOR เป็นความสัมพันธ์แบบM:N ระหว่าง EMPLOYEE กับ DEPARTMENTเพราะ แต่ละ PROJECT มีพนักงานหลายคนทำ งานอยูในเวลาเดียวกับพนักงาน 1 คน สามารถทำ งานได้หลาน PROJECT เช่นกัน
                6. DEPENDENTS_OF เป็นความสัมพันธ์แบบ 1: N ระหว่าง EMPLOYEE กับ
DEPARTMENT โดยความสัมพันธ์เป็นแบบ DEPENDENT

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

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

ขั้นตอนที่ 5 พิจารณาขอบเขตค่าโดเมนของแอตตริบิว
                ให้กำ หนดโดเมนของแอตตริบิวทุกตัวในเอนทิตีแล้วบันทึกในพจนานุกรมข้อมูลโดเมน คือกลุ่มค่าที่ถูกต้องเป็นไปได้สำ หรับแอตตริบิวแต่ละตัว อันได้แก่
                1. ชนิดของข้อมูล (Data Type) เช่น จำ นวนเต็ม, วันที่, ตัวอักษร, ทศนิยม
                2. ความยาว (Length) เช่น 5 หลัก, 35 ตัวอักษร
                3. รูปแบบข้อมูล (Format) เช่น dd/mm/yy (วันที่)
                4. ค่าที่อนุญาต (Allowable value) เช่น เป็นได้เฉพาะวันศุกร์ต้นเดือน
                5. ช่วงของข้อมูลหรือข้อกำ หนดอื่น ๆ (Range, Constraints)
                6. ความหมาย (Meaning) อธิบายความหมายของแอตตริบิวนั้นว่าคืออะไร
                7. ความเป็นหนึ่งเดียว (Uniqueness) ต้องมีค่าเป็นหนึ่งเดียว
                8. ความเป็นนัล (Null support) อนุญาตให้เป็นนัลได้หรือไม่
                9. ค่าโดยปริยาย (Default value) กำ หนดให้มีค่าเป็น 0

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

การเขียน ER Diagram
                Data model หมายถึงกลุ่มของ แนวคิดที่ช่วยเรากำ หนดโครงสร้างของฐานข้อมูลและ ชุดเซทที่เกี่ยวข้องกับชุดคำ สั่งที่ใช้ในการเรียกใช้ และ เปลี่ยนแปลง ข้อมูล และ ในบทนี้นำ เสนอแนวคิด Conceptual Data Modeling ที่เรียกว่า แบบจำ ลอง Entity Relation (ER Model) ที่สามารถ อธิบายภาพรวม (Data View) ของทั้งองค์กรได้ดีในรูปแบบ ER Diagram แบบจำ ลองแบบ E-R Model ถูกออกแบบให้ง่ายต่อความเข้าความเข้าใจของผู้ใช้งาน โดยไม่คำ นึงถึงลักษณะการเก็บทางกายภาพของข้อมูลว่าเก็บอย่างไรที่ใด
                หลังจากที่ได้ความสัมพันธ์ทั้งหมดแล้ว พยายามขจัดความซับซ้อนของ Attribute ในแต่ละ Entity ให้มากที่สุดเพื่อเขียนเป็น Conceptual Schema และเพื่อให้เกิดความเข้าใจง่าย มนุษย์จึงคิด ER Diagram เพื่ออธิบาย Conceptual Schema ให้ง่ายต่อการเข้าใจและตีความ โดยใช้สัญลักษณ์ดังต่อไปนี้
สัญลักษณ์ที่ใช้เขียน ER Diagram



การแปลง ER-DIagram ให้เป็น SubSchema ( Mapping ER Diagram )
   หลังจากที่เราได้ ER Schema เรียบร้อยจะเข้าสู่ Mapping เพื่อให้เขียนอยู่ในรูปสมการง่าย ๆ          
ขั้นตอนที่ 1  ทุก ๆ Entity type E ใน ER Schema เราจะสร้าง Relation R ที่รวบรวม Attribute ของ E นั้นเข้าไว้ในรูปสมการแล้วเลือกเอาหนึ่งใน Attribute ของ R เป็น Key เพื่อใช้เป็นตัวแทนและง่ายต่อการค้นหา โดยใช้สัญลักษณ์ขีดเส้นใต้ และเป็นตัวหนา ส่วนคีย์ภายนอก (Foreign Key) คือ สัญลักษณ์ตัวเอียง

                • EMPLOYEE (FNAME , MINIT ,LNAME ,SSN , BDATE ,ADDRESS ,SEX
                , SUPERSSN, DNO, BIRTHDATE)
                • DEPARTMENT (DNO, DNAM, MGRSSN, MGRSTARTDATE)
                • PROJECT (PNAME, PNUMBER, PLOCATION, DNO )
                • DEPENDENT (SSN, D_NAME, SEX, BDATE, RELATIONSHIP)
                • WORK_FOR (SSN, DNO , HOURS)

                ขั้นตอนที่ 2  สำหรับ weak entity type ใน ER schema เราสร้าง relation R และเอา primary key attribute ของ owner entity W เพื่อเป็นความสัมพันธ์ระหว่างกัน ตัวอย่างเช่น DEPENDENTประกอบด้วย 3 attribute(Dependent_name , sex , และ Birthdate) เราจะเอา ESSN(Primary key attribute ของ EMPLOYEE) มาใส่ใน R ดังนั้น ESSN และ DEPENDENT_NAME รวมกันจะกลายเป็น Primary key
                ขั้นตอนที่ 3 ถ้าความสัมพันธ์ 1:1 ให้เลือกเอา Primary key จากหนึ่ง entity ทั้งสองมาเป็น Foreign key ของ อีก Entity หนึ่ง ในตัวอย่างนี้เรารวมเอา Primary key ของ EMPLOYEE เป็น Foreign key ของ EMPLOYEE เป็น Foreign key ของ DEPARTMENT
                ถ้าความสัมพันธ์ 1:Manay ให้เลือกเอา Primary key จากหนึ่ง entity ด้าน 1 มา เป็น Foreign key ของ อีก Entity หนึ่ง
                ถ้าความสัมพันธ์ Many:Many ให้สร้างรีเลชั่นนั้นเพิ่มเติม โดย เอา Primary key จากหนึ่ง entity ทั้งสองมาเป็น Foreign key
ตัวอย่าง 1 E-R Diagram ระหว่าง อาจารย์ ที่ปรึกษากับนักศึกษา
รูปแสดง ER Diagram ระหว่างอาจารย์ที่ปรึกษากับนักศึกษา  ส่วนความสัมพันธ์นั้นหมายถึง ความสัมพันธ์ระหว่าง entity ตัวอย่างเช่น ความสัมพันธ์ระหว่างนักศึกษาและอาจารย์ ที่ปรึกษา โดยอาจารย์ที่ปรึกษา หนึ่งคนสามารถให้คำ แนะนำ นักศึกษาได้มากกว่า หนึ่งคนและ อาจเขียนในรูปของ Relational Schema ดังต่อไปนี้
อาจารย์ (SSN , ชื่อ อ.จ. , นามสกุล )
นักศึกษา(ชื่อ น.ศ . , นามสกุล น.ศ., SSN) โดยมี SSN เป็น Foreign Key

ตัวอย่างที่ 2 ความสัมพันธ์ระหว่าง อาจารย์กับนักศึกษา ซึ่งสามารถแสดงในรูปแบบของ ER-Diagram
1. Entity Set หมายถึง กลุ่มของสิ่งใดสิ่งหนึ่งที่เหมือนกัน โดยเราใช้กรอบสี่เหลี่ยมล้อมคำ ใช้เป็นสัญลักษณ์ แทนกลุ่มนั้น
2. Relationship set หมายถึง ความสัมพันธ์ระหว่าง Entity โดยเราใช้กรอบรูป Diamond แทน สัญลักษณ์ของ Relationship เช่น แผนผังลําดับงาน: การตัดสินใจ: แนะนำ
3. Attribute คุณสมบัติของ Entity set หรือ Relationship set เช่น วงรี: ชื่อ อาจารย์

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

                1. Fan Traps
                2. Chasm Traps

Fan Traps
                เป็นปัญหาที่ทำให้เกิดความกำกวม(ambiguous) หรือความไม่ชัดเจนในการแสดงข้อมูลที่เราสนใจ โดยปัญหาดังกล่าวเป็นปัญหาที่เกี่ยวข้องกับการจัดความสัมพันธ์ระหว่างเอ็นติตี้ที่มักพบในความสัมพันธ์แบบ one-to-many

Chasm Traps
 เป็นปัญหาที่ความลึกซึ้งกว่าปัญหา Fan Traps กล่าวคือปัญหาของ Chasm Traps นั้นเกิดขึ้นเนื่องจากไม่มีความโยงความสัมพันธ์ระหว่างเอ็นติตี้หรือความสัมพันธ์ขาดหายไป ซึ่งปัญหาดังกล่าวมักจะเกิดกรณีที่มีความสัมพันธ์แบบ Partial Participation

ขอขอบคุณ....

นางสาวอมรรัตน์ โพธิ์มาก รหัสนักศึกษา 49473140043
คณะวิทยาการจัดการ โปรแกรมบริหารธุรกิจ (คอมพิวเตอร์ธุรกิจ) หมู่ 01
มหาวิทยาลัยราชภัฏสวนสุนันทา
E-MAIL : tujung_zeed@hotmail.com