โครงสร้างของระบบการจัดการฐานข้อมูล ฟังก์ชั่นย่อย องค์กร DB ทั่วไป

องค์กรทั่วไป DBMS ที่ทันสมัย- โดยปกติแล้วการจัดระเบียบ DBMS ทั่วไปและองค์ประกอบของส่วนประกอบนั้นสอดคล้องกับชุดฟังก์ชันที่เราพิจารณา

ให้เราจำไว้ว่าเราได้ระบุฟังก์ชันหลักต่อไปนี้ของ DBMS: การจัดการข้อมูลใน หน่วยความจำภายนอกการจัดการบัฟเฟอร์ RAM การจัดการการบันทึกธุรกรรมและการกู้คืนฐานข้อมูลหลังจากความล้มเหลวในการบำรุงรักษาภาษาฐานข้อมูล มีเหตุผลในยุคสมัยใหม่ DBMS เชิงสัมพันธ์เราสามารถเน้นส่วนภายในส่วนใหญ่ได้ - แกน DBMS ซึ่งมักเรียกว่า Data Base Engine ซึ่งเป็นคอมไพเลอร์ภาษาฐานข้อมูล ซึ่งโดยทั่วไปคือ SQL ระบบย่อยที่รองรับรันไทม์ และชุดยูทิลิตี้

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

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

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

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

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

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

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

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

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

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

โปรดทราบว่าด้วยมุมมองนี้ ระดับของระบบสัมพันธ์จะสอดคล้องกับระดับของภาษา Ada หรือ APL จ. ลักษณะการนำทางของระบบในยุคแรกๆ และการเข้าถึงข้อมูลระดับบันทึกบังคับให้ผู้ใช้ดำเนินการเพิ่มประสิทธิภาพการเข้าถึงฐานข้อมูลทั้งหมดด้วยตนเอง โดยไม่ต้องรองรับระบบใดๆ ฉ. หลังจากการถือกำเนิดของระบบเชิงสัมพันธ์ ระบบในยุคแรกๆ ส่วนใหญ่ได้รับการติดตั้งอินเทอร์เฟซเชิงสัมพันธ์ อย่างไรก็ตาม ในกรณีส่วนใหญ่ สิ่งนี้ไม่ได้ทำให้พวกเขาเป็นระบบเชิงสัมพันธ์อย่างแท้จริง เนื่องจากยังคงเป็นไปได้ที่จะจัดการข้อมูลในลักษณะที่เป็นธรรมชาติ 3.1. คุณสมบัติหลักของระบบที่อิงตามรายการกลับหัว ในบรรดาตัวแทนที่มีชื่อเสียงและทั่วไปของระบบดังกล่าว ได้แก่ Datacom DB จาก Applied Data Research, Inc. ADR มุ่งเป้าไปที่การใช้งานบนเครื่องทั่วไปจาก IBM และ Adabas จาก Software AG การจัดระเบียบการเข้าถึงข้อมูลตามรายการกลับหัวใช้ใน DBMS เชิงสัมพันธ์สมัยใหม่เกือบทั้งหมด แต่ในระบบเหล่านี้ ผู้ใช้ไม่สามารถเข้าถึงรายการดัชนีกลับหัวได้โดยตรง อย่างไรก็ตามเมื่อเราพิจารณาแล้ว อินเทอร์เฟซภายใน DBMS เชิงสัมพันธ์คุณจะเห็นว่ามันอยู่ใกล้กับส่วนต่อประสานผู้ใช้ของระบบโดยอิงจากรายการกลับหัว 3.1.1. โครงสร้างข้อมูล ฐานข้อมูลที่จัดระเบียบโดยใช้รายการกลับหัวจะคล้ายกับฐานข้อมูลเชิงสัมพันธ์ แต่มีความแตกต่างที่ตารางที่จัดเก็บและเส้นทางในการเข้าถึงนั้นปรากฏแก่ผู้ใช้

ในกรณีนี้ก. แถวของตารางจะถูกเรียงลำดับโดยระบบในลำดับทางกายภาพบางอย่าง ข. สามารถกำหนดลำดับทางกายภาพของแถวของตารางทั้งหมดได้ และจะทำกับฐานข้อมูลทั้งหมด เช่น ใน Datacom DB ค. สำหรับแต่ละตาราง คุณสามารถกำหนดจำนวนคีย์การค้นหาที่สร้างดัชนีได้ตามต้องการ

ระบบจะดูแลรักษาดัชนีเหล่านี้โดยอัตโนมัติ แต่ผู้ใช้จะมองเห็นได้ชัดเจน 3.1.2. การจัดการข้อมูล รองรับตัวดำเนินการสองคลาส: ผู้ดำเนินการที่กำหนดที่อยู่ของบันทึกรวมทั้งผู้ดำเนินการโดยตรง โอเปอเรเตอร์การค้นหาตัวอย่างเช่น ค้นหาบันทึกตารางแรกตามตัวดำเนินการเส้นทางการเข้าถึงบางส่วนที่ค้นหาบันทึกในแง่ของตำแหน่งสัมพันธ์จากบันทึกก่อนหน้าตามเส้นทางการเข้าถึงบางเส้นทาง ตัวดำเนินการบนบันทึกที่ระบุที่อยู่ได้ ชุดตัวดำเนินการทั่วไป ค้นหาก่อน - ค้นหาบันทึกแรกของตาราง T ตามลำดับทางกายภาพส่งคืนที่อยู่ของบันทึก ค้นหาก่อนด้วยคีย์ค้นหา เท่ากับ - ค้นหาบันทึกแรกของตาราง T ด้วยค่าคีย์การค้นหาที่กำหนด ส่งกลับ K ที่อยู่ของบันทึก LOCATE NEXT - ค้นหาบันทึกแรก ถัดไปสำหรับบันทึกที่มีที่อยู่ที่กำหนดในเส้นทางการเข้าถึงที่กำหนด ส่งคืนที่อยู่ของบันทึก ค้นหาถัดไปพร้อมคีย์ค้นหาเท่ากับ - ค้นหา รายการถัดไปตาราง T ตามลำดับเส้นทางการค้นหาด้วยค่าที่กำหนด K จะต้องมีความสอดคล้องกันระหว่างวิธีการสแกนที่ใช้และคีย์ K ส่งคืนที่อยู่ของบันทึก ค้นหาก่อนด้วยคีย์ค้นหาที่มากขึ้น - ค้นหาบันทึกแรกของตาราง T ใน ลำดับของคีย์การค้นหา K ที่มีค่าฟิลด์คีย์มากกว่าค่าที่กำหนด K ส่งคืนที่อยู่บันทึก RETRIVE - เลือกบันทึกจาก ที่อยู่ที่ระบุอัปเดต - อัปเดตบันทึกด้วยที่อยู่ที่ระบุ ลบ - ลบบันทึกด้วยที่อยู่ที่ระบุ ร้านค้า - รวมบันทึกในตารางที่ระบุ การดำเนินการสร้างที่อยู่ของบันทึก 3.1.3. ข้อจำกัดด้านความสมบูรณ์ ไม่มีกฎทั่วไปในการพิจารณาความสมบูรณ์ของฐานข้อมูล

บางระบบรองรับข้อจำกัดเกี่ยวกับค่าเฉพาะของบางฟิลด์ แต่โดยทั่วไปทุกอย่างจะเหลืออยู่ที่แอปพลิเคชันโปรแกรม 3.2. ระบบลำดับชั้น ตัวแทนทั่วไปของระบบการจัดการข้อมูล IMS จาก IBM ที่มีชื่อเสียงและแพร่หลายที่สุด เวอร์ชันแรกปรากฏในปี พ.ศ. 2511 ยังคงรองรับฐานข้อมูลจำนวนมากซึ่งสร้างปัญหาสำคัญกับการเปลี่ยนไปใช้ทั้งสองอย่าง เทคโนโลยีใหม่ดีบี และต่อไป เทคโนโลยีใหม่- 3.2.1. โครงสร้างข้อมูลแบบลำดับชั้น ฐานข้อมูลแบบลำดับชั้นประกอบด้วยชุดลำดับชั้นของแผนผัง แม่นยำยิ่งขึ้น คือชุดลำดับชั้นของอินสแตนซ์หลายรายการของแผนผังชนิดเดียวกัน

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

ตัวอย่างของประเภทแผนผังฐานข้อมูลแบบลำดับชั้น ในที่นี้ Department คือบรรพบุรุษของ Chief and Employees และ Chief and Employees เป็นบุตรของ Department ความสัมพันธ์จะถูกรักษาไว้ระหว่างประเภทเรกคอร์ด

ฐานข้อมูลที่มีสคีมาอาจมีลักษณะดังนี้: เราแสดงอินสแตนซ์หนึ่งของแผนผังทุกอินสแตนซ์ ประเภทนี้ทายาทที่มีประเภทบรรพบุรุษร่วมกันเรียกว่าฝาแฝด

ลำดับการแวะผ่านที่สมบูรณ์ถูกกำหนดไว้สำหรับฐานข้อมูล - จากบนลงล่าง จากซ้ายไปขวา

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

กฎพื้นฐานคือ ไม่มีเด็กคนใดสามารถดำรงอยู่ได้หากไม่มีผู้ปกครอง

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

ตัวอย่างการแสดงฐานข้อมูลข้างต้นอาจเป็นลำดับชั้น 3.3 ระบบเครือข่าย ตัวแทนทั่วไปคือ Integrated Database Management System IDMS จาก Cullinet Software, Inc. ซึ่งออกแบบมาเพื่อใช้กับเครื่อง IBM mainstream ที่ใช้ระบบปฏิบัติการส่วนใหญ่

สถาปัตยกรรมของระบบเป็นไปตามข้อเสนอจากกลุ่มงานฐานข้อมูล DBTG ของการประชุมคณะกรรมการภาษาการเขียนโปรแกรม CODASYL ซึ่งเป็นองค์กรที่รับผิดชอบในการกำหนดภาษาการเขียนโปรแกรม Cobol รายงาน DBTG ได้รับการตีพิมพ์ในปี 1971 และในยุค 70 มีหลายระบบปรากฏขึ้น รวมถึง IDMS 3.3.1. โครงสร้างข้อมูลเครือข่าย แนวทางเครือข่ายในการจัดระเบียบข้อมูลเป็นส่วนขยายของโครงสร้างข้อมูลแบบลำดับชั้น

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

ประเภทความสัมพันธ์ถูกกำหนดไว้สำหรับเรกคอร์ดระดับบนและระดับล่างสองประเภท อินสแตนซ์ประเภทความสัมพันธ์ประกอบด้วยหนึ่งอินสแตนซ์ของประเภทเรกคอร์ดระดับบนและชุดอินสแตนซ์ที่เรียงลำดับของประเภทเรคคอร์ดลูก สำหรับความสัมพันธ์ประเภท L ที่กำหนดกับเรคคอร์ดระดับบนสุดประเภท P และเรคคอร์ดระดับล่างประเภท C จะต้องตรงตามเงื่อนไขสองประการต่อไปนี้ แต่ละอินสแตนซ์ประเภท P คือระดับบนในอินสแตนซ์เดียวของ L เท่านั้น แต่ละอินสแตนซ์ของ C เป็นแบบสืบทอด ในกรณีของ L ไม่เกิน 1 กรณี การก่อตัวของประเภทความสัมพันธ์ไม่มีข้อจำกัดพิเศษ เช่น สถานการณ์ต่อไปนี้เป็นไปได้: ประเภทเรคคอร์ดสืบทอดในลิงค์ L1 ประเภทหนึ่งสามารถเป็นประเภทเรคคอร์ดระดับบนในลิงค์ L2 อีกประเภทหนึ่งได้เช่นเดียวกับในลำดับชั้น ข. ประเภทเรคคอร์ดที่กำหนด P อาจเป็นประเภทเรคคอร์ดบรรพบุรุษในประเภทความสัมพันธ์จำนวนเท่าใดก็ได้ ค. ประเภทเรคคอร์ดที่กำหนด P อาจเป็นประเภทเรคคอร์ดย่อยในประเภทความสัมพันธ์จำนวนเท่าใดก็ได้ ง. อาจมีประเภทลิงก์จำนวนเท่าใดก็ได้ที่มีประเภทเรคคอร์ดบรรพบุรุษเดียวกันและประเภทเรคคอร์ดลูกเดียวกัน และหาก L1 และ L2 เป็นประเภทลิงค์สองประเภทที่มีเรคคอร์ดบรรพบุรุษเดียวกันประเภท P และเรคคอร์ดลูกเดียวกันประเภท C จะเป็นกฎที่ใช้เครือญาติ ถูกสร้างขึ้นใน การเชื่อมต่อที่แตกต่างกันอาจแตกต่างกันไป จ. ประเภทเรกคอร์ด X และ Y สามารถเป็นระดับบนสุดและระดับรองในความสัมพันธ์หนึ่ง และระดับบนสุดและระดับบนในอีกความสัมพันธ์หนึ่ง ฉ. บรรพบุรุษและรายการรองอาจเป็นประเภทเรกคอร์ดเดียวกันได้ ตัวอย่างง่ายๆ ของไดอะแกรมเครือข่ายฐานข้อมูล 3.3.2 การจัดการข้อมูล ชุดปฏิบัติการโดยประมาณอาจเป็นดังนี้ ค้นหาบันทึกเฉพาะในชุดบันทึกที่คล้ายกันของวิศวกร Sidorov ไปจากบรรพบุรุษไปยังผู้สืบทอดคนแรกตามการเชื่อมต่อกับพนักงานคนแรกของแผนก 310 ไปที่ผู้สืบทอดคนถัดไปในการเชื่อมต่อบางส่วนจาก Sidorov ถึง Ivanov ไปจากลูกหลานสู่บรรพบุรุษผ่านการเชื่อมต่อบางอย่าง ค้นหาแผนกของ Sidorov สร้างบันทึกใหม่ ทำลายบันทึก แก้ไขบันทึก รวมในการเชื่อมต่อ ยกเว้นจากการเชื่อมต่อ จัดเรียงใหม่ในการเชื่อมต่ออื่น ฯลฯ 3.3.3. ข้อจำกัดด้านความสมบูรณ์ โดยหลักการแล้ว ไม่จำเป็นต้องรักษาไว้ แต่บางครั้งจำเป็นต้องมี Referential Integrity เช่นเดียวกับใน แบบจำลองลำดับชั้น- 3.4. ข้อดีและข้อเสีย จุดแข็งของ DBMS ยุคแรก พัฒนาเครื่องมือการจัดการข้อมูลในหน่วยความจำภายนอกในระดับต่ำ ความสามารถในการสร้างประสิทธิภาพด้วยตนเอง ระบบการใช้งานความสามารถในการประหยัดหน่วยความจำโดยการแยกวัตถุย่อยในระบบเครือข่าย ข้อเสีย ใช้งานยากเกินไป จริงๆ แล้วต้องใช้ความรู้ในเรื่อง องค์กรทางกายภาพระบบแอปพลิเคชันขึ้นอยู่กับองค์กรนี้ ตรรกะของพวกเขาเต็มไปด้วยรายละเอียดในการจัดการเข้าถึงฐานข้อมูล รากฐานทางทฤษฎี เราเริ่มการศึกษาฐานข้อมูลเชิงสัมพันธ์และระบบการจัดการฐานข้อมูลเชิงสัมพันธ์

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

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

ระบบความสัมพันธ์ไม่ได้แพร่หลายในทันที

แม้ว่าผลลัพธ์ทางทฤษฎีหลักในด้านนี้จะได้รับย้อนกลับไปในช่วงทศวรรษที่ 70 และในเวลาเดียวกันก็มีต้นแบบแรกของ DBMS เชิงสัมพันธ์ปรากฏขึ้น เป็นเวลานานถือว่าเป็นไปไม่ได้เลยที่จะบรรลุการนำระบบดังกล่าวไปใช้อย่างมีประสิทธิผล

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

ข้อเสียที่พบบ่อยอีกประการหนึ่งของฐานข้อมูลเชิงสัมพันธ์คือการไม่สามารถสะท้อนความหมายได้อย่างเพียงพอ สาขาวิชา.

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

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

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

ขั้นแรก ให้เราแสดงความหมายของแนวคิดเหล่านี้โดยใช้ตัวอย่างความสัมพันธ์ของ EMPLOYEES ซึ่งมีข้อมูลเกี่ยวกับพนักงานขององค์กรหนึ่งๆ 4.1.1 ชนิดข้อมูล แนวคิดของชนิดข้อมูลในแบบจำลองข้อมูลเชิงสัมพันธ์นั้นเพียงพอแล้วกับแนวคิดของชนิดข้อมูลในภาษาการเขียนโปรแกรม

โดยทั่วไปแล้ว ฐานข้อมูลเชิงสัมพันธ์สมัยใหม่อนุญาตให้จัดเก็บอักขระ ข้อมูลตัวเลข สตริงบิต ข้อมูลตัวเลขเฉพาะทาง เช่น เงิน ตลอดจนข้อมูลชั่วคราวพิเศษ เช่น วันที่ เวลา ช่วงเวลา แนวทางในการขยายขีดความสามารถของระบบสัมพันธ์กำลังพัฒนาค่อนข้างมาก ระบบของตระกูล Ingres Postgres มีความสามารถที่สอดคล้องกับประเภทข้อมูลเชิงนามธรรม ในตัวอย่างของเรา เรากำลังจัดการกับข้อมูลสามประเภท: สตริงอักขระ จำนวนเต็ม และเงิน 4.1.2. โดเมน แนวคิดของโดเมนมีความเฉพาะเจาะจงกับฐานข้อมูลมากกว่า แม้ว่าจะมีความคล้ายคลึงกับประเภทย่อยในภาษาโปรแกรมบางภาษาก็ตาม

ในรูปแบบทั่วไปส่วนใหญ่ โดเมนถูกกำหนดโดยการระบุประเภทข้อมูลพื้นฐานบางอย่างที่มีองค์ประกอบของโดเมนอยู่ และกำหนดโดยพลการ การแสดงออกทางตรรกะใช้กับองค์ประกอบของประเภทข้อมูล

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

ในตัวอย่างของเรา ค่าของโดเมน Skip Numbers และ Group Numbers เป็นประเภทจำนวนเต็ม แต่เทียบกันไม่ได้ โปรดทราบว่า DBMS เชิงสัมพันธ์ส่วนใหญ่ไม่ได้ใช้แนวคิดของโดเมน แม้ว่า Oracle V.7 จะรองรับแล้วก็ตาม 4.1.3. สคีมาเชิงสัมพันธ์, สคีมาฐานข้อมูล สคีมาเชิงสัมพันธ์เป็นชุดที่มีชื่อคู่ของชื่อแอ็ตทริบิวต์ ชื่อโดเมน หรือชื่อประเภท หากไม่สนับสนุนแนวคิดของโดเมน ระดับหรือความสมบูรณ์ของโครงร่างความสัมพันธ์คือจำนวนเชิงการนับของเซตนี้

ระดับความสัมพันธ์ของพนักงานคือ 4 นั่นคือ 4-ary ถ้าคุณลักษณะทั้งหมดของความสัมพันธ์หนึ่งถูกกำหนดไว้ โดเมนที่แตกต่างกันมันสมเหตุสมผลแล้วที่จะใช้ชื่อของโดเมนที่เกี่ยวข้องเพื่อตั้งชื่อคุณลักษณะ โดยอย่าลืมว่านี่เป็นเพียงวิธีการตั้งชื่อที่สะดวกและไม่ได้ขจัดความแตกต่างระหว่างแนวคิดของโดเมนและคุณลักษณะ สคีมาฐานข้อมูลในแง่โครงสร้างคือชุดของสคีมาความสัมพันธ์ที่มีชื่อ 4.1.4. Tuple, Relation สิ่งทูเพิลที่สอดคล้องกับสคีมาความสัมพันธ์ที่กำหนดคือชุดของชื่อคุณลักษณะ คู่ค่าที่มีการปรากฏหนึ่งครั้งของชื่อคุณลักษณะแต่ละรายการที่เป็นของสคีมาความสัมพันธ์ ค่านี้เป็นค่าโดเมนที่ถูกต้อง ของคุณลักษณะนี้หรือชนิดข้อมูลหากไม่รองรับแนวคิดโดเมน ดังนั้นระดับหรือความสมบูรณ์ของทูเปิลคือ จำนวนองค์ประกอบในนั้นสอดคล้องกับความสมบูรณ์ของโครงร่างความสัมพันธ์ที่เกี่ยวข้อง

พูดง่ายๆคือ tuple คือชุดของค่าที่ระบุชื่อประเภทที่กำหนด ความสัมพันธ์คือชุดของสิ่งอันดับซึ่งสอดคล้องกับสคีมาความสัมพันธ์เดียว

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

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

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

คำศัพท์นี้ใช้กันใน DBMS เชิงสัมพันธ์เชิงพาณิชย์ส่วนใหญ่ ฐานข้อมูลเชิงสัมพันธ์คือชุดของความสัมพันธ์ที่มีชื่อเหมือนกับชื่อของสคีมาความสัมพันธ์ในสคีมาฐานข้อมูล อย่างที่คุณเห็น แนวคิดเชิงโครงสร้างหลักของแบบจำลองข้อมูลเชิงสัมพันธ์ ยกเว้นแนวคิดของโดเมน มีการตีความที่เข้าใจง่ายง่ายมาก แม้ว่าในทฤษฎีของฐานข้อมูลเชิงสัมพันธ์ แนวคิดทั้งหมดจะถูกกำหนดอย่างเป็นทางการและแม่นยำอย่างแน่นอน

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

โครงสร้างหลักของแอปพลิเคชันคือส่วนประกอบต่างๆ ดังที่คุณทราบ พื้นฐานพื้นฐานของเครื่องมือภาพ Delphi คือแนวทางส่วนประกอบ

ประกอบด้วยอะไรบ้าง? Delphi ถูกสร้างขึ้นบนพื้นฐานของคอมไพเลอร์ภาษาเชิงวัตถุ Object Pascal ซึ่งยังคงใช้ภาษาถิ่น Pascal ต่อไป - เทอร์โบปาสคาลและบอร์แลนด์ ปาสคาล เมื่อมีการพัฒนา การใช้งาน Borland Pascal แต่ละครั้งจะมีส่วนขยายไวยากรณ์ใหม่ที่สะท้อนถึงความก้าวหน้าล่าสุดในภาษาการเขียนโปรแกรม

หากเราเข้าใกล้การประเมินขั้นตอนคุณภาพของการพัฒนา Pascal ควรสังเกตสามขั้นตอนเป็นพิเศษโดยมีวัตถุประสงค์เพื่อสนับสนุนแนวคิดของการใช้โค้ดซ้ำ สถาปัตยกรรมแบบโมดูลาร์พร้อมความสามารถในการแยกส่วนต่อประสานและส่วนเชิงพรรณนา เครื่องมือการวางแนวที่มีคุณสมบัติโดยธรรมชาติทั้งหมด - การสืบทอดการห่อหุ้มและความหลากหลาย รองรับ Turbo Pascal 5.5 สำหรับกลไกข้อมูลประเภทรันไทม์ RTTI ช่วยให้คุณได้รับข้อมูลเกี่ยวกับคุณสมบัติพื้นฐานของประเภทวัตถุของคลาสและอินสแตนซ์ของวัตถุโดยใช้เครื่องมือภาษาที่สร้างขึ้นโดยตรง เข้าไปข้างใน ไลบรารีระบบและโครงสร้างการจัดโครงสร้างคำอธิบายคลาส Delphi 1.0 - Object Pascal ผลที่ตามมาของการรองรับ RTTI คือความเป็นไปได้ในการสร้างเครื่องมือพัฒนาแอปพลิเคชันภาพซึ่งก็คือ Delphi

ในระดับหนึ่งของลำดับชั้นการสืบทอดของไลบรารีคลาสพื้นฐานของ Delphi คลาส TPersistent จะปรากฏขึ้น โดยให้ ระดับที่ต้องการนามธรรมของออบเจ็กต์สตรีมอินพุต/เอาท์พุตของอินสแตนซ์คลาส ผู้สืบทอดคือคลาส TComponent ซึ่งกำหนดพฤติกรรมพื้นฐาน ส่วนประกอบเดลฟี VCL Visual Component Library ในขั้นตอนการออกแบบโหมดเวลาออกแบบ

สิ้นสุดการทำงาน -

หัวข้อนี้เป็นของส่วน:

การพัฒนาซอฟต์แวร์สำหรับแผนกการช่วยชีวิตและการดูแลผู้ป่วยหนักทารกแรกเกิดของโรงพยาบาลเมือง N1 ของ Surgut

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

หากคุณต้องการเนื้อหาเพิ่มเติมในหัวข้อนี้ หรือคุณไม่พบสิ่งที่คุณกำลังมองหา เราขอแนะนำให้ใช้การค้นหาในฐานข้อมูลผลงานของเรา:

เราจะทำอย่างไรกับเนื้อหาที่ได้รับ:

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

โดยปกติแล้วการจัดระเบียบ DBMS ทั่วไปและองค์ประกอบของส่วนประกอบนั้นสอดคล้องกับชุดฟังก์ชันที่เราพิจารณา ให้เราจำไว้ว่าเราได้ระบุหน้าที่หลักของ DBMS ดังต่อไปนี้:

  • การจัดการข้อมูลในหน่วยความจำภายนอก
  • การจัดการบัฟเฟอร์ RAM
  • การจัดการธุรกรรม
  • การบันทึกและการกู้คืนฐานข้อมูลหลังจากเกิดความล้มเหลว
  • การรักษาภาษาฐานข้อมูล

ตามตรรกะแล้ว ใน DBMS เชิงสัมพันธ์สมัยใหม่ เราสามารถแยกแยะส่วนภายในส่วนใหญ่ได้ - แกน DBMS (มักเรียกว่า Data Base Engine) คอมไพเลอร์ภาษาฐานข้อมูล (โดยปกติคือ SQL) ระบบย่อยที่รองรับรันไทม์ และชุดยูทิลิตี้ ในบางระบบส่วนต่างๆ เหล่านี้มีความโดดเด่นอย่างชัดเจน ส่วนบางระบบไม่มีความแตกต่างกัน แต่ในทางตรรกะ การแบ่งส่วนดังกล่าวสามารถดำเนินการได้ใน DBMS ทั้งหมด

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

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



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

ตัวอย่าง: System R

เป้าหมายหลักของนักพัฒนา System R มีดังต่อไปนี้:

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

การจัดโครงสร้างของ System R สอดคล้องกับเป้าหมายที่ตั้งไว้ในระหว่างการพัฒนาอย่างสมบูรณ์ ส่วนประกอบโครงสร้างหลักของ System R คือ Relational Storage System (RSS) และคอมไพเลอร์แบบสอบถาม ภาษา SQL- RSS มีอินเทอร์เฟซระดับต่ำพอสมควร แต่เพียงพอสำหรับการนำ SQL ไปใช้เพื่อเข้าถึงฐานข้อมูลที่จัดเก็บไว้ในฐานข้อมูล การซิงโครไนซ์ธุรกรรม การบันทึกการเปลี่ยนแปลง และการกู้คืนความเสียหายของฐานข้อมูลก็เป็นหนึ่งในคุณสมบัติของ RSS เช่นกัน คอมไพเลอร์แบบสอบถามใช้อินเทอร์เฟซ RSS เพื่อเข้าถึงข้อมูลที่หลากหลาย ข้อมูลอ้างอิง(แค็ตตาล็อกของความสัมพันธ์ ดัชนี สิทธิ์การเข้าถึง เงื่อนไขความสมบูรณ์ การดำเนินการตามเงื่อนไข ฯลฯ) และสร้างโปรแกรมการทำงานที่จะดำเนินการในภายหลังโดยใช้อินเทอร์เฟซ RSS ดังนั้น ระบบจึงแบ่งออกเป็นสองระดับโดยธรรมชาติ ได้แก่ ระดับของหน่วยความจำและการจัดการการซิงโครไนซ์ ซึ่งจริงๆ แล้วไม่ได้ขึ้นอยู่กับภาษาคิวรีพื้นฐานของระบบ และระดับภาษา (ระดับ SQL) ซึ่งปัญหาส่วนใหญ่ของ ระบบ R ได้รับการแก้ไขแล้ว โปรดทราบว่าความเป็นอิสระนี้ค่อนข้างมีเงื่อนไข มากกว่าภาษาสัมบูรณ์: ภาษา SQL สามารถถูกแทนที่ด้วยภาษาอื่นได้ แต่ต้องมีความหมายเหมือนกันโดยประมาณ

ฟังก์ชัน DBMS องค์กรทั่วไปของ DBMS

ชื่อพารามิเตอร์ ความหมาย
หัวข้อบทความ: ฟังก์ชัน DBMS องค์กรทั่วไปของ DBMS
รูบริก (หมวดหมู่เฉพาะเรื่อง) การเชื่อมต่อ

แนวคิดของ DBMS ฟังก์ชั่น สถาปัตยกรรมภายใน

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

1. การจัดการข้อมูลในหน่วยความจำภายนอก

2. การจัดการบัฟเฟอร์ RAM

3. การจัดการธุรกรรม

4. การเขียนบันทึก;

5. รองรับภาษาฐานข้อมูล

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

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

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

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

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

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

แนวคิดที่สำคัญของการทำให้เป็นอนุกรมของธุรกรรมและแผนอนุกรมสำหรับการดำเนินการผสมของธุรกรรมยังเกี่ยวข้องกับการจัดการธุรกรรมใน DBMS ที่มีผู้ใช้หลายราย

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

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

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

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

บันทึกนี้เป็นส่วนพิเศษของฐานข้อมูล ซึ่งผู้ใช้ DBMS ไม่สามารถเข้าถึงได้และได้รับการดูแลเป็นพิเศษ (บางครั้งจะมีการเก็บรักษาสำเนาบันทึกสองชุด ซึ่งอยู่ที่ต่างกัน ฟิสิคัลดิสก์) ซึ่งรับบันทึกการเปลี่ยนแปลงทั้งหมดในส่วนหลักของฐานข้อมูล ใน DBMS ที่แตกต่างกัน การเปลี่ยนแปลงฐานข้อมูลจะถูกล็อกออน ระดับที่แตกต่างกัน: บางครั้งรายการบันทึกก็สอดคล้องกับบางรายการ การดำเนินการเชิงตรรกะการเปลี่ยนแปลงฐานข้อมูล (เช่น การดำเนินการลบแถวออกจากตารางฐานข้อมูลเชิงสัมพันธ์) บางครั้งเป็นการดำเนินการภายในขั้นต่ำในการแก้ไขเพจหน่วยความจำภายนอก บางระบบใช้ทั้งสองวิธีพร้อมกัน ในทุกกรณี พวกเขาปฏิบัติตามกลยุทธ์ของการเขียน "เชิงรุก" ลงในบันทึก (ที่เรียกว่าโปรโตคอล Write Ahead Log - WAL) กลยุทธ์นี้โดยพื้นฐานหมายความว่าบันทึกการเปลี่ยนแปลงในออบเจ็กต์ฐานข้อมูลใดๆ จะต้องเข้าสู่หน่วยความจำภายนอกของเจอร์นัลก่อนที่ออบเจ็กต์ที่ถูกเปลี่ยนแปลงจะเข้าสู่หน่วยความจำภายนอกของส่วนหลักของฐานข้อมูล เป็นที่ทราบกันดีว่าหากสังเกตโปรโตคอล WAL อย่างถูกต้องใน DBMS การใช้บันทึกคุณจะสามารถแก้ไขปัญหาการกู้คืนฐานข้อมูลทั้งหมดได้หลังจากเกิดความล้มเหลว

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

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

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

รองรับภาษาฐานข้อมูล- ในการทำงานกับฐานข้อมูลจะใช้ภาษาพิเศษโดยทั่วไปเรียกว่าภาษาฐานข้อมูล DBMS ยุคแรกรองรับหลายภาษาที่เชี่ยวชาญในการทำงานของพวกเขา สามารถแยกแยะได้สองภาษาโดยเฉพาะ - ภาษาคำจำกัดความสคีมาฐานข้อมูล (SDL - ภาษาคำจำกัดความสคีมา) และภาษาการจัดการข้อมูล (DML - ภาษาการจัดการข้อมูล) SDL ทำหน้าที่หลักในการพิจารณา โครงสร้างเชิงตรรกะ DB, แทร.อ. โครงสร้างของฐานข้อมูลตามที่ปรากฏแก่ผู้ใช้ DML มีชุดของตัวดำเนินการจัดการข้อมูล มาตรา.ë โอเปอเรเตอร์ที่อนุญาตให้คุณป้อนข้อมูลลงในฐานข้อมูล ลบ แก้ไข หรือเลือกข้อมูลที่มีอยู่ ลองดูภาษาของ DBMS ยุคแรกโดยละเอียดในการบรรยายครั้งต่อไป

DBMS สมัยใหม่มักจะสนับสนุนภาษาเดียวที่มีเครื่องมือที่จำเป็นทั้งหมดสำหรับการทำงานกับฐานข้อมูล เริ่มตั้งแต่การสร้าง และการให้บริการขั้นพื้นฐาน ส่วนต่อประสานกับผู้ใช้พร้อมฐานข้อมูล ภาษามาตรฐานของ DBMS เชิงสัมพันธ์ที่พบบ่อยที่สุดในปัจจุบันคือ SQL (Structured Query Language) ซึ่งจะกล่าวถึงรายละเอียดเพิ่มเติมในบทที่ 5 ในตอนนี้ เราแสดงรายการเฉพาะฟังก์ชันหลักของ DBMS เชิงสัมพันธ์ที่ได้รับการสนับสนุนในระดับ “ภาษา” (ฟังก์ชัน แทร.สล็อต ที่ได้รับการสนับสนุนเมื่อใช้อินเทอร์เฟซ SQL)

ประการแรก ภาษา SQL จะรวมเครื่องมือของ SDL และ DML, มาตรา. เข้าด้วยกัน ช่วยให้คุณสามารถกำหนดสคีมาฐานข้อมูลเชิงสัมพันธ์และจัดการข้อมูล ในเวลาเดียวกัน การตั้งชื่ออ็อบเจ็กต์ฐานข้อมูล (สำหรับฐานข้อมูลเชิงสัมพันธ์ การตั้งชื่อตารางและคอลัมน์) ได้รับการสนับสนุนในระดับภาษาในแง่ที่ว่าคอมไพเลอร์ SQL จะแปลงชื่ออ็อบเจ็กต์เป็นตัวระบุภายในตามแค็ตตาล็อกบริการที่ได้รับการสนับสนุนเป็นพิเศษ ตาราง ส่วนภายในของ DBMS (เคอร์เนล) ใช้ไม่ได้กับชื่อของตารางและคอลัมน์เลย

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

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

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

ฟังก์ชัน DBMS องค์กรทั่วไปของ DBMS - แนวคิดและประเภท การจำแนกประเภทและคุณสมบัติของหมวดหมู่ "ฟังก์ชัน DBMS องค์กร DBMS ทั่วไป" 2017, 2018.

การจัดระบบ DBMS ทั่วไปและองค์ประกอบของส่วนประกอบต่างๆ สอดคล้องกับหน้าที่หลักของ DBMS

ฐานข้อมูลในฐานะระบบมนุษย์และเครื่องจักรที่ซับซ้อนประกอบด้วยข้อมูลที่เกี่ยวข้องและพึ่งพาซึ่งกันและกันดังต่อไปนี้ ส่วนประกอบ :

1. องค์ประกอบข้อมูล – ฐานข้อมูล คำอธิบายของฐานข้อมูล (สคีมา) ข้อมูลเกี่ยวกับผู้ใช้ ข้อมูลเกี่ยวกับสาขาวิชา และข้อมูลอื่น ๆ

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

2. เครื่องมือซอฟต์แวร์ (รับประกันการโต้ตอบของทุกส่วนของระบบระหว่างการทำงาน) – DBMS, ระบบปฏิบัติการ, แอพพลิเคชั่นซอฟต์แวร์

3. ภาษาหมายถึง (จัดให้มีส่วนติดต่อผู้ใช้กับธนาคารข้อมูล) – ภาษาคำอธิบายข้อมูล ภาษาการจัดการข้อมูล ภาษาการสืบค้น และภาษาอื่นๆ

4. วิธีการทางเทคนิค – คอมพิวเตอร์เมนเฟรม เครื่องมือต่อพ่วงสำหรับป้อนข้อมูลลงในฐานข้อมูล เครื่องมือต่อพ่วงสำหรับแสดงข้อมูลเอาต์พุต และอื่นๆ

5. วิธีการขององค์กรและระเบียบวิธี – คำแนะนำ วัสดุด้านระเบียบวิธีและกฎระเบียบสำหรับผู้ใช้ประเภทต่าง ๆ ที่มีปฏิสัมพันธ์กับธนาคารข้อมูล ผู้ดูแลระบบ นักพัฒนา โปรแกรมเมอร์แอปพลิเคชัน, ผู้ใช้

ตามหลักเหตุผลแล้ว ใน DBMS สมัยใหม่ เราสามารถแยกแยะส่วนภายในได้มากที่สุด - แกนกลาง DBMS (มักเรียกว่า DataBase Engine) คอมไพเลอร์ ภาษาฐานข้อมูล ระบบย่อย การสนับสนุนรันไทม์, ตั้งค่า สาธารณูปโภค - ในบางระบบส่วนต่างๆ เหล่านี้มีความโดดเด่นอย่างชัดเจน ส่วนบางระบบไม่มีความแตกต่างกัน แต่ในทางตรรกะ การแบ่งส่วนดังกล่าวสามารถดำเนินการได้ใน DBMS ทั้งหมด

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

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

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

คำถามที่ 11 กำหนดแนวคิดของการจัดทำดัชนีและการแฮช ตรวจสอบการใช้ดัชนีเพื่อเพิ่มความเร็วในการดึงข้อมูล

DBMS ที่มีอยู่ทั้งหมดมี วิธีให้การเข้าถึงข้อมูลด้วยความเร็วที่เหมาะสมที่สุด โครงสร้างส่วนบนของข้อมูลประเภทนี้เรียกว่า ดัชนีฐานข้อมูล

ดัชนี– โครงสร้างข้อมูลที่ช่วยให้ DBMS ตรวจจับแต่ละบันทึกในไฟล์ได้อย่างรวดเร็ว และลดเวลาที่ใช้ในการดำเนินการค้นหาของผู้ใช้

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

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

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

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

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

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

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

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

ในทางปฏิบัติ มีการใช้ดัชนีหลายระดับตามแผนผังไบนารี

อีกทางเลือกหนึ่งนอกเหนือจากต้นไม้และแนวทางที่นิยมมากขึ้นในการจัดระเบียบดัชนีคือการใช้เทคนิคการแฮช

การแฮช– การคำนวณบันทึกตามค่าคีย์

ข้อดีสองประการ: บีบอัดข้อมูล เข้าถึงได้อย่างรวดเร็วถึงองค์ประกอบ

สำหรับการแฮช งานหลักคือ: 1) การเลือกฟังก์ชันแฮชเพื่อลดจำนวนสถานการณ์ความขัดแย้ง 2) การค้นหาแนวทางแก้ไขสถานการณ์ความขัดแย้ง

กระบวนการแฮชแบ่งออกเป็นสามขั้นตอน: 1) การคำนวณที่อยู่แฮช; 2) การชี้แจงที่อยู่แฮชในกรณี สถานการณ์ความขัดแย้ง- 3) การวางคีย์ในหน่วยความจำ

เมื่อเลือกฟังก์ชันแฮช จำเป็นต้องคำนึงถึง: 1) ความซับซ้อนของการคำนวณ 2) ความสม่ำเสมอของการกระจายข้อมูล 3) ป้องกันการอัดแน่นของค่าสำคัญ

โดยทั่วไปแล้ว วิธีการของ binary tree และ hashing นั้นมีความใกล้ชิดกันมากขึ้น

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

แนวคิดหลักของโมเดลเชิงสัมพันธ์คือการแสดงโครงสร้างข้อมูลตามอำเภอใจเป็นชุดของความสัมพันธ์เชิงสัมพันธ์ - อาร์เรย์สองมิติพิมพ์ "objects-features" ซึ่งก็คือตาราง ตารางจะแสดงประเภทของวัตถุในโลกแห่งความเป็นจริง และแต่ละแถวแสดงถึงวัตถุเฉพาะ

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

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

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

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

คีย์ต่างประเทศ –ฟิลด์ที่มีค่าที่มีลักษณะเฉพาะของเอนทิตีที่ถูกแทนที่ด้วยบันทึกของตารางอื่น ๆ นั่นคือค่าที่ตั้งค่าไว้ คีย์หลัก- ค่าคีย์ต่างประเทศสามารถทำซ้ำได้