Database (ฐานข้อมูล)Mysql

            Mysql จัดเป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS : Relational Database Management System) ซึ่งเป็นที่นิยมใช้กันมากในปัจจุบัน โดยเฉพาะอย่างยิ่งในโลกของ internet เนื่องจาก

-   mysql เป็นฟรีแวร์ทางด้านฐานข้อมูลที่มีประสิทธิภาพสูง

-   นักพัฒนาฐานข้อมูลที่เคยใช้ mysql ต่างยอมรับในความรวดเร็ว การรองรับจำนวนผู้ใช้ และขนาดของข้อมูลจำนวนมหาศาล

-    สนับสนุนการใช้งานบนระบบปฏิบัติการมากมาย เช่น UNIX OS/2 MAC OS Windows

-    สามารถใช้งานร่วมกับ Web Development platform เช่น C, C++ , Java, Perl, PHP,  Python, TCL, หรือ ASP

-    ได้รับความนิยมอย่างมากในปัจจุบัน และมีแนวโน้มสูงขึ้นเรื่อยๆในอนาคต

            Mysql จัดเป็นซอฟท์แวร์ประเภท open source software สามารถ download ซอร์สโคดต้นฉบับได้จากอินเทอร์เนทโดยไม่เสียค่าใช้จ่ายใดๆ การแก้ไขสามารถทำได้ตามต้องการ mysql ยึดถือสิทธิบัตรตาม GPL (GNU General Public License) ซึ่งเป็นข้อกำหนดของซอฟท์แวร์ประเภทนี้ โดยจะเป็นการชี้แจงว่าสิ่งใดทำได้ หรือทำไม่ได้ในกรณีต่างๆ สามารถหาข้อมูลเพิ่มเติมได้จากเว็บไซท์ www.gnu.org

          โครงสร้างการทำงานของ mysql เป็นลักษณะการทำงานแบบ client/server ซึ่งประกอบด้วย 2 ส่วนหลักๆคือ ส่วนของผู้ให้บริการ (Server) และ ส่วนของผู้ใช้บริการ (Client) โดยในแต่ละส่วนก็จะมีโปรแกรมสำหรับการทำงานตามหน้าที่ของตน

                ส่วนของผู้ให้บริการ (Server) เป็นส่วนที่ทำหน้าที่บริหารจัดการระบบฐานข้อมูล ก็คือตัว mysql server นั่นเอง และเป็นที่จัดเก็บข้อมูลทั้งหมด

                ส่วนของผู้ใช้บริการ (Client) คือผู้ใช้นั่นเอง โปรแกรมใช้งานในส่วนนี้ได้แก่ Mysql client, Access, Web development platform ต่างๆ เช่น Java, Perl, PHP, ASPิ

 

ประเภทของข้อมูลใน mysql

1. ประเภทข้อมูลสำหรับตัวเลข

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

ตารางที่ 1 แสดงประเภทข้อมูลชนิดจำนวนเต็ม

ลำดับที่

ชื่อประเภทข้อมูล

แบบคิดเครื่องหมาย

แบบไม่คิดเครื่องหมาย

เนื้อที่เก็บข้อมูล

1

TINYINT(M)

-128 ถึง127

0 ถึง 255

1 byte

2

SMALLINT(M)

-32768 ถึง 32767

0 ถึง 65535

2 byte

3

MEDIUMINT(M)

-8388608 ถึง 8388607

0 ถึง16777215

3 byte

4

INT(M) หรือ INTEGER(M)

-2147483648 ถึง 2147483647

0 ถึง 4294967295

4 byte

5

BIGINT(M)

-9223372036854775808 ถึง 9223372036854775807

0 ถึง 18446744073709551615

8 byte

 

ตารางที่ 2 แสดงประเภทข้อมูลชนิดจำนวนทศนิยม

ลำดับที่

ชื่อประเภทข้อมูล

แบบคิดเครื่องหมาย

แบบไม่คิดเครื่องหมาย

เนื้อที่เก็บข้อมูล

1

FLOAT(M,D)

ค่า M เป็นจำนวนหลักที่ต้องการแสดงผลและค่า D คือจำนวนหลังจุดทศนิยม

-3.402823466E+38 ถึง -1.175494351E-38

0 และ 1.175494351E-38 ถึง 3.402823466E+38

4 byte

2

DOUBLE(M,D)

-1.7976931348623157E+308 ถึง -2.2250738585072014E-308

0 และ 2.2250738585072014E-308 ถึง 1.7976931348623157E+308

8 byte

 

2. ประเภทข้อมูลสำหรับวันที่และเวลา

ลำดับที่

ชื่อประเภทข้อมูล

รายละเอียด

เนื้อที่เก็บข้อมูล

1

DATE

ข้อมูลชนิดวันที่ ตั้งแต่วันที่ 1 มกราคม ค.ศ. 1000 ถึง 31 ธันวาคม ค.ศ. 9999 การแสดงผลวันที่อยู่ในรูปแบบ ‘YYYY-MM-DD’

3 byte

2

DATETIME

ข้อมูลชนิดวันที่และเวลา ตั้งแต่วันที่ 1 มกราคม ค.ศ. 1000 เวลา 00:00:00 ถึง 31 ธันวาคม ค.ศ. 9999 เวลา 23:59:59 การแสดงผลวันที่และเวลาอยู่ในรูปแบบ ‘YYYY-MM-DD HH:MM:SS’

8 byte

 

 

 

3

TIME

ข้อมูลประเภทเวลา สามารถเป็นได้ตั้งแต่ ‘-838:59:59’ ถึง ‘838:59:59’ แสดงผลในรูปแบบ HH:MM:SS

3 byte

4

YEAR(2/4)

ข้อมูลประเภทปี คศ โดยสามารถเลือกว่าจะใช้แบบ 2 หรือ 4 หลัก

ถ้าเป็น 2 หลักจะใช้ได้ตั้งแต่ปี คศ 1901 ถึง 2155

ถ้าเป็น 4 หลักจะใช้ได้ตั้งแต่ปี คศ 1970 ถึง 2069

1 byte

 

3. ประเภทข้อมูลสำหรับตัวอักษร

ลำดับที่

ชื่อประเภทข้อมูล

รายละเอียด

เนื้อที่เก็บข้อมูล

1

CHAR(M)

เป็นข้อมูลสตริงที่จำกัดความกว้าง ไม่สามารถปรับขนาดได้ ขนาดความกว้างเป็นได้ตั้งแต่ 1 ถึง 255 ตัวอักษร

ตามจำนวนตัวอักษรที่ระบุ

2

VARCHAR(M)

คล้ายกับแบบ CHAR(M) แต่สามารถปรับขนาดตามข้อมูลที่เก็บในฟิลด์ได้ ความกว้างเป็นได้ตั้งแต่ 1 ถึง 255 ตัวอักษร

ขนาดข้อมูลจริง +  1 byte

3

TINYTEXT

เป็น text ที่ความกว้างเป็นได้สูงสุด 255 ตัวอักษร

ขนาดข้อมูลจริง +  1 byte

4

TEXT

เป็น text ที่ความกว้างเป็นได้สูงสุด 65,535 ตัวอักษร

ขนาดข้อมูลจริง +  2 byte

5

MEDIUMTEXT

เป็น text ที่ความกว้างเป็นได้สูงสุด 16,777,215 ตัวอักษร

ขนาดข้อมูลจริง +  3 byte

6

LONGTEXT

เป็น text ที่ความกว้างเป็นได้สูงสุด 4,294,967,295 ตัวอักษร

ขนาดข้อมูลจริง +  4 byte

7

ENUM

เป็นข้อมูลประเภทระบุเฉพาะค่าที่ต้องการ หรือถ้าไม่มีจะให้เป็นค่า NULL สามารถกำหนดค่าได้ถึง 65,535 ค่า

ตามจำนวนตัวอักษรที่ระบุ

8

SET(‘value1’,’value2’,…)

เป็นข้อมูลประเภทเซท ประกอบด้วยข้อมูลที่ไม่มีค่าหรือมีค่าตามสมาชิกที่กำหนด สามารถมีจำนวนสมาชิกได้ 64 ตัว

 

 

คำศัพท์ในระบบฐานข้อมูลมีดังนี้

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

 

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

 

ความสัมพันธ์(Relationship) หมายถึง ความสัมพันธ์ระหว่างเอนทิตีในระบบฐานข้อมูล เช่น เอนทิตีใบสั่งซื้อมีความสัมพันธ์กับเอนทิตีสินค้า และ เอนทิตีลูกค้า ดังรูป

 

จากรูปแสดงความสัมพันธ์ระหว่างเอนทิตีลูกค้าและเอนทิตีใบสั่งซื้อเป็นความสำพันธ์แบบหนึ่งต่อกลุ่ม(One to Many Relationship) หมายความว่าลูกค้าหนึ่งคนสามารถสั่งซื้อสินค้าได้หลายใบ แอนทิตีสินค้ามีความสัมพันธ์กับเอนทิตีใบสั่งซื้อเป็นความสำพันธ์แบบกลุ่มต่อกลุ่ม(May to Many Relationship) หมายความว่าใบสั่งซื้อหนึ่งใบสามารถมีสินค้าได้หลายชนิด สำหรับสินค้าสามารถอยู่ในใบสั่งซื้อได้หลายใบ และแอททริบิวต์รหัสสินค้ามีความสัมพันธ์กับแอททริบิวต์ชื่อสินค้าเป็นความสัมพันธ์แบบหนึ่งต่อหนึ่ง(One to One Relationship) หมายความว่ารหัสสินค้าหนึ่งเป็นชื่อสินค้าได้ชนิดเดียว

เขตข้อมูล(Field) หมายถึง หน่วยข้อมูลที่ประกอบมาจากอักขระตั้งแต่หนึ่งอักขระขึ้นไปมารวมกัน เช่น หมายเลขประจำตัวประชาชน(PopID) ชื่อ(First Name) นามสกุล(Last Name) 
ระเบียน(Record) หมายถึง หน่วยข้อมูลที่ประกอบด้วย เขตข้อมูล(Field) ตั้งแต่ 1 เขตข้อมูล(Field) ขึ้นไปมารวมกันและมีความสัมพันธ์กัน เช่น ระเบียน(Record) ของตาราง(Table) ครู(Teacher) 1 ระเบียนจะเป็นข้อมูลของคนหนึ่งคนประกอบด้วย เขตข้อมูล(Field) ได้แก่ หมายเลขประจำตัวประชาชน(PopID) ชื่อ(First Name) นามสกุล(Last Name) เป็นต้น
ตาราง(Table) หมายถึง หน่วยข้อมูลที่ประกอบด้วยระเบียน(Record) ตั้งแต่1ระเบียน(Record) ขึ้นไปมารวมกันและมีความสัมพันธ์กัน

 

   ก่อนการออกแบบฐานข้อมูล ควรจัดแบ่งข้อมูลเป็นระบบอย่างเหมาะสม ไม่ซ้ำซ้อน โดยการดำเนินการดังนี้
   1. กำหนดว่าจะต้องมีข้อมูลอะไรบ้างที่เกี่ยวกับ ตาราง(Table)นั้น เช่น ตาราง(Table) ลูกค้า(Costumers) จะต้องมีข้อมูลเกี่ยวกับ ชื่อ สกุล วันเดือนปีเกิด ที่อยู่ หมายเลขโทรศัพท์ ส่วน ตาราง(Table)ใบสั่งซื้อ(Orders) จะต้องมีข้อมูลเกี่ยวกับรหัสสินค้า จำนวน ส่วนลดเป็นต้น
   2. ลดความซ้ำซ้อนของฐานข้อมูลโดยกำหนด เขตข้อมูล(Field) ต่างๆ อย่างถูกต้องเหมาะสม
   3. กำหนความสัมพันธ์ระหว่าง ตาราง(Table)โดยกำหนด คีย์หลัก(Primary Key :PK)และ คีย์นอก(Foreign Key :FK) ขึ้นในตาราง(Table)ทีเกี่ยวข้อง

คีย์หลัก(Primary Key :PK) หมายถึง Field ที่มีข้อมูลไม่ซ้ำกัน เช่น เขตข้อมูล(Field) รหัสลูกค้า ซึ่งจะต้องไม่มีลูกค้าคนใดใช้รหัสซ้ำกัน โดยในหนึ่ง ตาราง(Table) ควรมี คีย์หลัก(Primary Key :PK) เพียง 1 คีย์ และใน คีย์หลัก(Primary Key :PK) จะต้องไม่เป็นค่าว่าง Null

คีย์คู่แข่ง(Candidate Key)หมายถึงเขตข้อมูล(Field)หนึ่งหรือหลายเขตข้อมูลมีคุณสมบัติเป็น คีย์หลัก PK(ไม่ซ้ำ)และไม่ได้ใช้เป็นคีย์หลัก เช่น รหัสสินค้าเป็น คีย์หลัก ส่วนชื่อสินค้าก็ไม่ซ้ำเช่นกันแต่ไม่ได้เป็นคีย์หลักจึงเป็นคีย์คู่แข่ง

คีย์นอก(Foreign Key :FK) หมายถึง เขตข้อมูล(Field) หรือส่วนประกอบของตาราง(Table)หนึ่งซึ่งมีความสัมพันธ์กับ เขตข้อมูล(Field) ใน ตาราง(Table)อื่น ที่เป็นคีย์หลัก(Primary Key :PK) โดยสามารถเชื่อมโยงข้อมูลระหว่างกันได้

 

   4. กำหนดประเภทหรือชนิดข้อมูลของข้อมูลให้เหมาะสมกับแต่ละ เขตข้อมูล(Field)เช่น
เขตข้อมูล(Field) ชื่อลูกค้า ควรเป็นชนิดข้อมูล อักษร(Text) 
เขตข้อมูล(Field)วันสั่งสินค้า ควรเป็นชนิดข้อมูล วันเวลา(Date/Time) หรือ
เขตข้อมูล(Field) เงินเดือน ควรเป็นชนิดข้อมูล ตัวเลขทางการเงิน(Currency)

 


แบบฝึกหัดก่อนเรียน : แบบทดสอบก่อนเรียน เรื่อง Database ฐานข้อมูล
แบบฝึกหัดหลังเรียน : แบบทดสอบก่อนเรียน เรื่อง Database ฐานข้อมูล
เอกสารที่แนบ : เอกสาร เรื่อง Database (ฐานข้อมูล)