วันอาทิตย์ที่ 30 พฤศจิกายน พ.ศ. 2557

แบบทดสอบ O-Net วิชา การงานอาชีพและเทคโนโลยีฯ (คอมพิวเตอร์) ปีการศึกษา 2553

47. ข้อใดไม่ใช่ระบบปฏิบัติการที่นามาใช้บนอุปกรณ์พกพาประเภทSmartphone 
1. Ubuntu 2. iPhone OS 3. Android 4. Symbian

48. ลิขสิทธิ์โปรแกรมประเภทรหัสเปิด (Open source) อนุญาตให้ผู้ใช้ทาอะไรได้บ้าง 
ก. นาโปรแกรมมาใช้งานโดยไม่ต้องเสียค่าลิขสิทธิ์ 
ข. ทดลองใช้โปรแกรมก่อน ถ้าพอใจจึงจ่ายค่าลิขสิทธิ์
ค. แก้ไขปรับปรุงโปรแกรมเองได้ 
1. ข้อ ก. กับข้อ ค. 2. ข้อ ข. กับข้อ ค. 3. ข้อ ข. อย่างเดียว 4. ข้อ ก. อย่างเดียว

49. ไฟล์ประเภทใดในข้อต่อไปนี้เก็บข้อมูลในลักษณะตัวอักษร 
1. ไฟล์เพลง MP3 (.mp3) 
2. ไฟล์รูปประเภท JPEG (.jpg) 
3. ไฟล์แสดงผลหน้าเว็บ (.html) 
4. ไฟล์วิดิโอประเภท Movie (.mov)

50. ระบบกระดานสนทนาหรือเว็บบอร์ดแห่งหนึ่งมีความต้องการดังนี้
 ก. ต้องการใช้ผู้ใช้สามารถตั้งกระทู้โต้ตอบกันได้โดยผู้ใช้ต้องแสดงตัวตน(ล็อกอิน) เพื่อเข้าระบบก่อน
ข. ผู้ใช้สามารถตั้งกระทู้หรือเข้าไปตอบกระทู้ที่ตั้งไว้แล้วได้ 
ค. ระบบจะบันทึกชื่อผู้ตั้งและผู้ตอบไว้ด้วย ในการออกแบบฐานข้อมูลสาหรับระบบดังกล่าว ข้อใดกล่าวถูกต้อง 
1. ต้องสร้างตารางผู้ใช้ ตารางกระทู้ และตารางคาตอบ 
2. ไม่ต้องสร้างตารางผู้ใช้ เนื่องจากสามารถบันทึกชื่อผู้ใช้ในตารางกระทู้และตารางคาตอบได้เลย 
3. ต้องสร้างตารางผู้ใช้และตารางกระทู้ ส่วนคาตอบจะอยู่ในตารางกระทู้อยู่แล้ว 
4. ไม่ต้องสร้างตารางกระทู้ เพราะสามารถบันทึกกระทู้ที่ผู้ใช้ตั้งในตารางผู้ใช้ได้เลย

52. ข้อใดเป็นการปฏิบัติที่ถูกต้องตามหลักวิชาการเมื่อค้นคว้าหาข้อมูลจากอินเทอร์เน็ตมาทารายงาน 
1. คัดลอกเนื้อหาจากเว็บไซต์ 
2. ใช้เนื้อหาจากกระดานสนทนา (web board)มาใส่ในรายงาน 
3. นารูปภาพจากเว็บไซต์มาใส่ในรายงาน 
4. อ้างอิงชื่อผู้เขียนบทความ

53. ห้องสมุดแห่งหนึ่งต้องการพัฒนาระบบการยืมหนังสือโดยสามารถบันทึกข้อมูลการยืมหนังสือลงบนบัตรอิเล็กทรอนิกส์โดยไม่ต้องเขียนด้วยมือ ระบบนี้ควรใช้เทคโนโลยีในข้อใด 
1. Smart Card 2. Fingerprint 3. Barcode 4. Wifi

54. ผู้ประกอบอาชีพผู้พัฒนาเว็บไซต์ต้องเชี่ยวชาญความรู้ด้านใดบ้างจากตัวเลือกต่อไปนี้ 
ก. ฮาร์ดแวร์คอมพิวเตอร์ ข. ระบบปฏิบัติการ ค. เว็บเซิร์ฟเวอร์ ง. HTML จ. ระบบฐานข้อมูล ฉ. ภาษาจาวา (Java) 
1. ข้อ ก. และ ค. 2. ข้อ ข. และ จ. 3. ข้อ ค. และ ง. 4. ข้อ ค. และ ฉ

55. ข้อใดเป็นเทคโนโลยีการเชื่อมต่อข้อมูลไร้สายทั้งหมด 
1. Wifi IP 2. Wifi Bluetooth 3. 3G ADSL 4. 3D Ethernet

56. ข้อใดไม่ใช่ข้อเสียของการละเมิดลิขสิทธิ์ซอฟแวร์
 1. การทาผิดกฎหมายลิขสิทธิ์มีความผิดทางอาญา
 2. เป็นช่องทางหนึ่งในการระบาดของไวรัสคอมพิวเตอร์
3. ผู้ใช้จะไม่ได้รับการบริการจากผู้พัฒนาถ้าหากมีปัญหาการใช้งาน
 4. ทาให้ผู้พัฒนาซอฟแวร์ไม่มีรายได้เพื่อประกอบการและพัฒนาต่อไปได้

57. รูปด้านล่างแสดงผังงานของการจาแนกภาวะอ้วนผอม ของบุคคลที่มีความสูง 1.70 เมตร ลาดับการทางาน(4) คือ 
1. มากกว่า 53 กก.
2. น้อยกว่า 80 กก. 
3. น้อยกว่าหรือเท่ากับ 53 กก. 
4. มากกว่าหรือเท่ากับ 80 กก.

58. ข้อใดต่อไปนี้ถูกต้องที่สุด
 1. การบันทึกข้อมูลลงแผ่นดีวีดี ใช้เทคโนโลยีแบบแม่เหล็ก
 2. หมายเลขไอพีเป็นหมายเลขที่ใช้กากับ Network Interface Card 
3. หน่วยความจาสารองเป็นหน่วยความจาที่มีคุณลักษณะแบบ Volatile 
4. รหัส ASCII และ EBCEDIC เป็นการวางรหัสตัวอักษรที่ใช้ขนาด 8 บิต

วันอาทิตย์ที่ 16 พฤศจิกายน พ.ศ. 2557

ฟังก์ชั่นphp(เพิ่มเติม)

พารามิเตอร์

ตามปกติฟังก์ชันส่วนใหญ่ต้องการรับสารสนเทศจากผู้เรียกสำหรับการประมวลผล โดยทั่วไปเรียกว่า พารามิเตอร์

ไวยากรณ์พื้นฐาน

การกำหนดฟังก์ให้รับพารามิเตอร์ส่งผ่านโดยการวางข้อมูล ชื่อตัวแปรที่เก็บข้อมูลภายในวงเล็บหลังชื่อฟังก์ชัน การเรียกฟังก์ชันที่ประกอบด้วยพารามิเตอร์เขียนดังนี้
<?php
function show_parameter($param1, $param2, $param3)
{
echo <<<PARAM
รายการพารามิเตอร์ <br/>
param1: $param1 <br/>
param2: $param2 <br/>
param3: $param3 <br/>
PARAM;
}
?>
พารามิเตอร์ที่ส่งไปยังฟังก์ชันแยกกันเครื่องหมายจุลภาคภายในวงเล็บ โดยสามารถส่งเป็นนิพจน์สำหรับแต่ละพารามิเตอร์ด้วย ตัวแปร ค่าคงที่ ผลลัพธ์จากการคำนวณ รวมถึงการเรียกฟังก์ชัน
scope ของพารามิเตอร์จำกัดภายในฟังก์ชัน ถ้าชื่อตัวแปรเหมือนกับตัวแปรใน scope ระดับอื่น พารามิเตอร์นี้ "ระบุ" เป็นตัวแปรภายในที่ไม่มีผลกับตัวแปรภายนอกฟังก์ชัน

การส่งผ่านโดยค่า(By Value)

ตามปกติการส่งผ่านพารามิเตอร์ไปยังฟังก์ชันเป็นการส่งผ่านค่า การเปลี่ยนแปลงจะจำกัดภายในเฉพาะภายในฟังก์ชัน
ตัวอย่างฟังก์ชัน new_value () ที่ยอมให้เพิ่มค่า อาจจะเขียนคำสั่งดังนี้
<?php
function new_value($value, $increment= 1)
{
$value = $value + $increment;
}
$value = 10 ;
new_value($value);
echo "$value<br/>\n";
?>
คำสั่งนี้ใช้ไม่ได้ ผลลัพธ์จะเป็น "10" ค่าใหม่ของ $value ไม่มีการเปลี่ยนแปลง
สิ่งนี้เป็นเพราะกฎ scope คำสั่งนี้สร้างตัวแปรเรียกว่า $value เป็น 10 เมื่อเรียกฟังก์ชัน new_value () ตัวแปร $value ในฟังก์ชันได้รับการสร้างเมื่อเรียกฟังก์ชัน ค่า 1 ได้รับการเพิ่มให้กับตัวแปร ดังนั้นค่าของ $value คือ 11 ภายในฟังก์ชัน จนกระทั่งสิ้นสุดฟังก์ชัน แล้วกลับไปยังคำสั่งที่เรียกภายในคำสั่งนี้ ตัวแปร $value เป็นอีกตัวแปร global scope และไม่มีการเปลี่ยนแปลง

การส่งผ่านโดยการอ้างอิง (By Reference)

ตามตัวอย่างฟังก์ชัน new_value ถ้าต้องการให้ฟังก์ชันเปลี่ยนแปลงค่าได้ มีวิธีหนึ่งในการแก้ไขคือ ประกาศ $value ในฟังก์ชันเป็น global แต่หมายความว่าในการใช้ฟังก์ชันนี้ ตัวแปรที่ต้องการเพิ่มค่าต้องตั้งชื่อเป็น $value แต่มีวิธีดีกว่าคือ ใช้การส่งผ่านโดยการอ้างอิง
การอ้างอิงไปตัวแปรต้นทางแทนที่มีค่าของตัวเอง การปรับปรุงไปยังการอ้างอิงจะมีผลกับตัวแปรต้นทางด้วย
การระบุพารามิเตอร์ที่ใช้การส่งผ่านโดยการอ้างอิงให้วาง ampersand (&) หน้าชื่อพารามิเตอร์ในข้อกำหนดฟังก์ชัน
ตัวอย่าง new_value () ได้รับปรับปรุงให้มี 1 พารามิเตอร์ส่งผ่านโดยการอ้างอิงและทำงานได้อย่างถูกต้อง
<?php
function new_value(&$value, $increment=1)
{
$value = $value + $increment;
}
?>
คำสั่งทดสอบฟังก์ชัน ให้พิมพ์ 10 ก่อนการเรียก increment () และ 11 ภายหลัง
ในการส่งค่าโดยการอ้างอิงต้องส่งเป็นตัวแปรไม่สามารถกำหนดค่าคงที่โดยตรง

จำนวนตัวแปรของพารามิเตอร์

การส่งผ่านพารามิเตอร์ไปยังฟังก์ชันนั้น การควบคุมของ PHP ได้กำหนดฟังก์ชันจำนวนหนึ่งให้ยอมรับจำนวนตัวแปรของพารามิเตอร์ ได้แก่ func_num_args, func_get_arg และ func_get_args
func_num_args() บอกจำนวนพารามิเตอร์ไปยังฟังก์ชันที่เรียก func_get_arg() แสดงค่าของพารามิเตอร์ตามดัชนี และ func_get_args() ส่งออก array ของพารามิเตอร์
<?php
function show_pass_value()
{
$idx = count(func_get_args());
echo " จำนวนพารามิเตอร์ $idx <br/>\n";
if ($idx > 0)
    echo ">> ใช้ฟังก์ชัน func_get_arg<br/>\n";
for ($i = 0 ; $i < $idx; $i++)
{
echo " พารามิเตอร์ที่ $i ค่า: ". func_get_arg($i)."<br/>\n";
}
if ($idx > 0)
    echo ">> ใช้ฟังก์ชัน func_get_args<br/>\n";
$params = func_get_args();
foreach ($params as $index => $val)
{
echo " พารามิเตอร์ที่ $index ค่า: $val<br/>\n";
}
echo " *********<br/>\n";
}
$x = 4 ;
show_pass_value("one", "two", 3 , $x, " ห้า" , " หก") ;
show_pass_value();
?>
ผลลัพธ์
จำนวนพารามิเตอร์ 6
>> ใช้ฟังก์ชัน func_get_arg
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
>> ใช้ฟังก์ชัน func_get_args
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
*********
จำนวนพารามิเตอร์ 0
*********

Scope

เมื่อต้องการใช้ตัวแปรภายในไฟล์ที่รวม ต้องมีการประกาศตัวแปรเหล่านั้นก่อนประโยคคำสั่ง require () หรือ include () แต่เมื่อใช้ฟังก์ชันจะเป็นการส่งผ่านตัวแปรเชิงประจักษ์เหล่านั้นไปยังฟังก์ชัน บางส่วนเป็นเพราะไม่มีกลไกส่งผ่านตัวแปรเชิงประจักษ์ไปยังไฟล์ที่รวม และบางส่วนเป็นเพราะ scope ของตัวแปรของฟังก์ชันแตกต่างกัน
การควบคุม scope ของตัวแปรเป็นการทำให้ตัวแปรมองเห็นได้ ใน PHP มีกฎตั้งค่า scope ดังนี้
  • การประกาศตัวแปรภายในฟังก์ชันอยู่ใน scope จากประโยคคำสั่งซึ่งตัวแปรให้รับการประกาศภายในวงเล็บปีกกา สิ่งนี้เรียกว่า function scope ตัวแปรเรียกว่า local variable
  • การประกาศตัวแปรภายนอกฟังก์ชันอยู่ใน scope จากประโยคคำสั่งซึ่งตัวแปรได้รับการประกาศที่สิ้นสุดแต่ไม่ใช้ภายในฟังก์ชัน สิ่งนี้เรียกว่า global scope ตัวแปรเรียกว่า global variable
  • การใช้ประโยคคำสั่ง require () และ include () ไม่มีผลกับ scope ถ้าประโยคคำสั่งได้รับการใช้ภายในฟังก์ชัน ประยุกต์ด้วย function scope ถ้าไม่ได้อยู่ภายในฟังก์ชัน ประยุกต์ด้วย global scope
  • คีย์เวิร์ด global สามารถระบุได้เองเพื่อกำหนดหรือใช้ตัวแปรภายในฟังก์ชันให้มี scope เป็น global
  • ตัวแปร สามารถลบโดยการเรียก unset ($variable_name) และตัวแปรที่ unset จะไม่มี scope
  • ตัวแปรระดับ superglobal สามารถเข้าถึงได้ทุกส่วนในสคริปต์

ตัวแปรระดับฟังก์ชัน

ตัวแปรระดับฟังก์ชันหรือ local variable เป็นการประกาศเพื่อใช้เฉพาะภายในฟังก์ชัน ไม่สามารถเรียกจากภายนอกฟังก์ชันได้
<?php
$newline = <<<NLSTRING
<br/>\n
NLSTRING;
$var_global = 10 ;
function show_value()
{
global $newline;
$var_local= 75 ;
echo "\$var_local 1: $var_local";
echo $newline;
}
show_value();
echo "\$var_global : $var_global";
echo $newline;
echo "\$var_local 2: $var_local";
echo $newline;
?>
ผลลัพธ์
$var_global 1 :
$var_local 1: 75
$var_global 2: 10
$var_local 2:
ตามตัวอย่างนี้ ตัวแปรระดับฟังก์ชัน $var_local ไม่สามารถแสดงผลในการพิมพ์ภายนอกฟังก์ชัน show_value() และ $var_global ที่เป็นตัวแปรระดับ global ไม่สามารถแสดงผลภายใน show_value() เพราะมี scope ต่างกัน

ตัวแปรระดับ global

ถ้าต้องการนำตัวแปรระดับ global มาใช้ภายในฟังก์ชันต้องประกาศด้วยคีย์เวิร์ด global ก่อนประโยคคำสั่งที่ใช้ตัวแปรนั้น ตัวอย่าง ฟังก์ชัน show_value() ใช้ $newline จากภายนอกฟังก์ชัน
global $newline;

ตัวแปรสถิตย์

การประกาศตัวแปรสถิตย์ใช้ คีย์เวิร์ด static เมื่อมีการเรียกใช้ฟังก์ชัน โปรแกรมจะกำหนดค่าตัวแปรตามที่ระบุเพียงครั้งเดียว ถ้าเรียกซ้ำอย่างต่อเนื่องค่านี้จะเปลี่ยนแปลงตามการคำนวณ
<?php
function increment()
{
static $increase = 5 ;
$increase++;
echo $increase."<br/>\n";
}
$end = 5 ;
for ($i = 1 ; $i < $end; $i++)
    increment();
?>
ผลลัพธ์
6
7
8
9
ค่าของตัวแปรสถิตย์ได้รับการตั้งทุกครั้งเมื่อเรียกใช้ในครั้งต่อไป

การส่งออกค่าจากฟังก์ชัน

การส่งค่าออกจากฟังก์ชันใช้คีย์เวิร์ด return เช่นเดียวกับการออกจากฟังก์ชันได้ ถ้าไม่มีการระบุส่งออกฟังก์ชันจะส่งค่า NULL
ตัวอย่าง ฟังก์ชัน get_larger () สาธิตการส่งออกค่า
<?
function get_larger($x=NULL, $y=NULL)
{
if (!isset($x) || !isset($y))
    return " ไม่มีการส่งค่า" ;
if ($x > $y)
    return $x;
else if ($x < $y)
    return $y;
else
    return " ค่าเท่ากัน" ;
}
$sends = array();
$sends[0] = array('x' =>5);
$sends[1] = array('x' =>9, 'y'=>3);
$sends[2] = array('x' =>5, 'y'=>8);
$sends[3] = array('x' =>4, 'y'=>4);
foreach ($sends as $send)
{
echo "x = ".$send['x']." y = ".$send['y']." : ค่า - > "
.get_larger($send['x'], $send['y']);
echo "<br/>\n";
}
?>
ผลลัพธ์
x = 5 y = : ค่า - > ไม่มีการส่งค่า
x = 9 y = 3 : ค่า - > 9
x = 5 y = 8 : ค่า - > 8
x = 4 y = 4 : ค่า - > ค่าเท่ากัน
ฟังก์ชันที่ทำงานอาจเดียว แต่ไม่จำเป็นต้องส่งออกค่า มักจะส่งออก TRUE หรือ FALSE เพื่อระบุความสำเร็จหรือล้มเหลว ค่า TRUE หรือ FALSE สามารถได้รับการแสดงแทนด้วย 1 หรือ 0

Recursion

recursion ได้รับการสนับสนุนใน PHP ฟังก์ชันชนิดนี้เป็นการเรียกตัวเองและเป็นประโยชน์กับการบังคับโครงสร้างข้อมูลไดนามิคส์ เช่น รายการเชื่อมโยงและโครงสร้างต้นไม้ (tree)
โปรแกรมประยุกต์เว็บจำนวนไม่มากต้องการโครงสร้างข้อมูลซับซ้อนมากและจำกัดการใช้ เนื่องจาก recursion ช้ากว่าและใช้หน่วยความจำมากกว่าการทำงานวนรอบ ดังนั้นควรเลือกการทำงานแบบวนรอบปกติ ถ้าเป็นไปได้
ตัวอย่างการประยุกต์แบบย้อนกลับตัวอักษร
<?php
function word_reverse_r($str)
{
if (strlen($str)>0)
    word_reverse_r(substr($str, 1));
echo substr($str, 0, 1);
return;
}
function word_reverse_i($str)
{
for ($i=1; $i<=strlen($str); $i++)
{
echo substr($str, -$i, 1);
}
return;
}
?>
รายการคำสั่งของ 2 ฟังก์ชันนี้จะพิมพ์ข้อความย้อนกลับ ฟังก์ชัน word_reverse_r เป็น recursion ฟังก์ชัน word_reverse_i เป็นการวนรอบ
ฟังก์ชัน word_reverse_r ใช้ข้อความเป็นพารามิเตอร์ เมื่อมีการเรียกฟังก์ชันนี้ จะเกิดการเรียกตัวเองแต่ละครั้งส่งผ่านตัวอักษรที่ 2 ไปถึงตัวอักษรสุดท้าย
การเรียกฟังก์ชันแต่ละครั้งจะทำสำเนาใหม่ของคำสั่งในหน่วยความจำของแม่ข่าย แต่ด้วยพารามิเตอร์ต่างกัน ดังนั้นจึงเหมือนกับการเรียกคนละฟังก์ชัน

ฟังก์ชันใน PHP

ฟังก์ชันในโปรแกรมส่วนใหญ่ได้รับการเรียกคำสั่งเพื่อทำงานอย่างเดียว สิ่งนี้ทำให้คำสั่งอ่านได้ง่ายและยอมให้ใช้คำสั่งใหม่แต่ละครั้งเมื่อต้องการทำงานเดียวกัน
ฟังก์ชันเป็นโมดูลเก็บคำสั่งที่กำหนดการเรียกอินเตอร์เฟซ ทำงานเดียวกัน และตัวเลือกส่งออกค่าจากการเรียกฟังก์ชัน คำสั่งต่อไปเป็นการเรียกฟังก์ชันอย่างง่าย
my_function ();
คำสั่งเรียกฟังก์ชันชื่อ my_function ที่ไม่ต้องการพารามิเตอร์ และไม่สนใจค่าที่อาจจะส่งออกโดยฟังก์ชันนี้
ฟังก์ชันจำนวนมากได้รับการเรียกด้วยวิธีนี้ เช่น ฟังก์ชัน phpinfo () สำหรับแสดงเวอร์ชันติดตั้งของ PHP สารสนเทศเกี่ยวกับ PHP การตั้งค่าแม่ข่ายเว็บ ค่าต่างๆ ของ PHP และตัวแปร ฟังก์ชันนี้ไม่ใช้พารามิเตอร์และโดยทั่วไปไม่สนใจค่าส่งออก ดังนั้นการเรียก phpinfo () จะประกอบขึ้นดังนี้
phpinfo ();

การกำหนดฟังก์ชันและการเรียกฟังก์ชัน

การประกาศฟังก์ชันเริ่มต้นด้วยคีย์เวิร์ด function กำหนดชื่อฟังก์ชัน พารามิเตอร์ที่ต้องการ และเก็บคำสั่งที่จะประมวลผลแต่ละครั้งเมื่อเรียกฟังก์ชันนี้
<?php
function function_name(parameter1,…)
{
ชุดคำสั่ง …
}
?>
ชุดคำสั่งต้องเริ่มต้นและสิ้นสุดในวงเล็บปีกกา ({ }) ตัวอย่างฟังก์ชัน my_function
<?php
function my_function()
{
$mystring =<<<BODYSTRING
my function ได้รับการเรียก
BODYSTRING;
echo $mystring;
}
?>
การประกาศฟังก์ชันนี้ เริ่มต้นด้วย function ดังนั้นผู้อ่านและตัวกระจาย PHP ทราบว่าต่อไปเป็นฟังก์ชันกำหนดเอง ชื่อฟังก์ชันคือ my_function การเรียกฟังก์ชันนี้ใช้ประโยคคำสั่งนี้
my_function ();
การเรียกฟังก์ชันนี้จะให้ผลลัพธ์เป็นข้อความ "my function ได้รับการเรียก " บน browser

การตั้งชื่อฟังก์ชัน

สิ่งสำคัญมากในการพิจารณาเมื่อตั้งชื่อฟังก์ชันคือชื่อต้องสั้นแต่มีความหมาย ถ้าฟังก์ชันสร้างส่วนตัวของเพจควรตั้งชื่อเป็น pageheader () หรือ page_header ()
ข้อจำกัดในการตั้งชื่อคือ
  • ฟังก์ชันไม่สามารถมีชื่อเดียวกับฟังก์ชันที่มีอยู่
  • ชื่อฟังก์ชันสามารถมีได้เพียงตัวอักษรตัวเลข และ underscore
  • ชื่อฟังก์ชันไม่สามารถเริ่มต้นด้วยตัวเลข
หลายภาษายอมให้ใช้ชื่อฟังก์ชันได้อีก ส่วนการทำงานนี้เรียกว่า function overload อย่างไรก็ตาม PHP ไม่สนับสนุน function overload ดังนั้นฟังก์ชันไม่สามารถมีชื่อเดียวกันกับฟังก์ชันภายใน หรือฟังก์ชันกำหนดเองที่มีอยู่
หมายเหตุ ถึงแม้ว่าทุกสคริปต์ PHP รู้จักฟังก์ชันภายในทั้งหมด ฟังก์ชันกำหนดเองอยู่เฉพาะในสคริปต์ที่ประกาศสิ่งนี้หมายความว่า ชื่อฟังก์ชันสามารถใช้ในคนละไฟล์แต่อาจจะไปสู่ความสับสน และควรหลีกเลียง
ชื่อฟังก์ชันต่อไปนี้ถูกต้อง
name ()
name2 ()
name_three ()
_namefour ()
ชื่อไม่ถูกต้อง
5name ()
Name-six ()
fopen ()
การเรียกฟังก์ชันไม่มีผลจากชนิดตัวพิมพ์ ดังนั้นการเรียก function_name (), Function_Name() หรือ FUNCTION_NAME() สามารถทำได้และมีผลลัพธ์เหมือนกัน แต่แบบแผนการกำหนดชื่อฟังก์ชันใน PHP ให้ใช้ตัวพิมพ์เล็ก
ชื่อฟังก์ชันแตกต่างจากชื่อตัวแปร โดยชื่อตัวแปรเป็นชนิดตัวพิมพ์มีผล ดังนั้น $Name และ $name เป็น 2 ตัวแปร แต่ Name () และ name () เป็นฟังก์ชันเดียวกัน

การหยุดประมวลผลภายในฟังก์ชัน

คีย์เวิร์ด return หยุดการประมวลผลฟังก์ชัน ฟังก์ชันสิ้นสุดได้เพราะประโยคคำสั่งทั้งหมดได้รับการประมวลผล หรือ ใช้คีย์เวิร์ด return การประมวลผลกลับไปยังประโยคคำสั่งต่อจากการเรียกฟังก์ชัน
<?php
function division($x, $y)
{
if ($y == 0 || !isset($y))
{
echo " ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า" ;
return;
}
$result = $x / $y;
echo $result;
}
?>
ถ้าประโยคคำสั่ง return ได้รับการประมวลผล บรรทัดคำสั่งต่อไปในฟังก์ชันจะถูกข้ามไป และกลับไปยังผู้เรียกฟังก์ชันนี้ ในฟังก์ชันนี้ ถ้า y เป็น 0 จะหยุดการประมวลผล ถ้า y ไม่เท่ากับ 0 จะคำนวณผลหาร
สมมติป้อนค่าเป็น
x = 4, y = 0
x = 4
x = 4, y = 2
ผลลัพธ์ของคำสั่ง คือ
x = 4, y = 0 ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = 2 ผลลัพธ์ 2

การเรียกฟังก์ชัน

เมื่อฟังก์ชันได้รับการประกาศหรือสร้างขึ้นแล้ว การเรียกฟังก์ชันสามารถเรียกมาจากที่ใดๆ ภายในสคริปต์ หรือ จากไฟล์ที่มีการรวมด้วยประโยคคำสั่ง include() หรือ require()
ตัวอย่าง ฟังก์ชัน show_message() เก็บอยู่ในไฟล์ fn_ 03 _keeper.php ส่วนผู้เรียกอยู่ในสคริปต์ fn_ 03 _caller.php
<?php
include("fn_ 03 _keeper.php");
show_message();
?>

วันอาทิตย์ที่ 2 พฤศจิกายน พ.ศ. 2557

หน้าที่ของระบบฐานข้อมูล

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





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


ระบบฐานข้อมูล

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

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