กลับไปหน้าบทความ

อ่าน 6 นาที

บันทึก (วิทยาการคอมพิวเตอร์)

ใน วิทยาการคอมพิวเตอร์ เร คอร์ด (เรียกอีกอย่างว่า โครงสร้าง , struct , ประเภทที่ผู้ใช้กำหนด (UDT) หรือ ประเภทข้อมูลประกอบ ) คือ โครงสร้างข้อมูล แบบผสม ซึ่งเป็น ชุดของ ฟิลด์...

บันทึก (วิทยาการคอมพิวเตอร์)

ในวิทยาการคอมพิวเตอร์เรคอร์ด (เรียกอีกอย่างว่าโครงสร้าง , struct , ประเภทที่ผู้ใช้กำหนด (UDT)หรือประเภทข้อมูลประกอบ ) คือโครงสร้างข้อมูล แบบผสม ซึ่งเป็นชุดของฟิลด์ซึ่งอาจมีประเภทข้อมูล ที่แตกต่างกัน โดยทั่วไปจะมีจำนวนและลำดับที่แน่นอน[ 1 ]

ตัวอย่างเช่น วันที่อาจถูกจัดเก็บเป็นระเบียนที่มีฟิลด์ปี ที่ เป็นตัวเลข ฟิลด์ เดือนที่แสดงเป็นสตริง และ ฟิลด์ วันในเดือนที่ เป็นตัวเลข ระเบียนวงกลมอาจประกอบด้วยรัศมี ที่เป็นตัวเลข และจุดศูนย์กลางซึ่งเป็นระเบียนจุด ที่มี พิกัดxและy

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

ประเภทเรคอร์ด (Record type ) คือประเภทข้อมูลที่ใช้อธิบายค่าและตัวแปรต่างๆ ภาษาโปรแกรมสมัยใหม่ส่วนใหญ่จะอนุญาตให้โปรแกรมเมอร์กำหนดประเภทเรคอร์ดใหม่ได้ การกำหนดนั้นรวมถึงการระบุประเภทข้อมูลของแต่ละฟิลด์และตัวระบุ (ชื่อหรือป้ายกำกับ) ที่ใช้ในการเข้าถึง ในทฤษฎีประเภท (Type theory ) โดยทั่วไปแล้วจะนิยมใช้ ประเภทผลคูณ (Product type ) (ที่ไม่มีชื่อฟิลด์) เนื่องจากความเรียบง่าย แต่ประเภทเรคอร์ดที่เหมาะสมนั้นได้รับการศึกษาในภาษาต่างๆ เช่นSystem F-subเนื่องจากเรคอร์ดตามทฤษฎีประเภทอาจมี ฟิลด์ ประเภทฟังก์ชันชั้นหนึ่ง (First-class function- typed fields) นอกเหนือจากข้อมูล จึงสามารถแสดงคุณสมบัติหลายอย่างของการเขียนโปรแกรมเชิงวัตถุได้

ศัพท์เฉพาะ

ในบริบทของการจัดเก็บข้อมูล เช่น ในฐานข้อมูลหรือสเปรดชีต เรคอร์ดมักเรียกว่าแถวและแต่ละฟิลด์เรียกว่าคอลัมน์[ 2 ] [ 3 ] [ 4 ] [ 5 ]

ในการเขียนโปรแกรมเชิงวัตถุวัตถุคือระเบียนที่ประกอบด้วยฟิลด์สถานะและเมธอด

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

เรคอร์ดแตกต่างจากอาร์เรย์ตรงที่องค์ประกอบ (ฟิลด์) ของเรคอร์ดถูกกำหนดโดยคำจำกัดความของเรคอร์ด และอาจไม่เหมือนกัน ในขณะที่อาร์เรย์เป็นชุดขององค์ประกอบที่มีประเภทเดียวกัน[ 6 ]

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

ประวัติศาสตร์

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

แนวคิดของบันทึกสามารถสืบย้อนไปถึงตารางและสมุดบัญชี ประเภทต่างๆ ที่ใช้ในการบัญชีมาตั้งแต่สมัยโบราณ แนวคิดสมัยใหม่ของบันทึกในวิทยาศาสตร์คอมพิวเตอร์ ซึ่งมีฟิลด์ประเภทและขนาดที่กำหนดไว้อย่างชัดเจนนั้น แฝงอยู่ในเครื่องคำนวณเชิงกลในศตวรรษที่ 19 เช่นAnalytical Engine ของBabbage [ 7 ] [ 8 ]

บัตรเจาะรู Hollerith (1895)

สื่อที่เครื่องอ่านได้ดั้งเดิมที่ใช้สำหรับข้อมูล (ตรงข้ามกับการควบคุม) คือบัตรเจาะรูที่ใช้สำหรับบันทึกในสำมะโนประชากรของสหรัฐอเมริกาในปี 1890 : บัตรเจาะรูแต่ละใบถือเป็นบันทึกเดียว เปรียบเทียบรายการบันทึกประจำวันจากปี 1880 และบัตรเจาะรูจากปี 1895 บันทึกต่างๆ เป็นที่ยอมรับกันอย่างแพร่หลายในช่วงครึ่งแรกของศตวรรษที่ 20 เมื่อการประมวลผลข้อมูลส่วนใหญ่ทำโดยใช้บัตรเจาะรู โดยทั่วไป บันทึกแต่ละรายการของไฟล์ข้อมูลจะถูกบันทึกไว้ในบัตรเจาะรูหนึ่งใบ โดยมีคอลัมน์เฉพาะที่กำหนดให้กับฟิลด์เฉพาะ โดยทั่วไป บันทึกคือหน่วยที่เล็กที่สุดที่สามารถอ่านได้จากหน่วยเก็บข้อมูลภายนอก (เช่น เครื่องอ่านบัตร เทป หรือดิสก์) เนื้อหาของบันทึกแบบบัตรเจาะรูเดิมเรียกว่า "บันทึกหน่วย" เนื่องจากบัตรเจาะรูมีความยาวเอกสารที่กำหนดไว้ล่วงหน้า[ 9 ]เมื่อระบบจัดเก็บข้อมูลมีความก้าวหน้ามากขึ้นด้วยการใช้ฮาร์ดไดรฟ์และเทปแม่เหล็กบันทึกความยาวแปรผันจึงกลายเป็นมาตรฐาน บันทึกความยาวแปรผันคือบันทึกที่มีขนาดของบันทึกเป็นไบต์โดยประมาณเท่ากับผลรวมของขนาดของฟิลด์ ก่อนการคิดค้นฮาร์ดแวร์จัดเก็บข้อมูลที่ทันสมัยกว่านี้ การทำเช่นนี้เป็นไปไม่ได้ เพราะบัตรเจาะรูทั้งหมดต้องมีความยาวตามที่กำหนดไว้ล่วงหน้าซึ่งคอมพิวเตอร์สามารถอ่านได้ เนื่องจากในขณะนั้นต้องป้อนบัตรเข้าไปในเครื่องโดยตรง

ภาษาเครื่องส่วนใหญ่และภาษาแอสเซมบลี ในยุคแรกๆ ไม่มีไวยากรณ์พิเศษสำหรับเรคอร์ด แต่แนวคิดนี้มีอยู่แล้ว (และถูกนำมาใช้อย่างกว้างขวาง) ผ่านการใช้ รีจิส เตอร์ดัชนีการกำหนดแอดเดรสทางอ้อมและโค้ดที่แก้ไขตัวเองได้คอมพิวเตอร์ยุคแรกๆ บางเครื่อง เช่นIBM 1620มีฮาร์ดแวร์รองรับการกำหนดขอบเขตเรคอร์ดและฟิลด์ และมีคำสั่งพิเศษสำหรับการคัดลอกเรคอร์ดเหล่านั้น

แนวคิดเรื่องระเบียนและฟิลด์เป็นหัวใจสำคัญใน โปรแกรม จัดเรียง ไฟล์ และสร้างตารางข้อมูล ในยุคแรกๆ เช่นโปรแกรมสร้างรายงาน (RPG) ของ IBM

COBOL เป็น ภาษาโปรแกรมแรกที่แพร่หลายซึ่งรองรับประเภทเรคอร์ด [ 10 ]และสิ่งอำนวยความสะดวกในการกำหนดเรคอร์ดนั้นค่อนข้างซับซ้อนในเวลานั้น ภาษานี้อนุญาตให้กำหนดเรคอร์ดซ้อนกันได้ โดยมีฟิลด์ที่เป็นตัวอักษรและตัวเลข จำนวนเต็ม และเศษส่วนที่มีขนาดและความแม่นยำตามต้องการ และฟิลด์ที่จัดรูปแบบค่าใดๆ ที่กำหนดให้กับฟิลด์เหล่านั้นโดยอัตโนมัติ (เช่น การแทรกเครื่องหมายสกุลเงิน จุดทศนิยม และตัวคั่นกลุ่มตัวเลข) แต่ละไฟล์จะเชื่อมโยงกับตัวแปรเรคอร์ดซึ่งข้อมูลจะถูกอ่านหรือเขียนลงไป COBOL ยังมีMOVECORRESPONDINGคำสั่งที่กำหนดฟิลด์ที่สอดคล้องกันของเรคอร์ดสองรายการตามชื่อของเรคอร์ดเหล่านั้น

ภาษา โปรแกรมยุคแรกๆ ที่พัฒนาขึ้นสำหรับการคำนวณเชิงตัวเลข เช่นFORTRAN (จนถึงFORTRAN IV ) และALGOL 60ไม่รองรับประเภทเรคอร์ด แต่เวอร์ชันต่อมาของภาษาเหล่านั้น เช่นFortran 90และALGOL 68ได้เพิ่มประเภทเรคอร์ดเข้ามา ภาษาโปรแกรม Lisp ดั้งเดิม ก็ขาดเรคอร์ดเช่นกัน (ยกเว้น เซลล์ consในตัว) แต่S-expression ของมัน ก็เป็นตัวแทนที่เหมาะสมภาษาโปรแกรม Pascalเป็นหนึ่งในภาษาแรกๆ ที่รวมประเภทเรคอร์ดเข้ากับประเภทพื้นฐานอื่นๆ อย่างสมบูรณ์ในระบบประเภทที่มีความสอดคล้องกันทางตรรกะ ภาษา PL /Iให้เรคอร์ดแบบเดียวกับ COBOL ภาษา Cให้แนวคิดเรื่องเรคอร์ดโดยใช้โครงสร้าง (struct ) ภาษาต่างๆ ส่วนใหญ่ที่ออกแบบหลังจาก Pascal (เช่นAda , ModulaและJava ) ก็รองรับเรคอร์ดเช่นกัน Java ได้แนะนำเรคอร์ดใน Java 17 และC#ได้แนะนำเรคอร์ดใน C# คลาส Records ถูกนำมาใช้ใน Java เพื่อลดความซับซ้อนของคลาสการรวมข้อมูล ลดโค้ดส่วนเกิน ทำให้ฟิลด์ทั้งหมดและ ทุกฟิลด์ สร้างคอนสตรัคเตอร์ที่มีอาร์กิวเมนต์ทั้งหมด เมธอด getter และ getter โดยอัตโนมัติRecords ในJava ทั้งหมดสืบทอดมาจาก Records โดยปริยายfinalprivatebooleanequals()inthashCode()StringtoString()java.lang.Record

แม้ว่าปัจจุบันจะไม่ค่อยมีการใช้เรคอร์ดในบริบทเดิม (เช่น ใช้เพื่อวัตถุประสงค์ในการเก็บข้อมูลเท่านั้น) แต่เรคอร์ดก็มีอิทธิพลต่อ ภาษา การเขียนโปรแกรมเชิงวัตถุและ ระบบจัดการ ฐานข้อมูลเชิงสัมพันธ์ รุ่นใหม่ เนื่องจากเรคอร์ดให้ความเป็นโมดูลาร์มากขึ้นในวิธีการจัดเก็บและจัดการข้อมูล จึงเหมาะสมกว่าในการแสดงแนวคิดที่ซับซ้อนในโลกแห่งความเป็นจริงมากกว่าชนิดข้อมูลพื้นฐานที่มีให้โดยค่าเริ่มต้นในภาษาต่างๆ สิ่งนี้มีอิทธิพลต่อภาษารุ่นหลัง เช่นC++ , Python , JavaScriptและObjective-Cซึ่งตอบสนองความต้องการด้านความเป็นโมดูลาร์ของการเขียนโปรแกรมเช่นเดียวกัน[ 11 ]อ็อบเจ็กต์ในภาษาเหล่านี้โดยพื้นฐานแล้วคือเรคอร์ดที่มีการเพิ่มเมธอดและการสืบทอดซึ่งช่วยให้นักเขียนโปรแกรมสามารถจัดการวิธีการทำงานของข้อมูลแทนที่จะจัดการเฉพาะเนื้อหาของเรคอร์ดเท่านั้น นักเขียนโปรแกรมหลายคนมองว่าเรคอร์ดล้าสมัยแล้วในปัจจุบัน เนื่องจากภาษาเชิงวัตถุมีคุณสมบัติที่เหนือกว่าความสามารถของเรคอร์ดมาก ในทางกลับกัน นักเขียนโปรแกรมหลายคนโต้แย้งว่าค่าใช้จ่ายต่ำและความสามารถในการใช้เรคอร์ดในภาษาแอสเซมบลีทำให้เรคอร์ดยังคงมีความเกี่ยวข้องเมื่อเขียนโปรแกรมด้วยระดับนามธรรม ต่ำ ปัจจุบัน ภาษาโปรแกรมที่ได้รับความนิยมมากที่สุดในดัชนี TIOBEซึ่งเป็นตัวชี้วัดความนิยมของภาษาโปรแกรม ได้รับอิทธิพลจากเรคอร์ดในบางแง่มุม เนื่องจากเป็นภาษาเชิงวัตถุ[ 12 ]ภาษาการสอบถาม เช่นSQLและObject Query Languageก็ได้รับอิทธิพลจากแนวคิดของเรคอร์ดเช่นกัน ภาษาเหล่านี้อนุญาตให้โปรแกรมเมอร์จัดเก็บชุดข้อมูล ซึ่งโดยพื้นฐานแล้วคือเรคอร์ด ไว้ในตาราง[ 13 ]จากนั้นสามารถเรียกใช้ข้อมูลนี้ได้โดยใช้คีย์หลักตารางเองก็เป็นเรคอร์ดเช่นกัน ซึ่งอาจมีคีย์ต่างประเทศ : คีย์ที่อ้างอิงข้อมูลในตารางอื่น

ประเภทบันทึก

การดำเนินงาน

การดำเนินการสำหรับประเภทระเบียนประกอบด้วย:

  • การประกาศประเภทระเบียน รวมถึงตำแหน่ง ประเภท และ (อาจจะ) ชื่อของแต่ละฟิลด์
  • การประกาศเรคอร์ด; ตัวแปรที่กำหนดประเภทเป็นเรคอร์ด
  • การสร้างค่าบันทึก อาจรวมถึงการกำหนดค่าเริ่มต้นของฟิลด์ด้วย
  • อ่านและเขียนค่าฟิลด์บันทึก
  • การเปรียบเทียบข้อมูลสองรายการเพื่อความเท่าเทียมกัน
  • การคำนวณค่าแฮช มาตรฐาน สำหรับระเบียน

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

ในบริบทที่รองรับการแบ่งประเภทย่อยของเรคอร์ด การดำเนินการต่างๆ จะรวมถึงการเพิ่มและการลบฟิลด์ของเรคอร์ด ประเภทเรคอร์ดเฉพาะเจาะจงหมายความว่ามีชุดฟิลด์เฉพาะอยู่ แต่ค่าของประเภทนั้นอาจมีฟิลด์เพิ่มเติมได้ เรคอร์ดที่มีฟิลด์x , yและzจึงจัดอยู่ในประเภทของเรคอร์ดที่มีฟิลด์xและyเช่นเดียวกับเรคอร์ดที่มีฟิลด์x , yและrเหตุผลก็คือ การส่งเรคอร์ด ( x , y , z ) ไปยังฟังก์ชันที่คาดหวังเรคอร์ด ( x , y ) เป็นอาร์กิวเมนต์ควรจะใช้งานได้ เนื่องจากฟังก์ชันนั้นจะพบฟิลด์ทั้งหมดที่ต้องการภายในเรคอร์ด วิธีการต่างๆ ในการใช้งานเรคอร์ดในภาษาโปรแกรมในทางปฏิบัติอาจมีปัญหาในการอนุญาตให้มีความแปรผันเช่นนี้ แต่เรื่องนี้เป็นลักษณะสำคัญของประเภทเรคอร์ดในบริบททางทฤษฎีมากกว่า

การมอบหมายงานและการเปรียบเทียบ

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

บางภาษาอาจอนุญาตให้กำหนดค่าระหว่างเรคอร์ดที่มีชื่อฟิลด์ต่างกัน โดยจับคู่ค่าฟิลด์แต่ละค่ากับตัวแปรฟิลด์ที่สอดคล้องกันตามตำแหน่งภายในเรคอร์ด ตัวอย่างเช่นจำนวนเชิงซ้อนที่มีฟิลด์ชื่อ `n` realและ `n` imagสามารถกำหนดให้กับ ตัวแปรเรคอร์ด จุด 2 มิติที่มีฟิลด์ `n` XและY`n` ได้ ในกรณีนี้ ตัวดำเนินการทั้งสองยังคงต้องมีลำดับประเภทฟิลด์เดียวกัน บางภาษาอาจกำหนดให้ประเภทที่สอดคล้องกันต้องมีขนาดและการเข้ารหัสเดียวกันด้วย เพื่อให้สามารถกำหนดค่าเรคอร์ดทั้งหมดเป็นสตริงบิต ที่ไม่ถูกตีความได้ ภาษาอื่นๆ อาจมีความยืดหยุ่นมากกว่าในเรื่องนี้ และกำหนดเพียงว่าฟิลด์ค่าแต่ละฟิลด์สามารถกำหนดให้กับฟิลด์ตัวแปรที่สอดคล้องกันได้อย่างถูกต้อง ตัวอย่างเช่น ฟิลด์ จำนวนเต็มสั้นสามารถกำหนดให้กับ ฟิลด์ จำนวนเต็มยาวหรือในทางกลับกันได้

ภาษาโปรแกรมอื่นๆ (เช่นCOBOL ) อาจจับคู่ฟิลด์และค่าโดยใช้ชื่อ แทนที่จะใช้ตำแหน่ง

ความเป็นไปได้เหล่านี้ใช้ได้กับการเปรียบเทียบค่าบันทึกสองค่าเพื่อความเท่าเทียมกันเช่นกัน บางภาษาอาจอนุญาตให้เปรียบเทียบลำดับ (' < ' และ ' > ') โดยใช้ลำดับตามพจนานุกรมโดยอิงจากการเปรียบเทียบฟิลด์แต่ละรายการ

PL/Iอนุญาตให้ใช้การกำหนดค่าทั้งสองประเภทข้างต้น และยังอนุญาตให้ใช้การแสดงโครงสร้างเช่น ในa = a+1;กรณีที่ "a" เป็นเรคอร์ด หรือโครงสร้างในศัพท์เฉพาะของ PL/I

การเลือกฟิลด์แบบกระจายของ Algol 68

ใน Algol 68 ถ้าPtsเป็นอาร์เรย์ของเรคอร์ด แต่ละเรคอร์ดมีฟิลด์จำนวนเต็มXและYเราสามารถเขียนเพื่อให้ได้อาร์เรย์ของจำนวนเต็ม ซึ่งประกอบด้วยฟิลด์ขององค์ประกอบทั้งหมดของได้ ดังนั้น คำสั่งและจะมีผลเหมือนกันY of PtsYPtsY of Pts[3] := 7(Y of Pts)[3] := 7

ประโยค "ด้วย" ของปาสคาล

ในภาษา Pascalคำสั่งดังกล่าวwith R do Sจะดำเนินการตามลำดับคำสั่งSราวกับว่าฟิลด์ทั้งหมดของเรคอร์ดRได้รับการประกาศเป็นตัวแปรแล้ว คล้ายกับการเข้าสู่เนมสเปซ ที่แตกต่างกัน ในภาษาเชิงวัตถุ เช่นC#จึงไม่จำเป็นต้องใช้ชื่อเรคอร์ดเป็นคำนำหน้าเพื่อเข้าถึงฟิลด์อีกต่อไป ดังนั้น แทนที่จะเขียน ก็สามารถเขียนได้ดังนี้Pt.X := 5; Pt.Y := Pt.X + 3withPtdobeginX:=5;Y:=X+3end

การแสดงผลในความทรงจำ

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

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

บันทึกที่กำหนดตัวเอง

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

ช่องสำคัญ

โดยเฉพาะอย่างยิ่งในบริบทของการจัดเก็บแบบแถว ระเบียนอาจมี ฟิลด์ คีย์ที่อนุญาตให้จัดทำดัชนีระเบียนของคอลเลกชัน คีย์หลักจะมีเอกลักษณ์เฉพาะตัวตลอดระเบียนที่จัดเก็บทั้งหมด มีคีย์นี้เพียงหนึ่งเดียวเท่านั้น[ 15 ]กล่าวอีกนัยหนึ่งคือ คีย์หลักใดๆ จะต้องไม่มีค่าซ้ำกัน ตัวอย่างเช่น ไฟล์พนักงานอาจมีหมายเลขพนักงาน ชื่อ แผนก และเงินเดือน หมายเลขพนักงานจะมีเอกลักษณ์เฉพาะตัวในองค์กรและจะเป็นคีย์หลัก ขึ้นอยู่กับสื่อการจัดเก็บและการจัดระเบียบไฟล์ หมายเลขพนักงานอาจถูกจัดทำดัชนีซึ่งจะถูกจัดเก็บไว้ในไฟล์แยกต่างหากเพื่อให้การค้นหาเร็วขึ้น รหัสแผนกไม่จำเป็นต้องมีเอกลักษณ์เฉพาะตัว อาจถูกจัดทำดัชนีด้วย ซึ่งในกรณีนี้จะถือว่าเป็นคีย์รองหรือคีย์ทางเลือก [ 16 ] หากไม่ได้จัดทำดัชนี จะต้องสแกนไฟล์พนักงานทั้งหมดเพื่อสร้างรายการพนักงานทั้งหมดในแผนกเฉพาะ คีย์มักถูกเลือกในลักษณะที่ลดโอกาสที่ค่าหลายค่าจะถูกแมปโดยคีย์เดียวให้น้อยที่สุด ตัวอย่างเช่น โดยปกติแล้วช่องข้อมูลเงินเดือนจะไม่ถือว่าสามารถใช้เป็นคีย์ได้ เนื่องจากพนักงานหลายคนมักจะมีเงินเดือนเท่ากัน

ดูเพิ่มเติม

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ บันทึก (วิทยาการคอมพิวเตอร์)

ใน วิทยาการคอมพิวเตอร์ เร คอร์ด (เรียกอีกอย่างว่า โครงสร้าง , struct , ประเภทที่ผู้ใช้กำหนด (UDT) หรือ ประเภทข้อมูลประกอบ ) คือ โครงสร้างข้อมูล แบบผสม ซึ่งเป็น ชุดของ ฟิลด์...

ศัพท์เฉพาะ

ในบริบทของการจัดเก็บข้อมูล เช่น ใน ฐานข้อมูล หรือ สเปรดชีต เร คอร์ดมักเรียกว่า แถว และแต่ละฟิลด์เรียกว่า คอลัมน์ [ 2 ] [ 3 ] [ 4 ] [ 5 ]

ประวัติศาสตร์

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

การดำเนินงาน

การดำเนินการสำหรับประเภทระเบียนประกอบด้วย: