วันเสาร์ที่ 22 พฤศจิกายน พ.ศ. 2557

ภาษาพีเอชพี

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

ชื่อของพีเอชพี

ภาษาพีเอชพี ในชื่อภาษาอังกฤษว่า PHP ซึ่งใช้เป็นคำย่อแบบกล่าวซ้ำ จากคำว่า PHP Hypertext Preprocessor หรือชื่อเดิม Personal Home Page

ตัวอย่างภาษาพีเอชพี

ภาษาพีเอชพี จะเป็นส่วนประกอบภายในเว็บเพจ โดยคำสั่งจะปรากฏระหว่าง <?php ...  ?> เช่น
<?php
    echo "Hello, World!";
?>

<?php
    echo "Hello World."; 
?>

<script language="php">
    echo "Hello World.";
</script>
โครงสร้าง ควบคุมของ PHP จะมีความคล้ายคลึงกับ C/C++ มาก เช่น if , for , switch และมีบางส่วนที่คล้าย Perl สามารถกำหนดตัวแปรโดยไม่ต้อง กำหนดชนิดของตัวแปรว่าจะเป็น int, float, boolean เป็นต้น
<?php
    for ($i = 0; $i < 10; $i++){
       echo "Test".$i; 
    }
?>
ตัวอย่างการเขียน php แบบ oop
<?php
    class MyClass
    {
        private $var = 'Hello World!';
        public function getHello()
        {
            return $this->var;
        }
    }
    $obj = new MyClass();
    echo $obj->getHello();
?>

คุณสมบัติ

การแสดงผลของพีเอชพี จะปรากฏในลักษณะHTML ซึ่งจะไม่แสดงคำสั่งที่ผู้ใช้เขียน ซึ่งเป็นลักษณะเด่นที่พีเอชพีแตกต่างจากภาษาในลักษณะไคลเอนต์-ไซด์ สคริปต์ เช่น ภาษาจาวาสคริปต์ ที่ผู้ชมเว็บไซต์สามารถอ่าน ดูและคัดลอกคำสั่งไปใช้เองได้ นอกจากนี้พีเอชพียังเป็นภาษาที่เรียนรู้และเริ่มต้นได้ไม่ยาก โดยมีเครื่องมือช่วยเหลือและคู่มือที่สามารถหาอ่านได้ฟรีบนอินเทอร์เน็ต ความสามารถการประมวลผลหลักของพีเอชพี ได้แก่ การสร้างเนื้อหาอัตโนมัติจัดการคำสั่ง การอ่านข้อมูลจากผู้ใช้และประมวลผล การอ่านข้อมูลจากดาต้าเบส ความสามารถจัดการกับคุกกี้ ซึ่งทำงานเช่นเดียวกับโปรแกรมในลักษณะCGI คุณสมบัติอื่นเช่น การประมวลผลตามบรรทัดคำสั่ง (command line scripting) ทำให้ผู้เขียนโปรแกรมสร้างสคริปต์พีเอชพี ทำงานผ่านพีเอชพี พาร์เซอร์ (PHP parser) โดยไม่ต้องผ่านเซิร์ฟเวอร์หรือเบราว์เซอร์ ซึ่งมีลักษณะเหมือนกับ Cron (ใน ยูนิกซ์หรือลีนุกซ์) หรือ Task Scheduler (ในวินโดวส์) สคริปต์เหล่านี้สามารถนำไปใช้ในแบบ Simple text processing tasks ได้
การแสดงผลของพีเอชพี ถึงแม้ว่าจุดประสงค์หลักใช้ในการแสดงผล HTML แต่ยังสามารถสร้าง XHTML หรือ XML ได้ นอกจากนี้สามารถทำงานร่วมกับคำสั่งเสริมต่างๆ ซึ่งสามารถแสดงผลข้อมูลหลัก PDF แฟลช (โดยใช้ libswf และ Ming) พีเอชพีมีความสามารถอย่างมากในการทำงานเป็นประมวลผลข้อความ จาก POSIX Extended หรือ รูปแบบ Perl ทั่วไป เพื่อแปลงเป็นเอกสาร XML ในการแปลงและเข้าสู่เอกสาร XML เรารองรับมาตรฐาน SAX และ DOM สามารถใช้รูปแบบ XSLT ของเราเพื่อแปลงเอกสาร XML
เมื่อใช้พีเอชพีในการทำอีคอมเมิร์ซ สามารถทำงานร่วมกับโปรแกรมอื่น เช่น Cybercash payment, CyberMUT, VeriSign Payflow Pro และ CCVS functions เพื่อใช้ในการสร้างโปรแกรมทำธุรกรรมทางการเงิน

การรองรับพีเอชพี

คำสั่งของพีเอชพี สามารถสร้างผ่านทางโปรแกรมแก้ไขข้อความทั่วไป เช่น โน้ตแพด หรือ vi ซึ่งทำให้การทำงานพีเอชพี สามารถทำงานได้ในระบบปฏิบัติการหลักเกือบทั้งหมด โดยเมื่อเขียนคำสั่งแล้วนำมาประมวลผล ApacheMicrosoft Internet Information Services (IIS) , Personal Web Server, Netscape และ iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd, และอื่นๆ อีกมากมาย. สำหรับส่วนหลักของ PHP ยังมี Module ในการรองรับ CGI มาตรฐาน ซึ่ง PHP สามารถทำงานเป็นตัวประมวลผล CGI ด้วย และด้วย PHP, คุณมีอิสรภาพในการเลือก ระบบปฏิบัติการ และ เว็บเซิร์ฟเวอร์ นอกจากนี้คุณยังสามารถใช้สร้างโปรแกรมโครงสร้าง สร้างโปรแกรมเชิงวัตถุ (OOP) หรือสร้างโปรแกรมที่รวมทั้งสองอย่างเข้าด้วยกัน แม้ว่าความสามารถของคำสั่ง OOP มาตรฐานในเวอร์ชันนี้ยังไม่สมบูรณ์ แต่ตัวไลบรารีทั้งหลายของโปรแกรม และตัวโปรแกรมประยุกต์ (รวมถึง PEAR library) ได้ถูกเขียนขึ้นโดยใช้รูปแบบการเขียนแบบ OOP เท่านั้น
พีเอชพีสามารถทำงานร่วมกับฐานข้อมูลได้หลายชนิด ซึ่งฐานข้อมูลส่วนหนึ่งที่รองรับได้แก่ ออราเคิล dBase PostgreSQL IBM DB2 MySQL Informix ODBC โครงสร้างของฐานข้อมูลแบบ DBX ซึ่งทำให้พีเอชพีใช้กับฐานข้อมูลอะไรก็ได้ที่รองรับรูปแบบนี้ และ PHP ยังรองรับ ODBC (Open Database Connection) ซึ่งเป็นมาตรฐานการเชื่อมต่อฐานข้อมูลที่ใช้กันแพร่หลายอีกด้วย คุณสามารถเชื่อมต่อกับฐานข้อมูลต่างๆ ที่รองรับมาตรฐานโลกนี้ได้
พีเอชพียังสามารถรองรับการสื่อสารกับการบริการในโพรโทคอลต่างๆ เช่น LDAP IMAP SNMP NNTP POP3 HTTP COM (บนวินโดวส์) และอื่นๆ อีกมากมาย คุณสามารถเปิด Socket บนเครื่อข่ายโดยตรง และ ตอบโต้โดยใช้ โพรโทคอลใดๆ ก็ได้ PHP มีการรองรับสำหรับการแลกเปลี่ยนข้อมูลแบบ WDDX Complex กับ Web Programming อื่นๆ ทั่วไปได้ พูดถึงในส่วน Interconnection, พีเอชพีมีการรองรับสำหรับ Java objects ให้เปลี่ยนมันเป็น PHP Object แล้วใช้งาน คุณยังสามารถใช้รูปแบบ CORBA เพื่อเข้าสู่ Remote Object ได้เช่นกัน

โปรแกรมที่ใช้พีเอชพีเป็นโครงสร้างหลัก

วันเสาร์ที่ 1 พฤศจิกายน พ.ศ. 2557

ความรู้เบื้องต้นเกี่ยวกับระบบฐานข้อมูล 


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

 ความหมาย

        มีคำอธิบายความหมายของ “ฐานข้อมูล” อยู่มากมายหลายคามหมาย ตัวอย่างเช่น
        ฐานข้อมูลอาจถือได้ว่าเป็นตู้เก็บเอกสารอิเล็กทรอนิคส์ชนิดหนึ่ง เช่น  เป็นที่รวมหรือเป็นที่บรรจุแฟ้มข้อมูลคอมพิวเตอร์ชุดหนึ่ง เป็นต้น (A database can be regarded as a kind of electronic filing cabinet.)
        ฐานข้อมูลเป็นชุดของข้อมูลที่คงทน (Persistent Data) ซึ่งถูกเรียกใช้โดยระบบโปรแกรมของกิจการใดกิจการหนึ่ง (A database is a collection of persistent data that is used by the application systems of some given enterprise.) ข้อมูลจะคงทนอยู่ในฐานข้อมูลเพราะเมื่อระบบจัดการฐานข้อมูลรับข้อมูลนั้นเข้าสู่ฐานข้อมูลแล้ว ใครจะขจัดหรือเอาข้อมูลออกไปจากฐานข้อมูลได้ต้องมีการร้องขอต่อระบบจัดการฐานข้อมูลเท่านั้น ตัวอย่างข้อมูลที่คงทนในฐานข้อมูล เช่น
           กิจการ                                                                               ข้อมูลคงทน
บริษัทผู้ผลิตสินค้า                                                                   ข้อมูลผลิตภัณฑ์
ธนาคาร                                                                                   ข้อมูลบัญชี
โรงพยาบาล                                                                            ข้อมูลผู้ป่วย
มหาวิทยาลับ                                                                           ข้อมูลนักศึกษา
หน่วยราชการ                                                                          ข้อมูลการวางแผน






เอ็นทิตี้ 

        คำว่า “เอ็นทิตี้” (Entity) หมายถึง วัตถุใด ๆ ที่เราสามารถระบุ หรือแยกแยะออกจากกันได้ ซึ่งแทนอยู่ในฐานข้อมูล (An entity is any distinguishable object that is to be represented in the database.)

สัมพันธภาพ 

        คำว่า “สัมพันธภาพ” (Relationship) บางที่เรียกว่า “ความสัมพันธ์” หมายถึง การเชื่อมโยงหรือความเกี่ยวข้องระหว่างเอ็นทิตี้ต่าง ๆ ซึ่งความสัมพันธภาพเป็นตัวเชื่อมโยงเอ็นทิตี้เหล่านั้นเข้าไว้ด้วยกัน (Relationship links those basic entities together.)

รูปแบบของฐานข้อมูล 

        รูปแบบของฐานข้อมูล ในที่นี้หมายถึง ตัวแบบข้อมูล (Data Model) ของฐานข้อมูลชนิดต่าง ๆ ซึ่งมีผู้รู้คิดค้นขึ้นมา
        ก่อนอื่นเราควรต้องทราบความหมายของคำว่า “ข้อมูล” ก่อน
        ข้อมูล คือ ข้อเท็จจริงที่ให้มา ซึ่งสามารถอนุมานข้อเท็จจริงเพิ่มเติมขึ้นมาได้ (“Data” refers to given facts from which additional facts can be inferred.)
         ข้อเท็จจริงที่ให้มา คือ ประพจน์ที่เป็นจริงเชิงตรรกศาสตร์ (“Given fact” is a logically true proposition.) ดังนั้น ความหมายฐานข้อมูลในมุมมองนี้ ก็คือ ชุดของประพจน์ที่เป็นจริงดังกล่าว (A database is a collection of such true propositions.)
        ตัวแบบข้อมูล เป็นคำจำกัดความเชิงตรรกะ เป็นนามธรรม บริบูรณ์ในตัวเอง ของวัตถุ ตัวกระทำทางคณิตศาสตร์ และ ฯลฯ ซึ่งรวมกันแล้วประกอบเข้าเป็นเครื่องจักรนามธรรมที่ผู้ใช้โต้ตอบได้ วัตถุดังกล่าวทำให้เราสามารถจำลองโครงสร้างข้อมูลได้ ส่วนตัวกระทำทางคณิตศาสตร์ทำให้เราสามารถจำลองพฤติกรรมของมันได้ (Data Model is an abstrach, self –contained, logical definition of the objects, operators, and so forth, that together constitute the abstract machine with which users interact. The objects allow us to model the structure of data. The operators allow us to model its behaviour.)
        ตัวแบบข้อมูล เป็นเหมือนภาษาในการเขียนโปรแกรม แม้ว่าค่อนข้างจะเป็นนามธรรม แต่โครงสร้างของมันสามารถใช้แก้ปัญหาได้ (Data Model is like a programming language-albeit one that is somewhat abstract – whose constructs con be used to solve problems.)

ตัวแบบข้อมูลมี 3 ประเภทที่สำคัญ คือ
  • ตัวแบบเชิงสัมพันธ์ (Relational Model)
  • ตัวแบบเครือข่าย (Network Model)
  • ตัวแบบลำดับชั้น หรือแตกสาขา(Hierarchic Model)
        1. ตัวแบบเชิงสัมพันธ์ (จะกล่าวถึงละเอียดในบทต่อไป) ผู้ใช้ทั่วไปจะมองเห็นตัวแบบเชิงสัมพันธ์ว่า คือ การเก็บข้อมูลเป็นตาราง (Table) หรือถ้าเรียกอย่างเป็นทางการตามทฤษฎีทางคณิตศาสตร์ก็คือ รีเลชั่น (Relation) นั่นเอง ลักษณะของตารางจะมี 2 มิติ คือ แถว (Row) และคอลัมน์ (Column)โดยเอ็นทิตี้ (Entity) ต่าง ๆ จะมีข้อมูลถูกนำมาจัดเก็บในลักษณะเป็นตาราง กล่าวคือ จะไม่มีแฟ้มข้อมูลแม่หรือแฟ้มข้อมูลลูก แฟ้มข้อมูลแต่ละส่วนเป็นอิสระต่อกัน ตัวอย่างผลิตภัณฑ์ระบบบริหารฐานข้อมูลเชิงสัมพันธ์เรียงตามลำดับอักษร ได้แก่
        DB2 (มีหลายรุ่น) ของบริษัท IBM Corp.
        Ingres II ของบริษัท Computer Associates International Inc.
        Informix Dynamic Server ของบริษัท Informix Software Inc.        
        Microsoft SQL Server ของบริษัท Microsoft Corp.            
        Oracle 8i ของบริษัท Oracle Corp.และ
        Sybase Adaptive Server ของบริษัท Sybase Inc.
        2.  ตัวแบบเครือข่าย บางที่เรียกว่า CODASYL Systems หรือ DBTG Systems ตามชื่อคณะทำงานที่เสนอแนะ กล่าวคือ กลุ่มงานฐานข้อมูลแห่งการประชุมว่าด้วยเรื่องภาษาระบบฐานข้อมูล(the Data Base Task Group of the conference on Data Systems Languages) ตัวอย่างเช่น ระบบ IDMS ของบริษัท Computer Associates International Inc. ตัวแบบเครือข่ายนี้ไม่ได้เกี่ยวข้องกับเรื่องการสื่อสารข้อมูล (Data Communication) แต่อย่างใด โดยตัวแบบนี้ในแง่การมองของผู้ใช้จะเป็นไปในรูปของการรวบรวม ระเบียนต่าง ๆ และความสัมพันธ์ระหว่างระเบียน ความแตกต่างที่เห็นได้ชัดเจนระหว่างตัวแบบเชิงสัมพันธ์และแบบเครือข่าย คือ ในตัวแบบเชิงสัมพันธ์จะแฝง (Implicit) การแสดงความสัมพันธ์เอาไว้ (หมายความว่า ระเบียนที่มีความสัมพันธ์กันจะต้องมีค่าของข้อมูลในเขตข้อมูลใด เขตข้อมูลหนึ่งเหมือนกัน) ส่วนการแสดงความสัมพันธ์ในตัวแบบเครือข่ายจะเป็นไปอย่างโจ่งแจ้ง (Explicit) คือ แสดงได้ในโครงสร้างอย่างชัดเจน ตัวอย่างเช่น
                                                                                                                                        



        ในรูปจะเห็นว่า กรอบสี่เหลี่ยมแสดงถึงชนิดของระเบียนในฐานข้อมูลซึ่งจะมี 1 อันต่อ 1 Entity เครื่องหมายลูกศรแสดงถึงความสัมพันธ์ ซึ่งในรูปนี้แสดงความสัมพันธ์แบบหนึ่งต่อกลุ่ม โดยที่หัวลูกศรจะออกจากส่วนของ “หนึ่ง” ไปยังส่วนของ “กลุ่ม”
        วิธีการค้นหาข้อมูลที่ต้องการ จะใช้หัวลูกศรเป็นแนวทาง ซึ่งอาจวิ่งทวนทิศทางกับหัวลูกศรก็ได้ เช่น ถ้าต้องการแสดงรายชื่อของอาจารย์ที่ทำงานอยู่แผนกวิชาที่ 4 ก็เริ่มด้วยการออกคำสั่งแก่ระบบจัดการฐานข้อมูลไห้ค้นหาแผนกที่ 4 ก่อน จากระเบียนของแผนกวิชา จากนั้นให้วิ่งตามลูกศรซึ่งจะเชื่อม (Link) ข้อมูลของแผนกที่ 4 นี้เข้ากับข้อมูลในส่วนของอาจารย์ ซึ่งได้แก่บรรดาระเบียนของอาจารย์ที่ทำงานอยู่แผนกที่ 4 สังเกตว่า ในการค้นหานี้เราจะค้นโดยใช้ลูกศร หรือทางเชื่อมในการโยงความสัมพันธ์ ดังนั้นเราจึงไม่จำเป็นต้องเก็บเขตข้อมูลรหัสแผนกไว้ในระเบียนของอาจารย์อย่างในตัวแบบเชิงสัมพันธ์
     1.ตัวแบบแตกสาขา หรือตัวแบบลำดับ ตัวแบบนี้พัฒนาขึ้นโดยไอบีเอ็ม เมื่อปี พ.ศ. 2511 ตัวอย่างเช่น ระบบ IMS ของ IBM มีความสัมพันธ์ระหว่างแฟ้มข้อมูลเป็นระดับชั้นหรือตามอาวุโส แฟ้มข้อมูลจะมีตำแหน่งจากบนลงล่าง โดยแฟ้มที่อยู่ในระดับที่สูงกว่าจะเป็นแม่ของแฟ้มที่อยู่ในระดับต่ำกว่า ข้อสังเกต คือ แฟ้มหนึ่งจะมีแฟ้มข้อมูลลูก (Child File) ได้หลายแฟ้ม ขณะที่แฟ้มลูกจะมีแฟ้มแม่เพียงแฟ้มเดียว เมื่อมองในลักษณะนี้จะเห็นว่าตัวแบบนี้มีโครงสร้างเหมือนต้นไม้ (Tee) ซึ่งอันที่จริงตัวแบบนี้คล้ายแบบเครือข่าย แต่ต่างกันตรงที่ ตัวแบบแตกสาขามีกฎเกณฑ์เพิ่มขึ้นมาอีก 1 ข้อ คือ ในแต่ละกรอบจะมีหัวลูกศรวิ่งเข้าหาได้ไม่เกิน 1 หัว จากตัวอย่างในภาพของตัวแบบเครือข่าย จะเห็นว่ากรอบอาจารย์มีลูกศรเข้ามา 2 ทาง ดังนั้น เราจะสร้างฐานข้อมูลเดียวกันนี้ด้วยตัวแบบแตกสาขาไม่ได้ แต่ต้องเปลี่ยนแปลงให้เหมาะสม เช่น

        นอกจากนั้น ยังมีลักษณะอีกประการหนึ่งที่สองตัวแบบหลังนี้แตกต่างจากตัวแบบเชิงสัมพันธ์ ก็คือ ในตัวแบบลำกับชั้น และตัวแบบเครือข่ายนั้น จะมีการใช้ตัวชี้  (Pointers) เพื่อแทนเส้นทางขึ้นลงไปตามแผนภาพต้นไม้สำหรับตัวแบบลำดับชั้น และแทนเส้นทางเชื่อมต่อในแผนภาพเครือข่ายของตัวแบบเครือข่าย แต่ในตัวแบบเชิงสัมพันธ์จะไม่มีการเกี่ยวข้องกับตัวชี้ดังกล่าวเลย (C.J. Date, 2000, p. 26)
        นอกจากตัวแบบทั้ง 3 ดังกล่าวแล้ว เมื่อไม่นานมานี้เริ่มมีผลิตภัณฑ์ระบบบริหารฐานข้อมูลแบบใหม่ปรากฏขึ้นมาบ้าง คือ
  • ระบบบริหารฐานข้อมูลเชิงวัตถุ (Object DBMS) เช่น Gemstone ของบริษัท Gemstone Systems Inc.และ Versant ODBMS ของบริษัท Versant Object Technology
  • ระบบบริหารฐานข้อมูลแบบผสมระหว่างเชิงวัตถุและเชิงสัมพันธ์ (Object/Relational DBMS) ตัวอย่างเช่น DB2 และ Informix
ในตำราเล่มนี้จะไม่กล่าวถึงระบบฐานข้อมูลเชิงวัตถุ (Object-oriented Database Systems) ม
ไปกว่านี้ แม้ว่าจะจัดเป็นตัวแบบหนึ่งของระบบฐานข้อมูล เนื่องจากเป็นเรื่องที่ยังใหม่และอยู่นอกเหนือขอบเขต
ระบบฐานข้อมูล
        ระบบฐานข้อมูล (Database System) เป็นคำประสมระหว่างคำว่า “ระบบ” (System) กับคำว่า “ฐานข้อมูล” (Database) มีความหมายและองค์ประกอบดังต่อไปนี้

ความหมาย
        ระบบฐานข้อมูล โดยพื้นฐานเป็นระบบจัดเก็บระเบียนด้วยคอมพิวเตอร์ (A database system is basically a computerized record-keeping system.)สามารถทำงานกับข้อมูลในฐานข้อมูลในลักษณะต่าง ๆ ได้ เช่น
  • เพิ่มแฟ้มใหม่เข้าในฐานข้อมูล
  • แทรกข้อมูลลงในแฟ้ม
  • ดึงข้อมูลมาจากแฟ้ม
  • เปลี่ยนแปลงข้อมูลที่มีอยู่
  • ลบข้อมูล
  • ลบแฟ้ม
        ระบบฐานข้อมูล มีวัตถุประสงค์หลักในการจัดเก็บข้อสนเทศและให้ผู้ใช้สืบค้น ตลอดจนปรับปรุงข้อสนเทศนั้นให้เป็นปัจจุบัน
        องค์ประกอบ
        ระบบฐานข้อมูลมีองค์ประกอบหลัก 4 องค์ประกอบ ได้แก่
  • ข้อมูล (Data)
  • ฮาร์ดแวร์ (Hardware)
  • ซอฟต์แวร์ (Software)
  • ผู้ใช้ (Users)
        1. ข้อมูล
        ข้อมูลจะต้องเป็นข้อมูลรวมและแบ่งปันกันได้ (Both Integrated and Shared) ข้อมูลรวม (Integrated) ในฐานข้อมูล หมายถึง อาจมีข้อมูลซ้ำซ้อนกันระหว่างแฟ้มต่าง ๆ น้อยที่สุ หรือเท่าที่จำเป็น เช่น แฟ้มข้อมูลชื่อ EMPLOYEE กับ ENROLLMENT

NAME
ADDRESSDEPARTMENTSALARY
EMPLOYEE

NAMECOURSE
ENROLLMENT
        แฟ้ม ENROLLMENT ไม่ควรมีเขตข้อมูล (Field) ชื่อ Department  หรือ Salary ซ้ำอีก เพราะเราสามารถค้นหาได้จากแฟ้ม ENROLLMENT ได้อยู่แล้ว
        ส่วนคำว่า แบ่งปัน (Shared) หมายถึง ข้อมูลในแต่ละชิ้นในฐานข้อมูลอาจถูกแบ่งปันระหว่างผู้ใช้หลายคน ซึ่งแต่ละคนสามารถเข้าถึงข้อมูลชิ้นเดียวกันได้ ด้วยวัตถุประสงค์ต่างกันไป ผู้ใช้หลายคนสามารถเข้าถึงข้อมูลได้พร้อมกัน (Concurrent Access)
2. ฮาร์ดแวร์
        ฮาร์ดแวร์ของระบบฐานข้อมูลประกอบไปด้วย 2 ส่วน คือ
  • ที่เก็บข้อมูลสำรอง (Secondary Storage Volumes) เพื่อเก็บข้อมูลด้วยอุปกรณ์นำเข้า/ส่งออกข้อมูล(ดิสก์ไดร์ฟ), ตัวควบคุมอุปกรณ์, ช่องนำเข้า/ส่งออกข้อมูล
  • ตัวประมวลผลฮาร์ดแวร์หน่วยความจำหลัก ที่สนับสนุนการทำงานของระบบฐานข้อมูล
        3. ซอฟต์แวร์
        ซอฟต์แวร์ เป็นส่วนเชื่อมระหว่างผู้ใช้กับฮาร์ดแวร์
        ซอฟต์แวร์ในที่นี้คือ ระบบจัดการฐานข้อมูล หรือระบบบริหารฐานข้อมูล (Database Management System : DBMS) ซึ่งมีหน้าที่ช่วยซ่อนกับผู้ใช้ฐานข้อมูลจากรายละเอียดระดับฮาร์ดแวร์ ระบบจัดการฐานข้อมูลจะทำให้ผู้ใช้รู้จักฐานข้อมูลในระดับที่อยู่เหนือระดับฮาร์ดแวร์และช่วยสนับสนุนการปฏิบัติงานของผู้ใช้ เช่น การปฏิบัติงานด้วยภาษานอบถามเชิงโครงสร้าง (Structured Query Language : SQL)
        4. ผู้ใช้
        ผู้ใช้ (Users) มี 3 กลุ่ม ได้แก่
  • โปรแกรมเมอร์ เขียนโปรแกรมประยุกต์ใช้ฐานข้อมูลด้วยภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง
  • ผู้ใช้ปลายสุด (End Users) ติดต่อกับระบบจากสถานีงานออนไลน์ ผู้ใช้สามารถเข้าถึงฐานข้อมูลผ่านโปรแกรม หรืออาจใช้ส่วนติดต่อ (Interface) ที่ให้มาซึ่งเป็นส่วนหนึ่งของซอฟต์แวร์ฐานข้อมูล โดยเป็นส่วนที่สร้างไว้แล้วซึ่งผู้ใช้ปลายสุดไม่ต้องเขียนโปรแกรมขึ้นมาเอง ผู้ใช้ปลายสุดเพียงแต่ออกคำร้องขอ (Requests)  ต่อฐานข้อมูล ด้วยภาษา SQLเช่น คำสั่ง SELECT,INSERT
  • ผู้บริหารฐานข้อมูล (Database Administrator : DBA)
เป็นบุคลากรทางเทคนิค เป็นมืออาชีพด้านไอที โดยมีงานในหน้าที่ ดังนี้
  • สร้างฐานข้อมูลจริงขึ้นมา และทำการสร้างการควบคุมทางเทคนิคเท่าที่จำเป็นเพื่อบังคับให้การตัดสินใจเชิงนโยบายหลายอย่างจะทำได้โดยบริหารฐานข้อมูล
  • รับผิดชอบต่อการทำงานที่มีประสิทธิภาพของระบบฐานข้อมูล และให้บริการทางเทคนิคแก่ฝ่ายอื่น ๆ
        นอกจากนี้ยังมีบุคคลระดับบริหารซึ่งไม่ใช่ผู้ใช้ แต่มีความสำคัญและเกี่ยวข้องกับฐานข้อมูล คือ ผู้บริหารข้อมูล (Data Administrator : DA)เป็นบุคคลทีรู้ความเป็นไปของการใช้ข้อมูลดี ควรเป็นคนในระดับผู้บริหารอาวุโส (Senior Management)รู้ว่าควรเก็บข้อมูลอะไร ไว้อย่างไร งานของผู้บริหารข้อมูลได้แก่
  • ตัดสินใจว่าควรจัดเก็บข้อมูลอะไรลงในฐานข้อมูลตั้งแต่เริ่ม
  • กำหนดนโยบายในการบำรุงรักษาและจัดการกับข้อมูลที่ถูกนำมาเก็บไว้ กล่าวคือ กำหนดนโยบายความปลอดภัยของข้อมูล (Data Security Policy)
  • ระบบบริหารฐานข้อมูล
ระบบบริหารฐานข้อมูล (Database Management System) บางที่เรียกว่า ระบบจัดการฐานข้อมูล แท้ที่จริงคือ ซอฟต์แวร์ที่จัดการการเข้าถึงทุกอย่างที่กระทำกับฐานข้อมูล (The DBMS is the software that handles all access to the database.) ซึ่งได้แก่ขั้นตอนการกระทำต่อไปนี้
  • ผู้ใช้ออกคำร้องขอเข้าสู่ฐานข้อมูลโดยใช้ภาษาย่อยข้อมูล
  • ระบบฯ ตรวจจับคำร้องขอและวิเคราะห์วากยสัมพันธ์
  • ระบบฯ ตรวจดูวัตถุเค้าร่างภายนอก (External Schema) ของผู้ใช้ การเชื่อมระหว่างระดับภายนอกกับระดับแนวคิด เค้าร่างแนวคิด การเชื่อมระหว่างระดับแนวคิดกับระดับภายใน และนิยามโครงสร้างการจัดเก็บ (Storage Structure Definition)ในเรื่องเค้าร่าง (Schema) ต่าง ๆ นี้ จะมีอธิบายละเอียดในบทต่อไปโดยอยู่ในหัวข้อ “สถาปัตยกรรมฐานข้อมูล”
  • ระบบฯ ทำตามคำร้องขอโดยกระทำกับฐานข้อมูลที่จัดเก็บนั้น (The DBMS executes the operations on the stored database.)
1.4 หน้าที่ของระบบฐานข้อมูล
        ระบบบริหารฐานข้อมูล จะต้องสนับสนุนการกระทำต่อไปนี้ได้อย่างน้อย
  • การนิยามข้อมูล (Data Definition) ต้องสามารถรับการนิยามข้อมูลได้ เช่น การกำหนดเค้าร่างภายนอก เค้าร่างแนวคิด เค้าร่างภายใน และการเชื่อมทุกตัวที่เกี่ยวข้อง จากนั้นแปลงนิยามนั้นให้เป็นวัตถุ ดังนั้น ระบบจัดการฐานข้อมูลต้องมี ตัวประมวลผลภาษานิยามข้อมูล (Data Definition Language Processor/Compiler)
  • การจัดดำเนินการข้อมูล (Data Manipulation) ระบบฯ ต้องสามารถจัดการคำร้องในการสืบค้น ปรับปรุง ลบ เพิ่มข้อมูลได้ ดังนั้น ระบบฯ จึงต้องมีตัวประมวลผลภาษาจัดดำเนินการข้อมูล (Data Manipulation Language Processor/Compiler)  การร้องขอให้จัดดำเนินการข้อมูลอาจเป็น การร้องขอที่แจ้งล่วงหน้า (Planned Request) ซึ่งเตรียมไว้ล่วงหน้าก่อนการ Execute เป็นอย่างดี เช่น การรันโปรแกรมทุกเช้าซึ่งเป็นกิจวัตร หรืออาจเป็นการร้องขอที่ไม่แจ้งล่วงหน้า (Unplanned or ad Hoc request) ซึ่งต้องการข้อมูลอย่างฉับพลันหรือเป็นบางครั้งบางคราว ซึ่งมีลักษณะเป็นแบบโต้ตอบ (Interactive)
  • การแปลงคำสั่งให้เหมาะสมที่สุดและการเอ็กซีคิวคำสั่ง (Optimization and Execution)ระบบบริหารฐานข้อมูล จะมี Optimizer เป็นซอฟต์แวร์ที่รับเอาคำร้องขอ โค้ดคำสั่งวัตถุนั้นมาตรวจดูก่อนรันเพื่อดูว่าจะรันอย่างไรจึงจะดีที่สุด กล่าวคือ ให้ใช้ทรัพยากรน้อยที่สุด เช่น จะใช้วิธีใดในการเข้าถึงข้อมูล X จึงจะเหมาะสมที่สุด
  • ความปลอดภัยและความถูกต้องของข้อมูล (Data Security and Integrity) ระบบฯ จะต้องยอมให้ผู้บริหารฐานข้อมูล (DBA) สามารถเขียนคำสั่ง หรือกำหนดกฎความถูกต้อง (Integrity Constraints)ได้
  • การฟื้นฟูสภาพข้อมูลและสภาวะพร้อมกัน (Data Recovery and Concurrency) ระบบฯ ต้องสนับสนุนให้ผู้บริหารฐานข้อมูลสามารถสั่งให้ ตัวจัดการธรุกรรม (Transaction Manager or Transaction Processing Monitor)ให้ทำการฟื้นฟูสภาพ และควบคุมสภาวะการเข้าถึงฐานข้อมูลแบบพร้อมกันได้
  • พจนานุกรมข้อมูล (Data Dictionary) ระบบฯ ต้องสร้างพจนานุกรมข้อมูลของมันเองขึ้นมาได้เพื่อให้ผู้ใช้สามารถนำไปใช้ได้



                                      


ภาพหน้าที่และส่วนประกอบหลักของระบบบริหารฐานข้อมูล
        หน้าที่ของระบบบริหารฐานข้อมูล จะเห็นความแตกต่างเด่นชัดถ้าเปรียบเทียบกับ ระบบจัดการแฟ้มข้อมูล ซึ่งเป็นระบบดั้งเดิม กล่าวคือ ระบบจัดการแฟ้มข้อมูลมีหน้าที่ดังนี้
        1. ระบบจัดการแฟ้มข้อมูลไม่รับรู้โครงสร้างภายในของระเบียนที่จัดเก็บไว้ จึงไม่สามารถจัดการกับคำร้องขอที่อิงกับความรู้เรื่องโครงสร้างนั้น
        2. โดยปกติระบบจัดการแฟ้มข้อมูลจะมีน้อยหรือไม่มีการสนับสนุนเรื่องข้อกำหนดเกี่ยวกับการรักษาความปลอดภัยและความถูกต้องของข้อมูล
        3. โดยปกติระบบจัดการแฟ้มข้อมูลจะมีน้อยหรือไม่มีการสนับสนุนเรื่องการควบคุมการฟื้นฟูสภาพและสภาวะพร้อมกัน
     4. ระบบจัดการแฟ้มข้อมูลไม่มีหลักการของพจนานุกรมข้อมูลอย่างแท้จริงในระดับการจัดการแฟ้ม
        5. ระบบจัดการแฟ้มข้อมูลไม่มีเรื่องของความเป็นอิสระของข้อมูล หรือมีแต่น้อยมาก
        6. โดยปกติแฟ้มต่าง ๆ ในระบบจัดการแฟ้มข้อมูลจะไม่รวมกัน หรือไม่ปันส่าน อย่างในระบบบริหารฐานข้อมูล





ภาพตัวอย่างของการประมวลผลในระบบจัดการแฟ้มข้อมูล