Google         youtube            psv            สพม.11

โครงสร้างข้อมูลเรคคอร์ด

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

11,0500.00

24/6 Sukumvit…

27

Chanrng

Wilaiporn

110211

รูปที่  3.2   ตัวอย่างโครงสร้างข้อมูลเรคคอร์ดที่แต่ละเขตข้อมูลมีโครงสร้างข้อมูลต่างกัน

การกำหนดเรคคอร์ด

เรคคอร์ดมีการกำหนดรูปแบบเป็น  ดังนี้

Rec  (Field1,  Field2, . . . ,  FieldN)

โดย  Fieldi  เป็นสมาชิกของเรคคอร์ด  และ  1≤ i ≤ N

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

ตัวอย่างการใช้เรคคอร์ด

สมาชิก ของเรคคอร์ดอาจจะประกอบด้วยโครงสร้างข้อมูลได้หลากหลายรูปแบบ  จึงนำมาใช้กับการเก็บข้อมูลทางธุรกิจ  เช่น  การเก็บข้อมูลพนักงานซึ่งมีข้อมูลประกอบด้วย  รหัส  ชื่อ  หมายเลขโทรศัพท์  และเงินเดือน  ดังในตารางที่  3.2   เป็นตัวอย่างโปรแกรม  Record1.c    ที่รับข้อมูลเข้ามาทางคีย์บอร์ดเก็บไว้ในเรคคอร์ดและดึงออกมาแสดงผลทางจอ ภาพ

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

Struct  Employee   {

Int  ID;

char  Name[80];

char  Phone[80];

float Salary;

};

ภาษา ซีใช้คำ  Struct  หมายถึง  โครงสร้างข้อมูลเรคคอร์ด  ตามด้วยชื่อของโครงสร้างข้อมูล  จากนั้นตามด้วยชื่อสมาชิกแต่ละตัวพร้อมกับกำหนดโครงสร้างข้อมูลให้แต่ละตัว  เมื่อใช้งานต้องประกาศสร้างตัวแปรเรคคอร์ด  emp1  ดังนี้

Struct  Employee  emp1;

เมื่อใดที่ต้องการเก็บข้อมูลหรือดึงข้อมูลมาใช้งานจะเป็นดังนี้

emp1.ID

emp1.Name

emp1.Phone

emp1.Salary

                จากตัวอย่างมีการเขียนฟังก์ชัน  printRecord  เป็นตัวปฏิบัติการของเรคคอร์ด  ทำหน้าที่ในการแสดงผลทางจอภาพเป็นแบบตาราง  เมื่อใดที่มีการประกาศตัวแปรเรคคอร์ดใหม่มาใช้งาน ตัวแปรทุกตัวก็สามารถใช้ตัวปฏิบัติการร่วมกันได้

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

จากตัวอย่าเป็นการกำหนดโครงสร้าง ข้อมูลชื่อใหม่  (Alias)   คือ   Employee   และ   Employees   ที่เป็นพอยน์เตอร์โดยมีลักษณะเป็นโครงสร้างข้อมูลเรคคอร์ด  ดังนี้

typedef struct employee Employee;

typedef struct Employee* Employees;

เมื่อต้องการใช้งานจะต้องขอพื้นที่หน่วยความจำใช้งานให้กับแต่ละเรคคอร์ดในฟังก์ชัน   createEmployee  ดังนี้

Eployees  e  =  malloc ( sizeof (Employees) );

เนื่อง จากการเก็บข้อมูลของเรคคอร์ดจะนำไปไว้ในพื้นที่หน่วยความจำที่ขอไว้  ในการอ้างแต่ละสมาชิกในแบบเดิมที่ใช้เครื่องหมายมหัพภาค  จึงต้องเปลี่ยนมาเป็นเครื่องหมายลูกศร(->)  ดังนี้

emp1 -› ID

emp1 -› Name

emp1 -› Phone

emp1 -› Salary

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s