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

ฟังก์ชันทางคณิตศาสตร์

1 ฟังก์ชันทางคณิตศาสตร์
ฟังก์ชันทางคณิตศาสตร์เป็นฟังก์ชันเกี่ยวข้องกับการคำนวณตัวเลข ทั้งการคำนวณตัวเลขทั่วไป เกี่ยวกับการปัดเศษเลข ฟังก์ชันทางตรีโกณ การสุ่มตัวเลข การแปลงตัวเลขระหว่างฐานและหน่วยที่ใช้บ่อย การทดสอบชนิดข้อมูล ซึ่งฟังก์ชันในกลุ่มนี้เป็นฟังก์ชันมาตรฐานที่ไม่ต้องติดตั้งโมดูล
เพิ่มเติม (extension module) พิเศษใดๆ
กลุ่มฟังก์ชันทางคณิตศาสตร์มีฟังก์ชันต่างๆ ที่สำคัญแยกตามกลุ่มย่อยดังนี้
1 1) ฟังก์ชันคณิตศาสตร์ทั่วไป
number abs (x) ให้ค่า Absolute value คือค่าที่ไม่คิดเครื่องหมายบวกลบ เช่น
abs (345) ให้ข้อมูลตัวเลข 345,
abs(-8023.50) ให้ผลลัพธ์ตัวเลข 8023.50 เป็นต้น
float exp (x) คำนวณค่า exponential ของ e (Natural logarithm base) ex
float log10 (x) คำนวณค่า logarithm ฐาน 10
float log (x) คำนวณค่า Natural logarithm loge (x) หรือ ln x
number max (x1,x2) ให้ค่าข้อมูลที่สูงสุดระหว่าง x1 กับ x2 เช่น
 max (50.4,-35) ได้ผลลัพธ์ 50.4 หรือ
 max (-380, -550) จะให้ผลลัพธ์ -380 เป็นต้น
number min (x1,x2) ให้ค่าข้อมูลที่น้อยที่สุดระหว่าง x1 กับ x2
float fmod (x1,x2) ให้ค่าเศษจากการหารเลขทศนิยม เช่น fmod(3.5,2) ได้ผลเป็น 1.5
(3.5 หารด้วย 2 ได้ผลจำนวนเต็มเป็น 1 และเหลือเศษ 1.5)
float hypot (x,y) คำนวณค่า Square root ของ (x2 + y2)
float pi ( ) ให้ค่า pi (3.1415926535898)
float pow (x,y) คำนวณค่ายกกำลัง x y
float sqrt (x) คำนวณค่าถอดรากที่ 2 (square root) ของ x
ฟังก์ชันเหล่านี้มักจะใช้กับสูตรการคำนวณตัวเลขเพื่อการวิเคราะห์ต่างๆ เช่น การคำนวณหาแนวโน้ม ค่าทางสถิติทั้งด้านวิทยาศาสตร์ด้านการเงิน ตัวอย่างของการใช้ฟังก์ชัน min, max เช่นการหักลดหย่อนภาษีที่ระบุว่าให้หักได้ตามจริงแต่ไม่เกินจำนวนที่ระบุ หรือ ให้เสียภาษีเหมาจ่าย 0.05% หรือทำการหักลดหย่อนแล้วคิดภาษีตามอัตราที่ระบุ แล้วแต่อย่างใดจะมากกว่ากัน ฯลฯ เป็นต้น
$insureDeduc = min ($insurance,50000.00);
1 2) ฟังก์ชันเกี่ยวกับการปัดเศษตัวเลข
• float ceil (float x)
ปัดเศษเลขทศนิยมให้เป็นเลขจำนวนเต็มโดยการปัดเศษขึ้นหากมีเลขหลังจุดทศนิยม
(ปัดเศษเลขโดยเพิ่มค่าขึ้นให้เป็นเลขจำนวนเต็มจำนวนถัดไป) ผลลัพธ์ได้เลข floating point ที่มี
เศษทศนิยมเป็น x.0 เช่น
ceil (4.01) ได้ผลลัพธ์ 5.0
ceil (3.98) ได้รับผลลัพธ์ 4.0
ceil (-3.98) ได้รับผลลัพธ์ -3.0
ceil (-4.01) ได้ผลลัพธ์ -4.0 เป็นต้น
• float floor (float x)
ปัดเศษเลขทศนิยมให้เป็นเลขจำนวนเต็มโดยการปัดเศษลงหากมีเลขหลังจุดทศนิยม
(ปัดเศษเลขโดยลดค่าลงให้เป็นเลขจำนวนเต็มจำนวนถัดไป) ผลลัพธ์ได้เลข floating point ที่มี
เศษทศนิยมเป็น x.0 เช่น
floor (4.99) ได้ผลลัพธ์ 4.0
floor (5.1) ได้ผลลัพธ์ 5.0
floor (5.0) ได้ผลลัพธ์ 5.0
บทที่ 3
ฟังก์ชันมาตรฐานของภาษา PHP.93
floor (-5.1) ได้ผลลัพธ์ -6.0
floor (-4.99) ได้ผลลัพธ์ -5.0
• float round (float x)
ปัดเศษเลขทศนิยมโดยปัดขึ้นหรือลงดูจากค่าทศนิยม 0.5 ผลลัพธ์ได้เลข floating point
ที่มีเศษทศนิยมเป็น x.0 เช่น
round (4.4999) ได้ผลลัพธ์ 4.0
round (4.5) ได้ผลลัพธ์ 5.0
round (-4.4999) ได้ผลลัพธ์ -4.0
round (-4.5) ได้ผลลัพธ์ -5.0
ฟังก์ชันเหล่านี้จะทำการปัดเศษทศนิยมให้เหลือแต่จำนวนเต็มแต่ยังคงได้รับผลเป็นตัวเลขชนิด
floating point เนื่องจากหากใช้ integer อาจไม่สามารถรับข้อมูลขนาดใหญ่ที่มาจากการปัดเศษของfloat ได้หากต้องการให้ปัดตัวเลขตามจำนวนหน่วยของหลักเลขที่ต้องการ เช่น ปัดเลขทศนิยมหลักที่3 (ปัดให้เหลือเศษเพียง 2 หลัก) ตย. 45.1225 ปัดเศษทิ้งเป็น 45.12 หรือปัดขึ้นเป็น 45.13 ทำได้โดยceil ($x/0.01)*0.01 หากต้องการปัดเศษให้เหลือเลขหลังจุด 4 หลักก็จะเป็น ceil ($x/0.0001)*0.0001 หากต้องการปัดเลขจำนวนเต็มให้เป็นหลักร้อย เช่น 35640 หากปัดขึ้นจะเป็น 35700 สามารถใช้ expression ceil($x/100)*100 ซึ่งหากจะเขียนเป็น expression แบบทั่วไปสร้างเป็น
function ใหม่ได้เป็น
function ceil2digit ($x,$digit=0) {
$c = pow(10,$digit);
return ceil($x/$c) * $c;
}
โดยที่มีการส่ง argument 2 ตัวได้แก่ $x เป็นค่าที่ต้องการปัดเลข และ $digit จำนวนหลัก
เลขที่ต้องการ เช่นหากจะปัดเลขให้เป็นหลักร้อยคือปัดเลขจำนวนเต็มที่มีเลข 0 ตรงท้าย 2 หลัก จะส่ง$digit เป็น 2 หากจะปัดเป็นหลักหมื่นคือปัดเลขจำนวนเต็มขึ้น 4 หลัก กำหนด $digit เป็น 4 ในกรณีปัดเศษเศษทศนิยมจะกำหนดจำนวนหลักเป็นเลขลบ เช่น หากต้องการปัดเลขเศษทศนิยมให้เหลือ 2 หลัก กำหนด $digit เป็น -2 หากจะปัดเลขเศษทศนิยมให้เหลือ 5 หลัก กำหนด $digit เป็น -5 เป็นต้น
ตัวอย่างการเรียกใช้ฟังก์ชัน ceil2digit( ) แสดงได้ดังนี้
<?
echo ceil2digit(3456,2); // 3500
echo ceil2digit(1401,2); // 1500
echo ceil2digit(1000001,5); // 1100000
echo ceil2digit(356.136589,-4); //356.1366
?>
1 3) ฟังก์ชันตรีโกณ
float acos (x) Arc cosine คือ cos-1 (x)
float acosh (x) Inverse hyperbolic cosine ของ x
float asin (x) Arc sine ของ x, sine-1 (x)
float asinh (x) Inverse hyperbolic sine ของ x
float atan2 (x,1x2) arc tangent of สองค่า
float atan (x) Arc tangent ของ x, tan-1 (x)
float atanh (x) Inverse hyperbolic tangent ของ x
float cos (x) Cosine ของ x, cos(x)
float cosh (x) Hyperbolic cosine ของ x
float sin (x) Sine ของ x, sine (x)
WEB PROGRAMMING
Using PHP. and MySQL.94 94
float sinh (x) Hyperbolic sine ของ x
float tan (x) Tangent ของ x
float tanh (x) Hyperbolic tangent ของ x
ฟังก์ชันในกลุ่มนี้มักจะใช้กับการคำนวณทางวิทยาศาสตร์วิศวกรรม เป็นหลัก เช่นในการ
ออกแบบโครงสร้างทางวิศวกรรม การคำนวณทางฟิสิกส์ฯลฯ เป็นต้น ส่วนในการใช้งานด้านทั่วไปมักไม่ได้ใช้ประโยชน์จากฟังก์ชันเหล่านี้ค่า argument ที่ส่งให้แก่ฟังก์ชันตรีโกณเป็นข้อมูลตัวเลขfloating point และจะให้ผลลัพธ์เป็น floating point เช่นกัน
1 4) ฟังก์ชันการแปลงเลข-หน่วย
เป็นฟังก์ชันที่ใช้แปลงตัวเลขหรือข้อความแสดงตัวเลขฐานหนึ่ง ไปเป็นข้อความหรือตัวเลขฐานอื่นๆ มีทั้งฟังก์ชันแปลงฐานใดๆ และฟังก์ชันที่กำหนดเฉพาะฐาน และยังมีฟังก์ชันที่ทำการแปลงหน่วย
ของมุมด้วย ฟังก์ชันในกลุ่มนี้ประกอบด้วยฟังก์ชันต่างๆ ดังนี้
string base_convert (string data,
int frombase, int tobase)
แปลงข้อความเลขฐานหนึ่งไปเป็นอีกฐานหนึ่งโดยระบุฐาน
ของเลขต้นทางและผลลัพธ์ตัวอย่างเช่น
$accessBit = base_convert ("744",8,2);
เป็นการแปลงข้อความจากเลขฐาน 8 เป็นเลขฐานสอง
เป็นต้น
int bindec ( string binary_string) แปลงข้อความแสดงเลขฐานสองให้เป็นเลขจำนวนเต็มฐาน
สิบ
string decbin ( int number) แปลงตัวเลขจำนวนเต็มให้เป็นข้อความแสดงเลขฐานสอง
string dechex ( int number) แปลงตัวเลขจำนวนเต็มให้เป็นข้อความแสดงเลขฐานสิบหก
string decoct ( int number) แปลงตัวเลขจำนวนเต็มให้เป็นข้อความแสดงเลขฐานแปด
float deg2rad ( float number) แปลงตัวเลขมุมที่มีหน่วยเป็นองศาให้เป็นหน่วย radian
int hexdec ( string hex_string) แปลงข้อความแสดงเลขฐานสิบหกให้เป็นตัวเลขจำนวนเต็ม
int octdec ( string hex_string) แปลงข้อความแสดงเลขฐานแปดให้เป็นตัวเลขจำนวนเต็ม
float rad2deg ( float number) แปลงตัวเลขมุมที่มีหน่วยเป็นเรเดียนให้เป็นหน่วยองศา
ตัวอย่างเช่น การสร้างฟังก์ชันเพื่อสร้าง color # ที่กำหนดสีให้แก่ HTML tag เช่น <body
bgcolor="#03203A"> ซึ่งต้องการเลขฐานสิบหก จากค่าตัวเลขสีแต่ละสีเป็นเลข 0-255 แสดงดัง
Listing 3.1-1
Listing 3.1-1 colorId-exam.php
1 <?
2 function colorID255($r,$g,$b){
3 $r = min($r,255);
4 $g = min($g,255);
5 $b = min($b,255);
6 return "#" .
7 str_pad(dechex($r),2,"0",STR_PAD_LEFT) .
8 str_pad(dechex($g),2,"0",STR_PAD_LEFT) .
9 str_pad(dechex($b),2,"0",STR_PAD_LEFT);
10 }
11 echo colorID255(200,40,130);
12 ?>
ตัวอย่างนี้ฟังก์ชัน colorID255 รับ argument 3 ตัวเป็นค่าสี integer สำหรับแม่สี red,
green และ blue จากตัวแปร $r, $g และ $b ในตัวอย่างนี้ใช้ฟังก์ชัน 3 ฟังก์ชันได้แก่ min( ) ,dexhex( ) และ str_pad( ) โดย คำสั่งบรรทัดที่ 3-5 ใช้เพื่อไม่ให้ค่าในตัวแปร $4,$g,$b เกิน 255เนื่องจากฟังก์ชัน min( ) จะให้ผลจากค่า argument ที่มีค่าน้อยกว่าดังนั้นหากค่าในตัวแปรเกิน 255จะให้ผลลัพธ์เป็น 255 แต่หากไม่เกินจะให้ค่าเดิม ในบรรทัดที่ 7-9 จะทำการแปลงจากค่าตัวเลขในตัวแปรให้กลายเป็นข้อความที่แสดเลขฐานสิบหกโดยใช้ฟังก์ชัน dechex( ) และเติมเลข 0 นำหน้าให้ครบ 2 หลักโดยใช้ฟังก์ชัน str_pad( )
1 5) ฟังก์ชันสุ่มตัวเลข
ในภาษา PHP มีการใช้ฟังก์ชันเกี่ยวกับการสุ่มตัวเลข 2 แบบได้แก่ แบบ libc ซึ่งจะใช้ฟังก์ชัน
rand ( ) และการใช้ฟังก์ชันสุ่มด้วยเทคนิค Mersenne Twister ที่สร้างค่าสุ่มได้เร็วกว่า libc ถึง 4 เท่าโดยใช้ฟังก์ชัน mt_rand ( ) ทั้งสองฟังก์ชันจะให้ค่าสุ่มเป็นเลขจำนวนเต็มที่กำหนดช่วงข้อมูลได้หากโปรแกรมใดต้องการสร้างค่าสุ่ม ควรจะใช้คำสั่งเพื่อเริ่มต้นการสร้างตัวเลขสำหรับการสุ่มโดยใช้ฟังก์ชัน Seed random number generator ในตอนต้นของ page คำสั่งการเริ่มการสร้างตัวเลขสุ่มนี้ใช้เพียงครั้งเดียวในแต่ละ page แล้วสามารถใช้ฟังก์ชัน rand( ) ได้หลายครั้ง หากไม่ใช้คำสั่งเริ่มต้นการสร้างค่าสุ่มจะทำให้ตัวเลขสุ่มเมื่อโปรแกรมทำงานแต่ละรอบได้ค่าที่ซ้ำกัน ฟังก์ชันที่ใช้
เริ่มการสร้างค่าสุ่มคือ srand( ) และ mt_srand( )การใช้ srand หรือ mt_srand ต้องการ parameter เป็นตัวเลขเพื่อกำหนดค่าตั้งต้นของการสุ่ม ซึ่งเทคนิคโดยทั่วไปเราจะใช้ค่าที่ไม่เหมือนกันในแต่ละครั้งที่เพจถูกเรียกให้ทำงาน ซึ่งมักจะดึงเอาเวลา timestamp ในขณะที่เพจถูกเรียกใช้งาน ที่มีความละเอียดสูง ซึ่งมีฟังก์ชันสนับสนุนคือmicrotime( ) นำมาใช้เป็นค่าเริ่มต้น ซึ่งมักจะใช้ code ดังนี้
srand((float)microtime() * 1000000);
ใน PHP version 4.2.0 เป็นต้นไปไม่จำเป็นต้องเขียนคำสั่ง srand หรือ mt_srand เนื่องจาก
PHP engine จะดำเนินการเองโดยอัตโนมัติ
รายการฟังก์ชันเกี่ยวกับการสุ่มตัวเลขแสดงในตารางต่อไปนี้
int mt_getrandmax ( ) ให้ค่าสุ่มสูงสูงสุดที่สามารถทำได้
void mt_srand ( ) เริ่มการสร้างค่าสุ่มในโปรแกรม
int mt_rand ( [int min, int
max])
สร้างตัวเลขสุ่มโดยสามารถกำหนดค่าสูงสุด ต่ำสุดได้หากไม่กำหนด
จะให้ค่าระหว่าง 0 ถึง ค่าสูงสูดที่สามารถทำได้ (ใช้ฟังก์ชัน
getrandmax หากต้องการทราบค่าสูงสุดที่สามารถทำได้)
int getrandmax ( ) ให้ค่าสุ่มสูงสูงสุดที่สามารถทำได้
int rand ( ) สร้างตัวเลขสุ่ม
void srand ( ) เริ่มการสร้างค่าสุ่มในโปรแกรม
ฟังก์ชันเกี่ยวกับการสร้างตัวเลขสุ่ม สามารถนำไปใช้ประโยชน์ได้เช่น การสุ่มรายการข้อมูล
ขึ้นมาแสดง ซึ่งข้อมูลนั้นอาจจะเป็นบทความทีน่าสนใจ รูปภาพ banner โฆษณา ฯลฯ เป็นต้น
และนอกจากนี้ยังอาจใช้ฟังก์ชันการสุ่มเพื่อสร้างข้อมูลสำหรับการทดสอบขึ้นอาจเป็นข้อมูลที่สร้างในระหว่างการทดสอบโปรแกรมหรือสร้างข้อมูลตัวอย่างเก็บลงในไฟล์ข้อมูลหรือฐานข้อมูลสำหรับใช้ทดสอบ หรืออาจสุ่มเพื่อสร้างสภาวะจำลองการทำงาน เช่นสุ่มเวลาที่จะมีข้อมูลลำดับถัดไปเข้ามา เป็นต้น
ตัวอย่างแสดงการสุ่มข้อมูลตัวเลขที่อยู่ระหว่าง 25-100 จำนวน 50 ค่า แสดงผลโดยมี
เครื่องหมาย comma คั่น
<?
mt_srand();
for ($i=0; $i<50; $i++) {
echo $comma, mt_rand (25,100);
$comma = ', ';
}
?>
1 6) ฟังก์ชันทดสอบนิพจน์ตัวเลข
ฟังก์ชันเหล่านี้จะทำการตรวจสอบข้อมูลที่ส่งมาใน argument ว่าได้เป็นข้อมูลที่สามารถเก็บ
ผลเป็นตัวเลขหรือไม่จะรับข้อมูลใน argument เป็นชนิดตัวเลข และให้ผลลัพธ์เป็น Boolean แสดงผลลัพธ์จากการตรวจสอบเป็น true หากตรงเงื่อนไข หากไม่ตรงจะได้ false
• boolean is_finite (float val)
WEB PROGRAMMING
Using PHP. and MySQL.96 96
ทดสอบว่าเป็น expression ตัวเลขที่ให้ค่าที่สามารถเก็บข้อมูลแบบ double ได้ (finite)
หรือไม่
• boolean is_infinite (float val)
ทดสอบว่าเป็น expression ให้ผลเป็นตัวเลขที่ให้ค่าตัวเลขที่ไม่สามารถเก็บค่าแบบ
double ได้ทั้งค่าบวกหรือลบหรือไม่ คือเป็นค่าที่มีขนาดใหญ่มากเกินความสามารถของ php ที่จะ
เก็บได้
• boolean is_nan (float val)
ทดสอบว่าเป็น expression ที่ได้ผลเป็นตัวเลขหรือไม่ หากไม่เป็นชนิดตัวเลข (is not anumber) อาจเป็นผลจากการใช้ expression ที่ไม่สามารถให้ผลเป็นค่าตัวเลขได้ถูกต้อง จะให้ผลลัพธ์เป็น true แต่หากเป็นข้อมูลตัวเลขจะได้ผลลัพธ์เป็น false เช่น is_nan( acos(1.01)) จะได้เป็น true (ปกติค่า cosine จะมีค่าไม่เกิน 1 ดังนั้น arc cosine ของ 1.01 ไม่สามารถหาค่าได้ฟังก์ชันเหล่านี้มักจะใช้เพื่อตรวจสอบความถูกต้องจากการคำนวณตัวเลขของexpression ว่าสามารถให้ผลลัพธ์ที่เป็นตัวเลขที่ถูกต้องหรือไม่ ซึ่งในการคำนวณด้วยexpression ที่เกิดผลลัพธ์เป็นค่าตัวเลขทศนิยมที่มีขนาดใหญ่มากๆ หรือมีขนาดเล็กมากๆ จนการเก็บข้อมูลแบบ double ซึ่งถือเป็นวิธีเก็บข้อมูลที่ได้ข้อมูลขนาดใหญ่มากที่สุดของภาษา PHP ไม่สามารถแทนค่าดังกล่าวได้หากนำผลลัพธ์จาก expression นั้นไปใช้ก็ได้ได้ผลที่ผิดพลาดไป จึงต้องมีการตรวจสอบก่อนว่าได้ผลลัพธ์ที่ถูกต้อง


ฟังก์ชั่น php

นอกเหนือจากหลักสำคัญของภาษาที่กล่าวถึงในบทที่ 2   แล้ว  ส่วนประกอบที่สำคัญอีก   ส่วนหนึ่งในการสร้าง web program หรือโปรแกรมทั่วไป คือการใช้ฟังก์ชันที่เตรียมไว้ในภาษานั้นๆ (predefined หรือ standard function) มีทั้งฟังก์ชันที่สามารถใช้งานได้เป็นมาตรฐาน และฟังก์ชันที่ต้องนำเข้าจากไลบราลีซึ่งเป็นไฟล์ที่รวมเอาฟังก์ชันที่ใช้งานเป็นเรื่องๆหรือแยกเป็นกลุ่มตามหน้าที่ของฟังก์ชัน ซึ่งเราอาจจะได้พบเห็นคำว่า API. หรือ ApplicationProgram Interface ก็คือกลุ่มของฟังก์ชันที่โปรแกรมระบบต่างๆ เตรียมไว้ให้ผู้เขียนโปรแกรมเรียกใช้ประโยชน์ หากเป็นภาษาโปรแกรมแบบ Object Oriented Programmingก็จะมีการเตรียม class เพื่อใช้สร้าง object ที่มี method ที่เทียบเท่ากับฟังก์ชัน เพื่อให้application ต่างๆ สามารถนำมาใช้ประโยชน์ได้ในลักษณะเดียวกัน
สำหรับภาษา PHP มีฟังก์ชันอยู่เป็นจำนวนมากนับพันฟังก์ชัน แบ่งออกเป็นกลุ่มฟังก์ชันที่สนับสนุนการดำเนินการในหลากหลายด้าน เนื่องจากเป็นภาษาที่เป็น opensourceและ freeware ทำให้มีผู้ร่วมกันสร้างฟังก์ชันต่างๆ และถูกนำมาใช้เป็นมาตรฐานของ PHP อยู่มากมาย ฟังก์ชันจำนวนหนึ่งสามารถใช้งานกับ PHP engine ที่ติดตั้งได้ทุกระบบ แต่บางกลุ่มของฟังก์ชันจะต้องถูกติดตั้งและระบุใน configuration file ของ PHP เนื่องจากเป็นฟังก์ชันที่อาจจะไม่ได้ใช้งานกันโดยทั่วไป แต่ก็สามารถ download ส่วนประกอบที่เรียกว่า extensionหรือส่วนขยายของฟังก์ชันแต่ละกลุ่ม เพื่อนำมาติดตั้งได้ตามลักษณะการใช้งานที่ต้องการ ซึ่งใน manual ของ PHP. จะระบุกลุ่มของฟังก์ชันต่างๆ ที่มีชื่อ extension module ที่ต้องติดตั้ง (สำหรับกลุ่มที่ไม่ได้ติดตั้งเป็นมาตรฐาน) และการตั้งค่าใน php.ini

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

การออกแบบฐานข้อมูลและ ER-ไดอะแกรม

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

ลักษณะของ ER-ไดอะแกรม
                ER-ไดอะแกรมประกอบด้วยสามส่วนใหญ่ๆคือ
เอนทิตี (Entity)
                เป็นตัวแทนของสิ่งที่สนใจ หรือจะพูดอีกอย่างว่า ตัวแทนของชุดข้อมูลหนึ่ง ยกตัวอย่างเช่น เอนทิตีสินค้า เอนทิตีลูกค้า เอนทิตีใบสั่งซื้อ เป็นต้น แทนด้วยสี่เหลี่ยม
พรอพเพอร์ตี้(Property)
                เป็นคุณสมบัติของเอนทิตี ซึ่งก็คือ ข้อมูลจริงของสิ่งที่เราสนใจ เช่น เอนทิตีสินค้า ก็จะมีพรอพเพอร์ตี้ เช่น รหัสสินค้า ราคาต่อหน่วย เป็นต้น แทนด้วยวงกลม
ความสัมพันธ์ (Relationship)
                เป็นการเชื่อมโยงระหว่างเอนทิตีกับเอนทิตี เช่น ความสัมพันธ์ระหว่างสินค้ากับใบสั่งซื้อ เป็นต้น แทนด้วยสามเหลี่ยม ความสัมพันธ์มีด้วยกันสามชนิดคือ ความสัมพันธ์ชนิดหนึ่งต่อหนึ่ง (1-1) ความสัมพันธ์ชนิดหนึ่งต่อกลุ่ม (1-M) ความสัมพันธ์ชนิดกลุ่มต่อกลุ่ม (M-N)
                จากรูปที่1จะอ่านได้ว่า มีข้อมูลหลักอยู่ 3 อย่าง (3 เอนทิตี ,3 ตาราง) ได้แก่ ข้อมูลสินค้า(Product) ข้อมูลการสั่งซื้อ(Order)  ข้อมูลลูกค้า(Customer) ซึ่งแต่ละตารางจะมีรายละเอียดย่อยๆ อาทิเช่น ตารางข้อมูลสินค้า ก็จะมีข้อมูลของรหัสสินค้า(ProductID)  ชื่อสินค้า(ProductName) ราคาต่อหน่วย(UnitPrice) ปริมาณคงคลัง (UnitInStock)อยู่เป็นต้น
                ส่วนจากความสัมพันธ์ก็จะอ่านได้ว่า ในการสั่งซื้อแต่ละครั้งจะประกอบด้วยสินค้ากี่ประเภทก็ได้ หรือสินค้าแต่ละประเภทจะถูกสั่งจากหลายการสั่งซื้อก็ได้ (ความสัมพันธ์ชนิดกลุ่มต่อกลุ่ม) กับ แต่ละการสั่งซื้อจะต้องมีผู้สั่งสินค้าเพียงคนเดียว แต่ทว่าลูกค้าแต่ละคนสามารถมีการสั่งซื้อหลายครั้งก็ได้ (ความ สัมพันธ์ชนิดหนึ่งต่อกลุ่ม)

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

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

โครงสร้างของฐานข้อมูล

                ระบบฐานข้อมูลในปัจจุบัน จะนิยมใช้ฐานข้อมูลแบบสัมพันธ์ (Relational Database) โครงสร้างพื้นฐานของฐานข้อมูลประเภทนี้จะมีดังต่อไปนี้

ตาราง(Table)

                จะเป็นที่เก็บข้อมูลของฐานข้อมูล จะมีลักษณะเป็นตาราง 2 มิติ โดยจะถือว่าข้อมูลในแนวนอน(แถว)เป็นข้อมูลหนึ่งชุด เรียกว่าเรคคอร์ด (Record) ซึ่งข้อมูลในแต่ละชุดจะประกอบด้วยข้อมูลต่างๆ ตามแนวตั้ง(คอลัมน์) ซึ่ง เรียกว่า ฟิลด์ (Filed)

อินเด็กซ์ (Index)
                อินเด็กซ์ จะเป็นฟิลด์ที่ใช้ช่วยในการค้นหาข้อมูล การทำงานของฟิลด์ที่เป็นอินเด็กซ์ก็คือ จะมีการจัดเรียงลำดับ โดยอัตโนมัติโดยอาศัยฟิลด์อินเด็กซ์เป็นตัวอ้างอิง การที่มีอินเด็กซ์ก็หมายความว่า ข้อมูลได้มีการจัดเรียงไว้แล้ว ยกตัวอย่างเช่นสมุดโทรศัพท์ ถ้าเราต้องการต้องการหาชื่อคนที่ขึ้นต้นด้วยตัว อ.อ่าง เราก็สามารถไปเปิดค้นได้จากบริเวณท้ายเล่มได้เลย โดยไม่ต้องดูไปทีละหน้าว่ามีชื่อที่ขึ้นต้นด้วย อ.อ่างอยู่หรือไม่

ไพรมารี่ย์คีย์ (Primary Key)
                ไพรมารี่ย์คีย์จะเป็นฟิลด์ที่สามารถเป็นตัวแทนเรคคอร์ดทั้งหมด ค่าไพรมารี่ย์คีย์จะต้องไม่ซ้ำกัน เมื่อระบุค่าไพรมารี่ย์คีย์แล้ว จะต้องสามารถอ้างอิงถึงฟิลด์อื่นๆได้เลย ยกตัวอย่างเช่น จากรูปที่1 เมื่อเราระบุสินค้ารหัส 0001 ก็จะหมายถึง พัดลมที่ราคา900 บาทได้เลย

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

ทำไมต้องมีฐานข้อมูล

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

                ในการประกอบธุรกิจจะมีข้อมูลต่างๆเกิดขึ้นมากมาย ยกตัวอย่างเช่น ข้อมูลลูกค้า  ข้อมูลการสั่งของ ข้อมูลพนักงาน ฯลฯ ซึ่งข้อมูลเหล่านี้จะต้องมีการเก็บรักษาที่ดี นอกจากนั้นในการตัดสินใจต่างๆจะมีข้อมูลที่ต้องใช้ประมวลผลเพื่อประกอบการตัดสินใจเป็นจำนวนมาก การนำข้อมูลเหล่านี้มาใช้นั้น ถ้าไม่ได้มีการจัดระเบียบการเก็บที่ดี ก็ย่อมนำมาใช้ได้อย่างยากลำบากทำไมต้องมีระบบฐานข้อมูล                ระบบฐานข้อมูลที่มีประสิทธิภาพจะมีหน้าที่หลักๆดังต่อไปนี้                การเก็บรักษาข้อมูล ระบบฐานข้อมูลจะช่วยให้การเก็บรักษาข้อมูลเป็นระบบระเบียบ มีการจัดหมวดหมู่ของข้อมูล ซึ่งจะให้ผู้จัดเก็บทำงานได้สะดวกมากขึ้น และป้องกันความผิดพลาดได้                การนำข้อมูลไปใช้ ข้อนี้จะเป็นหัวใจของระบบฐานข้อมูลเลยทีเดียว ระบบฐานจะทำให้การดึงข้อมูลออกมาใช้สะดวกและมีประสิทธิภาพมากขึ้น การสรุปข้อมูลและประมวลผลต่างๆจะทำได้ง่ายขึ้น ซึ่งจะทำให้สามารถนำข้อมูลไปประกอบการตัดสินใจได้ ยกตัวอย่างเช่น การเก็บข้อมูลใบสั่งของจากลูกค้า ถ้าเราเก็บโดยไม่มีระบบเช่นเก็บสำเนาใบเสร็จทั้งหมดไว้ เราก็จะมีเพียงหลักฐานว่าใครสั่งอะไรไปบ้างเท่านั้น แต่ถ้ามีการเก็บลงระบบฐานข้อมูล โดยเฉพาะอย่างยิ่งเมื่อใช้คอมพิวเตอร์เข้าช่วย เราจะสามารถดึงข้อมูลสรุป ต่างๆออกมาใช้ได้ เช่น สามารถรวบรวมได้ว่า ลูกค้ารายนี้ สั่งอะไรบ้าง สินค้ารายการนี้ถูกสั่งไปเท่าไร เหลืออีกเท่าไร ฯลฯ
                การแก้ไขข้อมูล เป็นอีกความสามารถหนึ่งที่ระบบฐานข้อมูลจะช่วยให้ทำงานสะดวกขึ้น ยกตัวอย่างเช่น จากข้อที่แล้วตัวอย่างใบสั่งของ ถ้าลูกค้ามีการเปลี่ยนหมายเลขโทรศัพท์ติดต่อ เราก็สามารถแก้ทีเดียวได้ โดยไม่ต้องเข้าไปแก้ในใบสั่งของแต่ละใบ เป็นต้น                ซึ่งจากหน้าที่ของระบบฐานข้อมูลจะทำให้เห็นว่า การเก็บข้อมูลอย่างมีระบบกับไม่มีนั้น มีความสามารถและประโยชน์ใช้สอยต่างกันมาก ซึ่งก็คงจะทำให้เห็นประโยชน์ของฐานข้อมูลเด่นชัดขึ้นระบบฐานข้อมูลคอมพิวเตอร์                อันที่จริงแล้วนั้น ระบบฐานข้อมูลไม่จำเป็นจะต้องอิงกับคอมพิวเตอร์เสมอไป ยกตัวอย่างเช่น ระบบบัตรทะเบียนหนังสือในห้องสมุด ระบบบัตรคนไข้ ฯลฯ แม้แต่การที่เราจดบันทึกหมายเลขโทรศัพท์ของเพื่อน ก็ถือได้ว่าเป็นระบบฐานข้อมูลอย่างหนึ่ง  ซึ่งระบบดังกล่าวนี้ ถ้ามีการใช้หลักของการจัดการฐานข้อมูลที่ถูกต้องแล้วละก็ จะสามารถมีความสะดวกในการใช้สอยได้ในระดับหนึ่ง                แต่ทว่าในปัจจุบันเมื่อเราพูดถึงระบบฐานข้อมูล เราก็มักจะนึกถึงระบบฐานข้อมูลคอมพิวเตอร์ การนำคอมพิวเตอร์มาใช้ในการจัดการฐานข้อมูลนั้น อาจพูดได้ว่า เป็นการใช้คอมพิวเตอร์ที่ตรงกับข้อเด่นที่สุดของคอมพิวเตอร์อย่างหนึ่ง ก็คือ ใช้กับงานที่มีการทำซ้ำเป็นจำนวนมาก มีการประมวลผลที่เป็นระบบ ซึ่งคอมพิวเตอร์จะไม่มีความผิดพลาดอันเกิดจากการเหนื่อยล้าหรือเบื่อหน่ายมาใช้ระบบฐานข้อมูลคอมพิวเตอร์กันดีกว่า                จากตัวอย่างที่ยกมา คงจะเห็นข้อดีขอระบบฐานข้อมูลคอมพิวเตอร์แล้ว ในขั้นต่อไปในการจะเริ่มใช้ฐานข้อมูล อันดับแรกก็คงจะเป็นการเลือกโปรแกรมจัดการฐานข้อมูลมาใช้  ในปัจจุบันโปรแกรมจัดการฐานข้อมูลมีให้เลือกมากมายหลายชนิด มีทั้งโปรแกรมที่ขายในท้องตลาดทั่วไป เช่น Microsoft access, ORACLE ฯลฯ หรือโปรแกรมที่แจกให้ใช้ผ่านทางอินเตอร์เน็ตโดยไม่ต้องเสียค่าใช้จ่าย เช่น Mysql ฯลฯ
                อันที่จริงแล้วนั้น ในการพัฒนาระบบที่ถูกต้องนั้น จะต้องเริ่มจากการวิเคราะห์ระบบก่อนว่า ระบบของเราเป็นเช่นไร จะมีข้อมูลอะไรบ้างที่ใช้ในระบบ  ต้องประเมินว่าจำนวนข้อมูลทั้งหมดที่จะเกิดขึ้นจะมีประมาณเท่าใด มีการใช้ฐานข้อมูลในลักษณะใดบ้างเช่น ต้องออกรายงาน  ต้องมีการแสดงผลแบบเรียล์ไทม์(real time) ฐานข้อมูลจะมีการเข้าใช้พร้อมกันหลายคนหรือไม่ เป็นต้น ซึ่งเมื่อได้ผลของการวิเคราะห์แล้ว จึงนำไปเลือกโปรแกรมจัดการฐานข้อมูลที่เหมาะสม สามารถรองรับระบบที่เราต้องการใช้ได้
                แต่สำหรับผู้เริ่มต้นแล้ว แนะนำว่าให้เริ่มทดลองใช้ให้คุ้นเคยกับระบบการจัดการฐานข้อมูลก่อน เพราะแทบทุกโปรแกรม ลักษณะการจัดการจะค่อนข้างคล้ายคลึงกัน จะมีข้อแตกต่างก็แต่ว่าการใช้งานยากง่ายต่างกันเท่านั้น เช่นหน้าตาของตัวโปรแกรม การจัดวางเมนูใช้งาน ฟังชั่นสนับสนุนการทำงานต่างๆ ซึ่งเมื่อมีความคุ้นเคยแล้ว ก็จะทำให้สามารถเลือกโปรแกรมที่เหมาะสมกับระบบงานที่เป็นอยู่ได้หลักการเลือกโปรแกรมระบบฐานข้อมูล                การเลือกโปรแกรมระบบฐานข้อมูลมีข้อที่ควรคำนึงถึงต่อไปนี้จำนวนข้อมูลที่รองรับได้ องค์กรขนาดย่อมอาจไม่ต้องคำนึงถึงมากนัก แต่ต้องคิดถึงการขยายในอนาคตด้วยวิธีการนำข้อมูลไปใช้  โปรแกรมระบบฐานข้อมูลทุกชนิด จะมีการเตรียมวิธีการนำข้อมูลไปใช้ไว้อยู่แล้ว แต่รูปแบบของการนำไปใช้ จะแตกต่างกัน ในแต่ละประเภท ตรงนี้ เราต้องคำนึงถึงว่า การนำไปใช้ของเราเป็นลักษณะใด เช่น เราต้องการรายงานออกมาในรูปตารางสรุป หรือ อาจต้องการในรูปของกราฟแสดงผล นอกจากนั้น ยังต้องคำนึงถึงว่า การถ่ายข้อมูลไปยังโปรแกรมอื่นๆที่เกี่ยวข้องกระทำได้หรือไม่ มีรูปแบบการนำข้อมูลออกตรงกับที่ต้องการหรือไม่ เช่น ต้องการนำข้อมูลไปเข้าโปรแกรมวิเคราะห์ทางสถิติ เป็นต้นความเป็นมาตรฐาน ความแพร่หลาย ถ้าเราใช้โปรแกรมที่มีจำนวนผู้ใช้มาก ก็จะทำให้การแลกเปลี่ยนข้อมูลสะดวกขึ้น นอกจากนั้นยังสามารถ ขอความช่วยเหลือและพัฒนาระบบต่อได้โดยง่ายระบบความปลอดภัย ต้องคำนึงถึงทั้งการเก็บสำรองข้อมูลในกรณีเกิดปัญหาทางฮาร์ดแวร์  และ ระบบป้องกันการเข้าถึงข้อมูลในกรณีที่เป็นข้อมูลลับที่อาจมีการขโมยข้อมูลเกิดขึ้น