DBMS - คู่มือฉบับย่อ
Database คือการรวบรวมข้อมูลที่เกี่ยวข้องและข้อมูลคือการรวบรวมข้อเท็จจริงและตัวเลขที่สามารถประมวลผลเพื่อสร้างข้อมูล
ข้อมูลส่วนใหญ่แสดงถึงข้อเท็จจริงที่บันทึกได้ ข้อมูลช่วยในการผลิตข้อมูลซึ่งอยู่บนพื้นฐานของข้อเท็จจริง ตัวอย่างเช่นหากเรามีข้อมูลเกี่ยวกับเครื่องหมายที่นักเรียนทุกคนได้รับเราก็สามารถสรุปเกี่ยวกับท็อปเปอร์และเครื่องหมายเฉลี่ยได้
ก database management system จัดเก็บข้อมูลในลักษณะที่ง่ายต่อการเรียกใช้จัดการและจัดทำข้อมูล
ลักษณะเฉพาะ
ตามเนื้อผ้าข้อมูลถูกจัดระเบียบในรูปแบบไฟล์ DBMS เป็นแนวคิดใหม่และการวิจัยทั้งหมดได้ทำขึ้นเพื่อให้เอาชนะข้อบกพร่องในรูปแบบการจัดการข้อมูลแบบดั้งเดิม DBMS ที่ทันสมัยมีคุณสมบัติดังต่อไปนี้ -
Real-world entity- DBMS สมัยใหม่มีความสมจริงมากขึ้นและใช้เอนทิตีในโลกแห่งความเป็นจริงในการออกแบบสถาปัตยกรรม มันใช้พฤติกรรมและคุณสมบัติด้วย ตัวอย่างเช่นฐานข้อมูลของโรงเรียนอาจใช้นักเรียนเป็นเอนทิตีและอายุเป็นแอตทริบิวต์
Relation-based tables- DBMS อนุญาตให้เอนทิตีและความสัมพันธ์ระหว่างกันสร้างตาราง ผู้ใช้สามารถเข้าใจสถาปัตยกรรมของฐานข้อมูลได้เพียงแค่ดูชื่อตาราง
Isolation of data and application- ระบบฐานข้อมูลแตกต่างจากข้อมูลอย่างสิ้นเชิง ฐานข้อมูลเป็นเอนทิตีที่ใช้งานอยู่ในขณะที่ข้อมูลถูกกล่าวว่าเป็นแบบพาสซีฟซึ่งฐานข้อมูลทำงานและจัดระเบียบ DBMS ยังจัดเก็บข้อมูลเมตาซึ่งเป็นข้อมูลเกี่ยวกับข้อมูลเพื่อลดความยุ่งยากในกระบวนการของตนเอง
Less redundancy- DBMS เป็นไปตามกฎของการทำให้เป็นมาตรฐานซึ่งจะแบ่งความสัมพันธ์เมื่อแอตทริบิวต์ใด ๆ มีค่าซ้ำซ้อน นอร์มัลไลเซชันเป็นกระบวนการทางคณิตศาสตร์ที่สมบูรณ์และเป็นวิทยาศาสตร์ที่ช่วยลดความซ้ำซ้อนของข้อมูล
Consistency- ความสอดคล้องคือสถานะที่ทุกความสัมพันธ์ในฐานข้อมูลยังคงสอดคล้องกัน มีวิธีการและเทคนิคที่สามารถตรวจจับความพยายามที่จะออกจากฐานข้อมูลในสถานะที่ไม่สอดคล้องกัน DBMS สามารถให้ความสอดคล้องมากขึ้นเมื่อเทียบกับรูปแบบก่อนหน้าของแอปพลิเคชันจัดเก็บข้อมูลเช่นระบบประมวลผลไฟล์
Query Language- DBMS มาพร้อมกับภาษาแบบสอบถามซึ่งทำให้การดึงและจัดการข้อมูลมีประสิทธิภาพมากขึ้น ผู้ใช้สามารถใช้ตัวเลือกการกรองได้มากและแตกต่างกันตามความจำเป็นในการดึงข้อมูลชุดหนึ่ง ตามเนื้อผ้าไม่สามารถใช้ระบบประมวลผลไฟล์ได้
ACID Properties - DBMS เป็นไปตามแนวคิดของ Aความเป็นทอม Consistency, Iความโดดเดี่ยวและ Dความสามารถในการดูดซึม (โดยปกติจะสั้นลงเป็นกรด) แนวคิดเหล่านี้ใช้กับธุรกรรมซึ่งจัดการข้อมูลในฐานข้อมูล คุณสมบัติของกรดช่วยให้ฐานข้อมูลมีความสมบูรณ์ในสภาพแวดล้อมแบบหลายธุรกรรมและในกรณีที่เกิดความล้มเหลว
Multiuser and Concurrent Access- DBMS รองรับสภาพแวดล้อมผู้ใช้หลายคนและอนุญาตให้เข้าถึงและจัดการข้อมูลแบบขนาน แม้ว่าจะมีข้อ จำกัด ในการทำธุรกรรมเมื่อผู้ใช้พยายามจัดการกับรายการข้อมูลเดียวกัน แต่ผู้ใช้มักจะไม่รู้ตัว
Multiple views- DBMS นำเสนอมุมมองที่หลากหลายสำหรับผู้ใช้ที่แตกต่างกัน ผู้ใช้ที่อยู่ในแผนกขายจะมีมุมมองของฐานข้อมูลที่แตกต่างจากผู้ที่ทำงานในแผนกการผลิต คุณลักษณะนี้ช่วยให้ผู้ใช้มีมุมมองที่เข้มข้นของฐานข้อมูลตามความต้องการของพวกเขา
Security- คุณสมบัติเช่นการดูหลาย ๆ มุมมองมีความปลอดภัยในระดับหนึ่งที่ผู้ใช้ไม่สามารถเข้าถึงข้อมูลของผู้ใช้และแผนกอื่น ๆ DBMS นำเสนอวิธีการในการกำหนดข้อ จำกัด ในขณะที่ป้อนข้อมูลลงในฐานข้อมูลและเรียกคืนข้อมูลเดียวกันในภายหลัง DBMS มีคุณสมบัติการรักษาความปลอดภัยหลายระดับซึ่งช่วยให้ผู้ใช้หลายคนมีมุมมองที่แตกต่างกันด้วยคุณสมบัติที่แตกต่างกัน ตัวอย่างเช่นผู้ใช้ในแผนกการขายไม่สามารถดูข้อมูลที่เป็นของแผนกจัดซื้อ นอกจากนี้ยังสามารถจัดการได้ว่าควรแสดงข้อมูลของฝ่ายขายให้กับผู้ใช้มากแค่ไหน เนื่องจาก DBMS ไม่ได้ถูกบันทึกไว้ในดิสก์เหมือนระบบไฟล์แบบดั้งเดิมจึงเป็นเรื่องยากมากสำหรับผู้ที่ไม่สนใจที่จะทำลายรหัส
ผู้ใช้
DBMS ทั่วไปมีผู้ใช้ที่มีสิทธิ์และสิทธิ์ที่แตกต่างกันซึ่งใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน ผู้ใช้บางรายดึงข้อมูลและบางส่วนสำรองข้อมูล ผู้ใช้ DBMS สามารถแบ่งประเภทได้กว้าง ๆ ดังนี้ -
Administrators- ผู้ดูแลระบบดูแล DBMS และรับผิดชอบในการจัดการฐานข้อมูล พวกเขามีหน้าที่ดูแลการใช้งานและผู้ที่ควรใช้ พวกเขาสร้างโปรไฟล์การเข้าถึงสำหรับผู้ใช้และใช้ข้อ จำกัด เพื่อรักษาการแยกและบังคับใช้ความปลอดภัย ผู้ดูแลระบบยังดูแลทรัพยากร DBMS เช่นสิทธิ์การใช้งานระบบเครื่องมือที่จำเป็นและการบำรุงรักษาซอฟต์แวร์และฮาร์ดแวร์อื่น ๆ ที่เกี่ยวข้อง
Designers- นักออกแบบคือกลุ่มคนที่ทำงานออกแบบในส่วนของฐานข้อมูลจริงๆ พวกเขาคอยจับตาดูข้อมูลอย่างใกล้ชิดว่าควรเก็บข้อมูลใดและอยู่ในรูปแบบใด พวกเขาระบุและออกแบบทั้งชุดของเอนทิตีความสัมพันธ์ข้อ จำกัด และมุมมอง
End Users- ผู้ใช้ปลายทางคือผู้ที่เก็บเกี่ยวประโยชน์จากการมี DBMS อย่างแท้จริง ผู้ใช้สามารถมีตั้งแต่ผู้ชมทั่วไปที่ให้ความสนใจกับบันทึกหรืออัตราตลาดไปจนถึงผู้ใช้ที่มีความซับซ้อนเช่นนักวิเคราะห์ธุรกิจ
การออกแบบ DBMS ขึ้นอยู่กับสถาปัตยกรรม สามารถรวมศูนย์หรือกระจายอำนาจหรือตามลำดับชั้น สถาปัตยกรรมของ DBMS สามารถมองเห็นได้ทั้งแบบชั้นเดียวหรือหลายชั้น สถาปัตยกรรม n-tier แบ่งระบบทั้งหมดออกเป็นส่วนที่เกี่ยวข้องกัน แต่เป็นอิสระn โมดูลซึ่งสามารถแก้ไขแก้ไขเปลี่ยนแปลงหรือเปลี่ยนได้อย่างอิสระ
ในสถาปัตยกรรม 1 ชั้น DBMS เป็นเอนทิตีเดียวที่ผู้ใช้นั่งบน DBMS โดยตรงและใช้งาน การเปลี่ยนแปลงใด ๆ ที่ทำที่นี่จะดำเนินการโดยตรงกับ DBMS เอง ไม่มีเครื่องมือที่มีประโยชน์สำหรับผู้ใช้ปลายทาง นักออกแบบฐานข้อมูลและโปรแกรมเมอร์มักชอบใช้สถาปัตยกรรมชั้นเดียว
หากสถาปัตยกรรมของ DBMS เป็นแบบ 2 ชั้นสถาปัตยกรรมนั้นจะต้องมีแอปพลิเคชันที่สามารถเข้าถึง DBMS ได้ โปรแกรมเมอร์ใช้สถาปัตยกรรม 2 ชั้นซึ่งเข้าถึง DBMS โดยใช้แอปพลิเคชัน ที่นี่ระดับแอปพลิเคชันไม่ขึ้นอยู่กับฐานข้อมูลในแง่ของการดำเนินการการออกแบบและการเขียนโปรแกรม
สถาปัตยกรรม 3 ชั้น
สถาปัตยกรรม 3 ชั้นจะแยกชั้นออกจากกันตามความซับซ้อนของผู้ใช้และวิธีการใช้ข้อมูลที่มีอยู่ในฐานข้อมูล เป็นสถาปัตยกรรมที่ใช้กันอย่างแพร่หลายในการออกแบบ DBMS
Database (Data) Tier- ในระดับนี้ฐานข้อมูลจะอยู่พร้อมกับภาษาประมวลผลการสืบค้น เรายังมีความสัมพันธ์ที่กำหนดข้อมูลและข้อ จำกัด ในระดับนี้
Application (Middle) Tier- ในระดับนี้เป็นที่อยู่ของแอ็พพลิเคชันเซิร์ฟเวอร์และโปรแกรมที่เข้าถึงฐานข้อมูล สำหรับผู้ใช้ระดับแอปพลิเคชันนี้จะนำเสนอมุมมองฐานข้อมูลแบบนามธรรม ผู้ใช้ปลายทางไม่ทราบว่ามีฐานข้อมูลอยู่นอกเหนือจากแอปพลิเคชัน ในอีกด้านหนึ่งระดับฐานข้อมูลจะไม่ทราบถึงผู้ใช้รายอื่นที่อยู่นอกเหนือระดับแอปพลิเคชัน ดังนั้นเลเยอร์แอปพลิเคชันจึงอยู่ตรงกลางและทำหน้าที่เป็นสื่อกลางระหว่างผู้ใช้ปลายทางและฐานข้อมูล
User (Presentation) Tier- ผู้ใช้ปลายทางทำงานในระดับนี้และพวกเขาไม่รู้อะไรเลยเกี่ยวกับการมีอยู่ของฐานข้อมูลนอกเหนือจากเลเยอร์นี้ ในเลเยอร์นี้แอปพลิเคชันสามารถจัดเตรียมฐานข้อมูลได้หลายมุมมอง มุมมองทั้งหมดสร้างขึ้นโดยแอปพลิเคชันที่อยู่ในระดับแอปพลิเคชัน
สถาปัตยกรรมฐานข้อมูลหลายชั้นสามารถปรับเปลี่ยนได้อย่างมากเนื่องจากส่วนประกอบเกือบทั้งหมดเป็นอิสระและสามารถเปลี่ยนแปลงได้อย่างอิสระ
โมเดลข้อมูลกำหนดวิธีการสร้างแบบจำลองโครงสร้างเชิงตรรกะของฐานข้อมูล แบบจำลองข้อมูลเป็นเอนทิตีพื้นฐานในการนำเสนอสิ่งที่เป็นนามธรรมใน DBMS แบบจำลองข้อมูลกำหนดวิธีการเชื่อมต่อข้อมูลถึงกันและวิธีการประมวลผลและจัดเก็บข้อมูลภายในระบบ
แบบจำลองข้อมูลแรกสุดอาจเป็นแบบจำลองข้อมูลแบบแบนซึ่งข้อมูลทั้งหมดที่ใช้จะถูกเก็บไว้ในระนาบเดียวกัน แบบจำลองข้อมูลก่อนหน้านี้ไม่ได้เป็นวิทยาศาสตร์ดังนั้นจึงมีแนวโน้มที่จะมีการทำซ้ำและอัปเดตความผิดปกติมากมาย
แบบจำลองเอนทิตี - ความสัมพันธ์
Entity-Relationship (ER) Model ขึ้นอยู่กับแนวคิดของเอนทิตีในโลกแห่งความเป็นจริงและความสัมพันธ์ระหว่างกัน ในขณะที่กำหนดสถานการณ์ในโลกแห่งความเป็นจริงลงในแบบจำลองฐานข้อมูล ER Model จะสร้างชุดเอนทิตีชุดความสัมพันธ์คุณลักษณะทั่วไปและข้อ จำกัด
ER Model เหมาะที่สุดสำหรับการออกแบบฐานข้อมูลตามแนวคิด
ER Model ขึ้นอยู่กับ -
Entitiesและคุณลักษณะของพวกเขา
Relationships ระหว่างเอนทิตี
แนวคิดเหล่านี้มีคำอธิบายด้านล่าง
Entity - เอนทิตีใน ER Model คือเอนทิตีในโลกแห่งความเป็นจริงที่มีคุณสมบัติที่เรียกว่า attributes. ทุกattribute ถูกกำหนดโดยชุดของค่าที่เรียกว่า domain. ตัวอย่างเช่นในฐานข้อมูลของโรงเรียนนักเรียนถือเป็นเอนทิตี นักเรียนมีคุณลักษณะต่างๆเช่นชื่ออายุชั้นเรียน ฯลฯ
Relationship - เรียกการเชื่อมโยงทางตรรกะระหว่างเอนทิตี relationship. ความสัมพันธ์ถูกแมปกับเอนทิตีในรูปแบบต่างๆ การแมปคาร์ดินัลลิตีกำหนดจำนวนการเชื่อมโยงระหว่างสองเอนทิตี
การทำแผนที่คาร์ดินัลลิตี -
- หนึ่งต่อหนึ่ง
- หนึ่งต่อหลายคน
- หลายต่อหนึ่ง
- หลายต่อหลายคน
แบบจำลองเชิงสัมพันธ์
โมเดลข้อมูลที่ได้รับความนิยมมากที่สุดใน DBMS คือโมเดลเชิงสัมพันธ์ เป็นแบบจำลองทางวิทยาศาสตร์มากกว่าแบบอื่น ๆ โมเดลนี้ใช้ตรรกะเพรดิเคตลำดับที่หนึ่งและกำหนดตารางเป็นไฟล์n-ary relation.
จุดเด่นหลักของรุ่นนี้คือ -
- ข้อมูลจะถูกเก็บไว้ในตารางที่เรียกว่า relations.
- ความสัมพันธ์สามารถทำให้เป็นมาตรฐานได้
- ในความสัมพันธ์ที่เป็นมาตรฐานค่าที่บันทึกไว้คือค่าอะตอม
- แต่ละแถวในความสัมพันธ์มีค่าที่ไม่ซ้ำกัน
- แต่ละคอลัมน์ในความสัมพันธ์มีค่าจากโดเมนเดียวกัน
สคีมาฐานข้อมูล
สคีมาฐานข้อมูลคือโครงสร้างโครงกระดูกที่แสดงถึงมุมมองเชิงตรรกะของฐานข้อมูลทั้งหมด กำหนดวิธีการจัดระเบียบข้อมูลและความสัมพันธ์ระหว่างกันอย่างไร กำหนดข้อ จำกัด ทั้งหมดที่จะนำไปใช้กับข้อมูล
สคีมาฐานข้อมูลกำหนดเอนทิตีและความสัมพันธ์ระหว่างกัน ประกอบด้วยรายละเอียดเชิงพรรณนาของฐานข้อมูลซึ่งสามารถอธิบายได้โดยใช้แผนภาพสคีมา เป็นนักออกแบบฐานข้อมูลที่ออกแบบสคีมาเพื่อช่วยให้โปรแกรมเมอร์เข้าใจฐานข้อมูลและทำให้เป็นประโยชน์
สคีมาฐานข้อมูลสามารถแบ่งออกเป็นสองประเภทอย่างกว้าง ๆ -
Physical Database Schema - สคีมานี้เกี่ยวข้องกับการจัดเก็บข้อมูลจริงและรูปแบบของการจัดเก็บข้อมูลเช่นไฟล์ดัชนี ฯลฯ ซึ่งกำหนดวิธีการจัดเก็บข้อมูลในที่จัดเก็บข้อมูลสำรอง
Logical Database Schema- สคีมานี้กำหนดข้อ จำกัด เชิงตรรกะทั้งหมดที่จำเป็นต้องใช้กับข้อมูลที่จัดเก็บ กำหนดตารางมุมมองและข้อ จำกัด ด้านความสมบูรณ์
อินสแตนซ์ฐานข้อมูล
เป็นสิ่งสำคัญที่เราจะต้องแยกแยะคำศัพท์ทั้งสองนี้ทีละคำ สคีมาฐานข้อมูลเป็นโครงกระดูกของฐานข้อมูล ได้รับการออกแบบเมื่อไม่มีฐานข้อมูลเลย เมื่อฐานข้อมูลทำงานได้แล้วการเปลี่ยนแปลงใด ๆ กับฐานข้อมูลทำได้ยากมาก สคีมาฐานข้อมูลไม่มีข้อมูลหรือข้อมูลใด ๆ
อินสแตนซ์ฐานข้อมูลคือสถานะของฐานข้อมูลปฏิบัติการที่มีข้อมูลในช่วงเวลาใดเวลาหนึ่ง มันมีภาพรวมของฐานข้อมูล อินสแตนซ์ฐานข้อมูลมักจะเปลี่ยนแปลงไปตามเวลา DBMS ช่วยให้มั่นใจได้ว่าอินสแตนซ์ (สถานะ) ทั้งหมดอยู่ในสถานะที่ถูกต้องโดยปฏิบัติตามการตรวจสอบความถูกต้องข้อ จำกัด และเงื่อนไขทั้งหมดที่ผู้ออกแบบฐานข้อมูลกำหนดไว้
หากระบบฐานข้อมูลไม่ได้มีหลายชั้นก็จะยากที่จะทำการเปลี่ยนแปลงใด ๆ ในระบบฐานข้อมูล ระบบฐานข้อมูลได้รับการออกแบบหลายชั้นตามที่เราได้เรียนรู้มาก่อนหน้านี้
ความเป็นอิสระของข้อมูล
โดยปกติระบบฐานข้อมูลจะมีข้อมูลจำนวนมากนอกเหนือจากข้อมูลของผู้ใช้ ตัวอย่างเช่นจะจัดเก็บข้อมูลเกี่ยวกับข้อมูลหรือที่เรียกว่าข้อมูลเมตาเพื่อค้นหาและดึงข้อมูลได้ง่าย ค่อนข้างยากที่จะแก้ไขหรืออัปเดตชุดข้อมูลเมตาเมื่อเก็บไว้ในฐานข้อมูล แต่เมื่อ DBMS ขยายออกไปก็จำเป็นต้องเปลี่ยนแปลงอยู่ตลอดเวลาเพื่อให้เป็นไปตามความต้องการของผู้ใช้ หากข้อมูลทั้งหมดขึ้นอยู่กับข้อมูลนั้นจะกลายเป็นงานที่น่าเบื่อและซับซ้อนอย่างมาก
ข้อมูลเมตาเป็นไปตามสถาปัตยกรรมแบบเลเยอร์ดังนั้นเมื่อเราเปลี่ยนข้อมูลในเลเยอร์หนึ่งข้อมูลนั้นจะไม่ส่งผลกระทบต่อข้อมูลในระดับอื่น ข้อมูลนี้เป็นอิสระ แต่แมปซึ่งกันและกัน
ความเป็นอิสระของข้อมูลเชิงตรรกะ
ข้อมูลเชิงตรรกะคือข้อมูลเกี่ยวกับฐานข้อมูลกล่าวคือเก็บข้อมูลเกี่ยวกับวิธีจัดการข้อมูลภายใน ตัวอย่างเช่นตาราง (ความสัมพันธ์) ที่เก็บไว้ในฐานข้อมูลและข้อ จำกัด ทั้งหมดที่ใช้กับความสัมพันธ์นั้น
ความเป็นอิสระของข้อมูลเชิงตรรกะเป็นกลไกชนิดหนึ่งซึ่งเปิดเสรีตัวเองจากข้อมูลจริงที่เก็บไว้ในดิสก์ หากเราทำการเปลี่ยนแปลงบางอย่างในรูปแบบตารางก็ไม่ควรเปลี่ยนข้อมูลที่อยู่ในดิสก์
ความเป็นอิสระของข้อมูลทางกายภาพ
สกีมาทั้งหมดเป็นแบบตรรกะและข้อมูลจริงจะถูกจัดเก็บในรูปแบบบิตบนดิสก์ ความเป็นอิสระของข้อมูลทางกายภาพคือพลังในการเปลี่ยนแปลงข้อมูลทางกายภาพโดยไม่ส่งผลกระทบต่อสคีมาหรือข้อมูลเชิงตรรกะ
ตัวอย่างเช่นในกรณีที่เราต้องการเปลี่ยนหรืออัพเกรดระบบจัดเก็บข้อมูลเอง - สมมติว่าเราต้องการแทนที่ฮาร์ดดิสด้วย SSD - ไม่ควรมีผลกระทบใด ๆ กับข้อมูลตรรกะหรือสคีมา
แบบจำลอง ER กำหนดมุมมองแนวคิดของฐานข้อมูล ทำงานกับหน่วยงานในโลกแห่งความเป็นจริงและความสัมพันธ์ระหว่างกัน ในระดับมุมมองโมเดล ER ถือเป็นตัวเลือกที่ดีสำหรับการออกแบบฐานข้อมูล
เอนทิตี
เอนทิตีสามารถเป็นวัตถุในโลกแห่งความเป็นจริงไม่ว่าจะเป็นที่มีชีวิตหรือไม่มีชีวิตซึ่งสามารถระบุตัวตนได้ง่าย ตัวอย่างเช่นในฐานข้อมูลของโรงเรียนนักเรียนครูชั้นเรียนและหลักสูตรที่เปิดสอนถือได้ว่าเป็นเอนทิตี เอนทิตีทั้งหมดเหล่านี้มีคุณลักษณะหรือคุณสมบัติบางอย่างที่ทำให้พวกเขามีเอกลักษณ์
ชุดเอนทิตีคือชุดของเอนทิตีประเภทเดียวกัน ชุดเอนทิตีอาจมีเอนทิตีที่มีแอตทริบิวต์แชร์ค่าที่คล้ายกัน ตัวอย่างเช่นชุดนักเรียนอาจมีนักเรียนทั้งหมดของโรงเรียน ในทำนองเดียวกันชุดครูอาจมีครูทั้งหมดของโรงเรียนจากทุกคณะ ชุดเอนทิตีไม่จำเป็นต้องไม่ปะติดปะต่อกัน
คุณลักษณะ
เอนทิตีถูกแสดงโดยคุณสมบัติของมันที่เรียกว่า attributes. แอตทริบิวต์ทั้งหมดมีค่า ตัวอย่างเช่นเอนทิตีนักเรียนอาจมีชื่อชั้นและอายุเป็นแอตทริบิวต์
มีโดเมนหรือช่วงของค่าที่สามารถกำหนดให้กับแอตทริบิวต์ ตัวอย่างเช่นชื่อนักเรียนต้องไม่เป็นค่าตัวเลข มันจะต้องเป็นตัวอักษร อายุของนักเรียนไม่สามารถติดลบได้ ฯลฯ
ประเภทของคุณสมบัติ
Simple attribute- แอตทริบิวต์อย่างง่ายคือค่าอะตอมซึ่งไม่สามารถแบ่งออกได้อีก ตัวอย่างเช่นหมายเลขโทรศัพท์ของนักเรียนคือค่าอะตอม 10 หลัก
Composite attribute- แอตทริบิวต์คอมโพสิตประกอบด้วยแอตทริบิวต์ง่าย ๆ มากกว่าหนึ่งรายการ ตัวอย่างเช่นชื่อเต็มของนักเรียนอาจมี first_name และ last_name
Derived attribute- แอตทริบิวต์ที่ได้รับคือแอตทริบิวต์ที่ไม่มีอยู่ในฐานข้อมูลทางกายภาพ แต่ค่าเหล่านี้ได้มาจากแอตทริบิวต์อื่น ๆ ที่มีอยู่ในฐานข้อมูล ตัวอย่างเช่นไม่ควรบันทึก average_salary ในแผนกลงในฐานข้อมูลโดยตรง แต่จะได้รับมาแทน อีกตัวอย่างหนึ่งอายุอาจได้มาจาก data_of_birth
Single-value attribute- แอตทริบิวต์ค่าเดียวประกอบด้วยค่าเดียว ตัวอย่างเช่น - Social_Security_Number
Multi-value attribute- แอตทริบิวต์หลายค่าอาจมีมากกว่าหนึ่งค่า ตัวอย่างเช่นบุคคลสามารถมีหมายเลขโทรศัพท์ email_address และอื่น ๆ ได้มากกว่าหนึ่งหมายเลข
ประเภทแอตทริบิวต์เหล่านี้สามารถรวมกันได้เช่น -
- แอตทริบิวต์มูลค่าเดียวที่เรียบง่าย
- คุณลักษณะหลายมูลค่าที่เรียบง่าย
- แอตทริบิวต์มูลค่าเดียวแบบผสม
- แอตทริบิวต์หลายค่าแบบผสม
ชุดเอนทิตีและคีย์
คีย์คือแอตทริบิวต์หรือชุดของแอตทริบิวต์ที่ระบุเอนทิตีแบบไม่ซ้ำกันระหว่างชุดเอนทิตี
ตัวอย่างเช่นจำนวน roll_number ของนักเรียนทำให้ระบุตัวตนได้ในหมู่นักเรียน
Super Key - ชุดของแอตทริบิวต์ (อย่างน้อยหนึ่งรายการ) ที่รวมระบุเอนทิตีในชุดเอนทิตี
Candidate Key- ซูเปอร์คีย์ขั้นต่ำเรียกว่าคีย์ตัวเลือก ชุดเอนทิตีอาจมีคีย์ผู้สมัครมากกว่าหนึ่งคีย์
Primary Key - คีย์หลักคือหนึ่งในคีย์ตัวเลือกที่ผู้ออกแบบฐานข้อมูลเลือกเพื่อระบุชุดเอนทิตีโดยไม่ซ้ำกัน
ความสัมพันธ์
การเชื่อมโยงระหว่างเอนทิตีเรียกว่าความสัมพันธ์ ตัวอย่างเช่นพนักงานworks_at แผนกนักเรียน enrollsในหลักสูตร ในที่นี้ Works_at และ Enrolls เรียกว่าความสัมพันธ์
ชุดความสัมพันธ์
ชุดของความสัมพันธ์ประเภทที่คล้ายกันเรียกว่าชุดความสัมพันธ์ เช่นเดียวกับเอนทิตีความสัมพันธ์ก็สามารถมีคุณลักษณะได้เช่นกัน แอตทริบิวต์เหล่านี้เรียกว่าdescriptive attributes.
ระดับความสัมพันธ์
จำนวนของเอนทิตีที่เข้าร่วมในความสัมพันธ์จะกำหนดระดับของความสัมพันธ์
- ไบนารี = องศา 2
- Ternary = ระดับ 3
- n-ary = องศา
การทำแผนที่พระคาร์ดินัล
Cardinality กำหนดจำนวนเอนทิตีในชุดเอนทิตีหนึ่งซึ่งสามารถเชื่อมโยงกับจำนวนเอนทิตีของชุดอื่นผ่านชุดความสัมพันธ์
One-to-one - เอนทิตีหนึ่งจากชุดเอนทิตี A สามารถเชื่อมโยงกับเอนทิตีของเอนทิตีชุด B ได้มากที่สุดหนึ่งรายการและในทางกลับกัน
One-to-many - เอนทิตีหนึ่งจากเอนทิตีชุด A สามารถเชื่อมโยงกับเอนทิตีของเอนทิตีชุด B ได้มากกว่าหนึ่งเอนทิตีอย่างไรก็ตามเอนทิตีจากเอนทิตีเซ็ต B สามารถเชื่อมโยงกับเอนทิตีได้มากที่สุดหนึ่งเอนทิตี
Many-to-one - มากกว่าหนึ่งเอนทิตีจากชุดเอนทิตี A สามารถเชื่อมโยงกับเอนทิตีของเอนทิตีชุด B ได้มากที่สุดหนึ่งรายการอย่างไรก็ตามเอนทิตีจากเอนทิตีชุด B สามารถเชื่อมโยงกับเอนทิตีมากกว่าหนึ่งจากเอนทิตีชุด A
Many-to-many - หนึ่งเอนทิตีจาก A สามารถเชื่อมโยงกับมากกว่าหนึ่งเอนทิตีจาก B และในทางกลับกัน
ตอนนี้ให้เราเรียนรู้วิธีการแสดง ER Model โดยใช้แผนภาพ ER สามารถแสดงวัตถุใด ๆ เช่นเอนทิตีแอตทริบิวต์ของเอนทิตีชุดความสัมพันธ์และแอตทริบิวต์ของชุดความสัมพันธ์ได้ด้วยความช่วยเหลือของแผนภาพ ER
เอนทิตี
เอนทิตีจะแสดงด้วยรูปสี่เหลี่ยม สี่เหลี่ยมถูกตั้งชื่อด้วยชุดเอนทิตีที่แสดง
คุณลักษณะ
แอตทริบิวต์คือคุณสมบัติของเอนทิตี แอตทริบิวต์แสดงโดยใช้จุดไข่ปลา ทุกวงรีแสดงถึงแอตทริบิวต์เดียวและเชื่อมต่อโดยตรงกับเอนทิตี (สี่เหลี่ยมผืนผ้า)
หากแอตทริบิวต์เป็น compositeพวกมันจะถูกแบ่งออกเป็นโครงสร้างเหมือนต้นไม้ จากนั้นทุกโหนดจะเชื่อมต่อกับแอตทริบิวต์ นั่นคือแอตทริบิวต์แบบผสมจะแสดงด้วยจุดไข่ปลาที่เชื่อมต่อกับวงรี
Multivalued แอตทริบิวต์แสดงโดยวงรีคู่
Derived แอตทริบิวต์แสดงโดยวงรีประ
ความสัมพันธ์
ความสัมพันธ์แสดงด้วยกล่องรูปเพชร ชื่อของความสัมพันธ์ถูกเขียนไว้ในกล่องเพชร เอนทิตีทั้งหมด (รูปสี่เหลี่ยม) ที่เข้าร่วมในความสัมพันธ์เชื่อมต่อกันด้วยเส้น
ความสัมพันธ์แบบไบนารีและความสำคัญของหัวใจ
ความสัมพันธ์ที่สองเอนทิตีเข้าร่วมเรียกว่า a binary relationship. Cardinality คือจำนวนอินสแตนซ์ของเอนทิตีจากความสัมพันธ์ที่สามารถเชื่อมโยงกับความสัมพันธ์
One-to-one- เมื่อมีเพียงอินสแตนซ์เดียวของเอนทิตีที่เชื่อมโยงกับความสัมพันธ์ดังกล่าวจะถูกทำเครื่องหมายเป็น '1: 1' ภาพต่อไปนี้สะท้อนให้เห็นว่าควรเชื่อมโยงกับความสัมพันธ์เพียงอินสแตนซ์เดียวของแต่ละเอนทิตี มันแสดงให้เห็นถึงความสัมพันธ์แบบหนึ่งต่อหนึ่ง
One-to-many- เมื่อมากกว่าหนึ่งอินสแตนซ์ของเอนทิตีเชื่อมโยงกับความสัมพันธ์จะถูกทำเครื่องหมายเป็น '1: N' ภาพต่อไปนี้สะท้อนให้เห็นว่าสามารถเชื่อมโยงอินสแตนซ์ของเอนทิตีทางด้านซ้ายเพียงหนึ่งอินสแตนซ์และเอนทิตีทางด้านขวากับความสัมพันธ์ได้มากกว่าหนึ่งอินสแตนซ์ แสดงถึงความสัมพันธ์แบบหนึ่งต่อกลุ่ม
Many-to-one- เมื่อมีการเชื่อมโยงเอนทิตีมากกว่าหนึ่งอินสแตนซ์กับความสัมพันธ์นั้นจะถูกทำเครื่องหมายเป็น 'N: 1' ภาพต่อไปนี้แสดงให้เห็นว่ามีมากกว่าหนึ่งอินสแตนซ์ของเอนทิตีทางด้านซ้ายและมีเพียงหนึ่งอินสแตนซ์ของเอนทิตีทางด้านขวาเท่านั้นที่สามารถเชื่อมโยงกับความสัมพันธ์ มันแสดงถึงความสัมพันธ์แบบกลุ่มต่อหนึ่ง
Many-to-many- ภาพต่อไปนี้แสดงให้เห็นว่าสามารถเชื่อมโยงอินสแตนซ์ของเอนทิตีทางด้านซ้ายมากกว่าหนึ่งอินสแตนซ์และมากกว่าหนึ่งอินสแตนซ์ของเอนทิตีทางด้านขวากับความสัมพันธ์ แสดงถึงความสัมพันธ์แบบกลุ่มต่อกลุ่ม
ข้อ จำกัด ในการเข้าร่วม
Total Participation- แต่ละหน่วยงานมีส่วนเกี่ยวข้องในความสัมพันธ์ การมีส่วนร่วมทั้งหมดแสดงด้วยเส้นคู่
Partial participation- ไม่ใช่ทุกหน่วยงานที่เกี่ยวข้องในความสัมพันธ์ การมีส่วนร่วมบางส่วนแสดงด้วยบรรทัดเดียว
ตอนนี้ให้เราเรียนรู้วิธีการแสดง ER Model โดยใช้แผนภาพ ER สามารถแสดงวัตถุใด ๆ เช่นเอนทิตีแอตทริบิวต์ของเอนทิตีชุดความสัมพันธ์และแอตทริบิวต์ของชุดความสัมพันธ์ได้ด้วยความช่วยเหลือของแผนภาพ ER
เอนทิตี
เอนทิตีจะแสดงด้วยรูปสี่เหลี่ยม สี่เหลี่ยมถูกตั้งชื่อด้วยชุดเอนทิตีที่แสดง
คุณลักษณะ
แอตทริบิวต์คือคุณสมบัติของเอนทิตี แอตทริบิวต์แสดงโดยใช้จุดไข่ปลา ทุกวงรีแสดงถึงแอตทริบิวต์เดียวและเชื่อมต่อโดยตรงกับเอนทิตี (สี่เหลี่ยมผืนผ้า)
หากแอตทริบิวต์เป็น compositeพวกมันจะถูกแบ่งออกเป็นโครงสร้างเหมือนต้นไม้ จากนั้นทุกโหนดจะเชื่อมต่อกับแอตทริบิวต์ นั่นคือแอตทริบิวต์แบบผสมจะแสดงด้วยจุดไข่ปลาที่เชื่อมต่อกับวงรี
Multivalued แอตทริบิวต์แสดงโดยวงรีคู่
Derived แอตทริบิวต์แสดงโดยวงรีประ
ความสัมพันธ์
ความสัมพันธ์แสดงด้วยกล่องรูปเพชร ชื่อของความสัมพันธ์ถูกเขียนไว้ในกล่องเพชร เอนทิตีทั้งหมด (รูปสี่เหลี่ยม) ที่เข้าร่วมในความสัมพันธ์เชื่อมต่อกันด้วยเส้น
ความสัมพันธ์แบบไบนารีและความสำคัญของหัวใจ
ความสัมพันธ์ที่สองเอนทิตีเข้าร่วมเรียกว่า a binary relationship. Cardinality คือจำนวนอินสแตนซ์ของเอนทิตีจากความสัมพันธ์ที่สามารถเชื่อมโยงกับความสัมพันธ์
One-to-one- เมื่อมีเพียงอินสแตนซ์เดียวของเอนทิตีที่เชื่อมโยงกับความสัมพันธ์ดังกล่าวจะถูกทำเครื่องหมายเป็น '1: 1' ภาพต่อไปนี้สะท้อนให้เห็นว่าควรเชื่อมโยงกับความสัมพันธ์เพียงอินสแตนซ์เดียวของแต่ละเอนทิตี มันแสดงให้เห็นถึงความสัมพันธ์แบบหนึ่งต่อหนึ่ง
One-to-many- เมื่อมากกว่าหนึ่งอินสแตนซ์ของเอนทิตีเชื่อมโยงกับความสัมพันธ์จะถูกทำเครื่องหมายเป็น '1: N' ภาพต่อไปนี้สะท้อนให้เห็นว่าสามารถเชื่อมโยงอินสแตนซ์ของเอนทิตีทางด้านซ้ายเพียงหนึ่งอินสแตนซ์และเอนทิตีทางด้านขวากับความสัมพันธ์ได้มากกว่าหนึ่งอินสแตนซ์ แสดงถึงความสัมพันธ์แบบหนึ่งต่อกลุ่ม
Many-to-one- เมื่อมีการเชื่อมโยงเอนทิตีมากกว่าหนึ่งอินสแตนซ์กับความสัมพันธ์นั้นจะถูกทำเครื่องหมายเป็น 'N: 1' ภาพต่อไปนี้แสดงให้เห็นว่ามีมากกว่าหนึ่งอินสแตนซ์ของเอนทิตีทางด้านซ้ายและมีเพียงหนึ่งอินสแตนซ์ของเอนทิตีทางด้านขวาเท่านั้นที่สามารถเชื่อมโยงกับความสัมพันธ์ มันแสดงถึงความสัมพันธ์แบบกลุ่มต่อหนึ่ง
Many-to-many- ภาพต่อไปนี้แสดงให้เห็นว่าสามารถเชื่อมโยงอินสแตนซ์ของเอนทิตีทางด้านซ้ายมากกว่าหนึ่งอินสแตนซ์และมากกว่าหนึ่งอินสแตนซ์ของเอนทิตีทางด้านขวากับความสัมพันธ์ แสดงถึงความสัมพันธ์แบบกลุ่มต่อกลุ่ม
ข้อ จำกัด ในการเข้าร่วม
Total Participation- แต่ละหน่วยงานมีส่วนเกี่ยวข้องในความสัมพันธ์ การมีส่วนร่วมทั้งหมดแสดงด้วยเส้นคู่
Partial participation- ไม่ใช่ทุกหน่วยงานที่เกี่ยวข้องในความสัมพันธ์ การมีส่วนร่วมบางส่วนแสดงด้วยบรรทัดเดียว
ER Model มีอำนาจในการแสดงเอนทิตีฐานข้อมูลในลักษณะลำดับชั้นแนวความคิด เมื่อลำดับชั้นสูงขึ้นจะทำให้มุมมองของเอนทิตีเป็นภาพรวมและเมื่อเราเจาะลึกลงไปในลำดับชั้นจะให้รายละเอียดของทุกเอนทิตีที่รวมอยู่ด้วย
ขึ้นไปในโครงสร้างนี้เรียกว่า generalizationโดยที่เอนทิตีจะถูกรวมเข้าด้วยกันเพื่อแสดงมุมมองที่กว้างขึ้น ตัวอย่างเช่นนักเรียนคนใดคนหนึ่งชื่อ Mira สามารถพูดคุยทั่วไปร่วมกับนักเรียนทุกคนได้ นิติบุคคลจะต้องเป็นนักเรียนและต่อไปนักเรียนก็คือบุคคล ย้อนกลับเรียกว่าspecialization โดยที่คน ๆ หนึ่งเป็นนักเรียนและนักเรียนคนนั้นคือมิร่า
ลักษณะทั่วไป
ดังที่ได้กล่าวไว้ข้างต้นกระบวนการสรุปเอนทิตีโดยที่เอนทิตีทั่วไปมีคุณสมบัติของเอนทิตีทั่วไปทั้งหมดเรียกว่าการวางนัยทั่วไป โดยทั่วไปเอนทิตีจำนวนหนึ่งจะถูกรวมเข้าด้วยกันเป็นเอนทิตีทั่วไปเดียวตามลักษณะที่คล้ายคลึงกัน ตัวอย่างเช่นนกพิราบนกกระจอกบ้านอีกาและนกพิราบสามารถเรียกได้ว่าเป็นนก
ความเชี่ยวชาญ
ความเชี่ยวชาญเป็นสิ่งที่ตรงกันข้ามกับลักษณะทั่วไป ในความเชี่ยวชาญกลุ่มของเอนทิตีจะถูกแบ่งออกเป็นกลุ่มย่อยตามลักษณะเฉพาะ ยกตัวอย่างกลุ่ม "บุคคล" บุคคลมีชื่อวันเดือนปีเกิดเพศ ฯลฯ คุณสมบัติเหล่านี้มีอยู่ทั่วไปในทุกคนมนุษย์ แต่ใน บริษัท สามารถระบุบุคคลได้ว่าเป็นพนักงานนายจ้างลูกค้าหรือผู้ขายโดยขึ้นอยู่กับบทบาทที่พวกเขามีใน บริษัท
ในทำนองเดียวกันในฐานข้อมูลของโรงเรียนบุคคลสามารถมีความเชี่ยวชาญเป็นครูนักเรียนหรือเจ้าหน้าที่ได้โดยพิจารณาจากบทบาทที่พวกเขามีบทบาทในโรงเรียนในฐานะหน่วยงาน
มรดก
เราใช้คุณสมบัติข้างต้นทั้งหมดของ ER-Model เพื่อสร้างคลาสของออบเจ็กต์ในการเขียนโปรแกรมเชิงวัตถุ โดยทั่วไปรายละเอียดของเอนทิตีจะถูกซ่อนจากผู้ใช้ กระบวนการนี้เรียกว่าabstraction.
การสืบทอดเป็นคุณสมบัติที่สำคัญของ Generalization and Specialization อนุญาตให้เอนทิตีระดับล่างสืบทอดคุณลักษณะของเอนทิตีระดับสูงกว่า
ตัวอย่างเช่นแอตทริบิวต์ของคลาสบุคคลเช่นชื่ออายุและเพศสามารถสืบทอดโดยเอนทิตีระดับล่างเช่นนักเรียนหรือครู
Dr Edgar F.Codd หลังจากการวิจัยอย่างกว้างขวางเกี่ยวกับแบบจำลองเชิงสัมพันธ์ของระบบฐานข้อมูลได้มีกฎ 12 ข้อของตัวเขาเองซึ่งตามที่เขากล่าวฐานข้อมูลจะต้องปฏิบัติตามเพื่อให้ถือว่าเป็นฐานข้อมูลเชิงสัมพันธ์ที่แท้จริง
กฎเหล่านี้สามารถใช้กับระบบฐานข้อมูลใด ๆ ที่จัดการข้อมูลที่จัดเก็บโดยใช้ความสามารถเชิงสัมพันธ์เท่านั้น นี่เป็นกฎพื้นฐานซึ่งทำหน้าที่เป็นฐานสำหรับกฎอื่น ๆ ทั้งหมด
กฎข้อที่ 1: กฎข้อมูล
ข้อมูลที่จัดเก็บในฐานข้อมูลอาจเป็นข้อมูลผู้ใช้หรือข้อมูลเมตาต้องเป็นค่าของเซลล์ตารางบางเซลล์ ทุกอย่างในฐานข้อมูลต้องจัดเก็บในรูปแบบตาราง
กฎข้อ 2: กฎการเข้าถึงที่รับประกัน
ทุกองค์ประกอบข้อมูล (ค่า) เดียวได้รับการรับรองว่าสามารถเข้าถึงได้อย่างมีเหตุผลด้วยการรวมกันของชื่อตารางคีย์หลัก (ค่าแถว) และชื่อแอตทริบิวต์ (ค่าคอลัมน์) ไม่สามารถใช้วิธีอื่นเช่นพอยน์เตอร์เพื่อเข้าถึงข้อมูลได้
กฎข้อ 3: การรักษาค่า NULL อย่างเป็นระบบ
ค่า NULL ในฐานข้อมูลต้องได้รับการปฏิบัติอย่างเป็นระบบและสม่ำเสมอ นี่เป็นกฎที่สำคัญมากเนื่องจาก NULL สามารถตีความได้ว่าเป็นสิ่งต่อไปนี้ - ข้อมูลหายไปไม่ทราบข้อมูลหรือไม่มีข้อมูล
กฎข้อ 4: แค็ตตาล็อกออนไลน์ที่ใช้งานอยู่
คำอธิบายโครงสร้างของฐานข้อมูลทั้งหมดต้องถูกเก็บไว้ในแค็ตตาล็อกออนไลน์หรือที่เรียกว่า data dictionaryซึ่งสามารถเข้าถึงได้โดยผู้ใช้ที่ได้รับอนุญาต ผู้ใช้สามารถใช้ภาษาแบบสอบถามเดียวกันเพื่อเข้าถึงแค็ตตาล็อกที่ใช้เพื่อเข้าถึงฐานข้อมูลเอง
กฎข้อที่ 5: กฎภาษาย่อยของข้อมูลที่ครอบคลุม
ฐานข้อมูลสามารถเข้าถึงได้โดยใช้ภาษาที่มีไวยากรณ์เชิงเส้นที่สนับสนุนการกำหนดข้อมูลการจัดการข้อมูลและการดำเนินการจัดการธุรกรรมเท่านั้น ภาษานี้สามารถใช้ได้โดยตรงหรือโดยแอปพลิเคชันบางอย่าง หากฐานข้อมูลอนุญาตให้เข้าถึงข้อมูลโดยไม่ได้รับความช่วยเหลือจากภาษานี้จะถือว่าเป็นการละเมิด
กฎข้อ 6: ดูการอัปเดตกฎ
มุมมองทั้งหมดของฐานข้อมูลซึ่งสามารถอัปเดตได้ในทางทฤษฎีจะต้องได้รับการอัปเดตโดยระบบด้วย
กฎข้อ 7: กฎการแทรกอัปเดตและลบระดับสูง
ฐานข้อมูลต้องรองรับการแทรกการอัพเดตและการลบระดับสูง สิ่งนี้จะต้องไม่ จำกัด เพียงแถวเดียวนั่นคือต้องสนับสนุนการรวมกันการตัดกันและการลบเพื่อให้ได้ชุดของบันทึกข้อมูล
กฎข้อ 8: ความเป็นอิสระของข้อมูลทางกายภาพ
ข้อมูลที่จัดเก็บในฐานข้อมูลต้องไม่ขึ้นกับแอปพลิเคชันที่เข้าถึงฐานข้อมูล การเปลี่ยนแปลงโครงสร้างทางกายภาพของฐานข้อมูลจะต้องไม่มีผลกระทบต่อวิธีการเข้าถึงข้อมูลโดยแอปพลิเคชันภายนอก
กฎข้อที่ 9: ความเป็นอิสระของข้อมูลเชิงตรรกะ
ข้อมูลตรรกะในฐานข้อมูลต้องไม่ขึ้นอยู่กับมุมมองของผู้ใช้ (แอปพลิเคชัน) การเปลี่ยนแปลงข้อมูลเชิงตรรกะใด ๆ จะต้องไม่ส่งผลกระทบต่อแอปพลิเคชันที่ใช้งาน ตัวอย่างเช่นหากมีการรวมตารางสองตารางหรือหนึ่งตารางถูกแบ่งออกเป็นสองตารางที่แตกต่างกันไม่ควรมีผลกระทบหรือเปลี่ยนแปลงแอปพลิเคชันของผู้ใช้ นี่เป็นหนึ่งในกฎที่ยากที่สุดในการนำไปใช้
กฎข้อที่ 10: ความเป็นอิสระอย่างสมบูรณ์
ฐานข้อมูลต้องไม่ขึ้นกับแอปพลิเคชันที่ใช้ ข้อ จำกัด ด้านความสมบูรณ์ทั้งหมดสามารถแก้ไขได้อย่างอิสระโดยไม่จำเป็นต้องมีการเปลี่ยนแปลงใด ๆ ในแอปพลิเคชัน กฎนี้ทำให้ฐานข้อมูลเป็นอิสระจากแอปพลิเคชันส่วนหน้าและส่วนต่อประสาน
กฎข้อ 11: ความเป็นอิสระในการจัดจำหน่าย
ผู้ใช้ปลายทางต้องไม่สามารถมองเห็นได้ว่าข้อมูลถูกกระจายไปตามสถานที่ต่างๆ ผู้ใช้ควรได้รับความรู้สึกว่าข้อมูลอยู่ที่ไซต์เดียวเท่านั้น กฎนี้ถือได้ว่าเป็นรากฐานของระบบฐานข้อมูลแบบกระจาย
กฎข้อ 12: กฎการไม่โค่นล้ม
หากระบบมีอินเทอร์เฟซที่ให้การเข้าถึงเรกคอร์ดระดับต่ำอินเทอร์เฟซจะต้องไม่สามารถล้มล้างระบบและข้ามข้อ จำกัด ด้านความปลอดภัยและความสมบูรณ์ได้
แบบจำลองข้อมูลเชิงสัมพันธ์เป็นแบบจำลองข้อมูลปฐมภูมิซึ่งใช้กันอย่างแพร่หลายทั่วโลกในการจัดเก็บและประมวลผลข้อมูล โมเดลนี้เรียบง่ายและมีคุณสมบัติและความสามารถทั้งหมดที่จำเป็นในการประมวลผลข้อมูลด้วยประสิทธิภาพการจัดเก็บข้อมูล
แนวคิด
Tables- ในรูปแบบข้อมูลเชิงสัมพันธ์ความสัมพันธ์จะถูกบันทึกในรูปแบบของตาราง รูปแบบนี้เก็บความสัมพันธ์ระหว่างเอนทิตี ตารางมีแถวและคอลัมน์โดยแถวแสดงถึงระเบียนและคอลัมน์แสดงถึงแอตทริบิวต์
Tuple - แถวเดียวของตารางซึ่งมีระเบียนเดียวสำหรับความสัมพันธ์นั้นเรียกว่าทูเปิล
Relation instance- ชุดสิ่งทอที่ จำกัด ในระบบฐานข้อมูลเชิงสัมพันธ์แสดงถึงอินสแตนซ์ความสัมพันธ์ อินสแตนซ์ความสัมพันธ์ไม่มีสิ่งที่ซ้ำกัน
Relation schema - สคีมาความสัมพันธ์อธิบายถึงชื่อความสัมพันธ์ (ชื่อตาราง) แอตทริบิวต์และชื่อของพวกเขา
Relation key - แต่ละแถวมีแอตทริบิวต์อย่างน้อยหนึ่งรายการเรียกว่าคีย์ความสัมพันธ์ซึ่งสามารถระบุแถวในความสัมพันธ์ (ตาราง) โดยไม่ซ้ำกัน
Attribute domain - ทุกแอตทริบิวต์มีขอบเขตค่าที่กำหนดไว้ล่วงหน้าซึ่งเรียกว่าโดเมนแอตทริบิวต์
ข้อ จำกัด
ทุกความสัมพันธ์มีเงื่อนไขบางอย่างที่ต้องถือไว้เพื่อให้เป็นความสัมพันธ์ที่ถูกต้อง เงื่อนไขเหล่านี้เรียกว่าRelational Integrity Constraints. มีข้อ จำกัด ด้านความสมบูรณ์หลักสามประการ -
- ข้อ จำกัด ที่สำคัญ
- ข้อ จำกัด ของโดเมน
- ข้อ จำกัด ด้านความสมบูรณ์ของการอ้างอิง
ข้อ จำกัด ที่สำคัญ
ต้องมีแอตทริบิวต์ย่อยขั้นต่ำอย่างน้อยหนึ่งรายการในความสัมพันธ์ซึ่งสามารถระบุทูเพิลได้โดยไม่ซ้ำกัน เรียกว่าแอตทริบิวต์ย่อยขั้นต่ำนี้keyสำหรับความสัมพันธ์นั้น หากมีชุดย่อยน้อยที่สุดมากกว่าหนึ่งชุดจะเรียกสิ่งเหล่านี้candidate keys.
ข้อ จำกัด สำคัญบังคับว่า -
ในความสัมพันธ์กับคีย์แอ็ตทริบิวต์ไม่มีทูเพิลสองตัวที่มีค่าเหมือนกันสำหรับแอ็ตทริบิวต์คีย์
คีย์แอ็ตทริบิวต์ต้องไม่มีค่า NULL
ข้อ จำกัด ที่สำคัญเรียกอีกอย่างว่าข้อ จำกัด ของเอนทิตี
ข้อ จำกัด ของโดเมน
แอตทริบิวต์มีค่าเฉพาะในสถานการณ์จริง ตัวอย่างเช่นอายุสามารถเป็นจำนวนเต็มบวกเท่านั้น มีการพยายามใช้ข้อ จำกัด เดียวกันกับคุณลักษณะของความสัมพันธ์ ทุกแอตทริบิวต์มีค่าช่วงที่เฉพาะเจาะจง ตัวอย่างเช่นอายุต้องไม่น้อยกว่าศูนย์และหมายเลขโทรศัพท์ต้องไม่มีตัวเลขนอก 0-9
ข้อ จำกัด ด้านความสมบูรณ์ของการอ้างอิง
ข้อ จำกัด ด้านความสมบูรณ์ของการอ้างอิงทำงานบนแนวคิดของ Foreign Keys คีย์ต่างประเทศเป็นแอตทริบิวต์หลักของความสัมพันธ์ที่สามารถอ้างถึงในความสัมพันธ์อื่น ๆ
ข้อ จำกัด ด้านความสมบูรณ์ของการอ้างอิงระบุว่าหากความสัมพันธ์อ้างถึงคุณลักษณะหลักของความสัมพันธ์ที่แตกต่างกันหรือเหมือนกันองค์ประกอบหลักนั้นจะต้องมีอยู่
ระบบฐานข้อมูลเชิงสัมพันธ์คาดว่าจะมีภาษาแบบสอบถามที่สามารถช่วยผู้ใช้ในการสืบค้นอินสแตนซ์ฐานข้อมูล ภาษาแบบสอบถามมีสองประเภท ได้แก่ พีชคณิตเชิงสัมพันธ์และแคลคูลัสเชิงสัมพันธ์
พีชคณิตเชิงสัมพันธ์
พีชคณิตเชิงสัมพันธ์เป็นภาษาแบบสอบถามขั้นตอนซึ่งใช้อินสแตนซ์ของความสัมพันธ์เป็นอินพุตและให้อินสแตนซ์ของความสัมพันธ์เป็นเอาต์พุต ใช้ตัวดำเนินการเพื่อดำเนินการสืบค้น ตัวดำเนินการสามารถเป็นได้unary หรือ binary. พวกเขายอมรับความสัมพันธ์เป็นอินพุตและผลตอบแทนเป็นผลลัพธ์ พีชคณิตเชิงสัมพันธ์จะดำเนินการแบบวนซ้ำบนความสัมพันธ์และผลลัพธ์ระดับกลางถือเป็นความสัมพันธ์ด้วย
การดำเนินการพื้นฐานของพีชคณิตเชิงสัมพันธ์มีดังนี้ -
- Select
- Project
- Union
- ตั้งค่าที่แตกต่างกัน
- ผลิตภัณฑ์คาร์ทีเซียน
- Rename
เราจะพูดถึงการดำเนินการทั้งหมดนี้ในหัวข้อต่อไปนี้
เลือกการทำงาน (σ)
เลือกสิ่งที่เป็นไปตามเพรดิเคตที่กำหนดจากความสัมพันธ์
Notation- σ p (r)
ที่ไหน σ หมายถึงเพรดิเคตการเลือกและ rหมายถึงความสัมพันธ์ pคือสูตรลอจิกบุพบทซึ่งอาจใช้ตัวเชื่อมต่อเช่นand, or, และ not. คำศัพท์เหล่านี้อาจใช้ตัวดำเนินการเชิงสัมพันธ์เช่น - =, ≠, ≥, <,>, ≤
For example -
σsubject="database"(Books)
Output - เลือก tuples จากหนังสือที่หัวเรื่องคือ 'ฐานข้อมูล'
σsubject="database" and price="450"(Books)
Output - เลือก tuples จากหนังสือที่หัวเรื่องคือ 'ฐานข้อมูล' และ 'price' คือ 450
σsubject="database" and price < "450" or year > "2010"(Books)
Output - เลือก tuples จากหนังสือที่หัวเรื่องคือ 'ฐานข้อมูล' และ 'ราคา' คือ 450 หรือหนังสือที่ตีพิมพ์หลังปี 2010
การดำเนินโครงการ (∏)
มันโครงการคอลัมน์ที่ตรงตามเพรดิเคตที่กำหนด
สัญกรณ์ - ∏ A 1 , A 2 , A n (r)
โดยที่ A 1 , A 2 , A nคือชื่อแอตทริบิวต์ของความสัมพันธ์r.
แถวที่ซ้ำกันจะถูกกำจัดโดยอัตโนมัติเนื่องจากความสัมพันธ์เป็นชุด
For example -
∏subject, author (Books)
เลือกและโครงการคอลัมน์ที่มีชื่อเป็นหัวเรื่องและผู้แต่งจากหนังสือความสัมพันธ์
การดำเนินการของสหภาพ (∪)
ทำการรวมไบนารีระหว่างสองความสัมพันธ์ที่กำหนดและถูกกำหนดให้เป็น -
r ∪ s = { t | t ∈ r or t ∈ s}
Notation - r U s
ที่ไหน r และ s เป็นทั้งความสัมพันธ์ฐานข้อมูลหรือชุดผลลัพธ์ความสัมพันธ์ (ความสัมพันธ์ชั่วคราว)
เพื่อให้การดำเนินการของสหภาพมีผลบังคับใช้ต้องมีเงื่อนไขต่อไปนี้ -
- rและ s ต้องมีแอตทริบิวต์จำนวนเท่ากัน
- โดเมนแอตทริบิวต์ต้องเข้ากันได้
- สิ่งที่ซ้ำกันจะถูกกำจัดโดยอัตโนมัติ
∏ author (Books) ∪ ∏ author (Articles)
Output - ฉายชื่อผู้แต่งที่เขียนหนังสือหรือบทความหรือทั้งสองอย่าง
ตั้งค่าความแตกต่าง (-)
ผลลัพธ์ของการดำเนินการตั้งค่าความแตกต่างคือทูเปิลซึ่งมีอยู่ในความสัมพันธ์เดียว แต่ไม่อยู่ในความสัมพันธ์ที่สอง
Notation - r - s
ค้นหาสิ่งที่มีอยู่ทั้งหมดที่มีอยู่ r แต่ไม่เข้า s.
∏ author (Books) − ∏ author (Articles)
Output - ระบุชื่อผู้แต่งที่เขียนหนังสือ แต่ไม่ใช่บทความ
ผลิตภัณฑ์คาร์ทีเซียน (Χ)
รวมข้อมูลของสองความสัมพันธ์ที่แตกต่างกันเป็นหนึ่งเดียว
Notation - rΧs
ที่ไหน r และ s เป็นความสัมพันธ์และผลลัพธ์ของพวกเขาจะถูกกำหนดเป็น -
r Χ s = {qt | q ∈ r และ t ∈ s}
∏ author = 'tutorialspoint'(Books Χ Articles)
Output - ให้ความสัมพันธ์ซึ่งแสดงหนังสือและบทความทั้งหมดที่เขียนโดย tutorialspoint
เปลี่ยนชื่อการดำเนินการ (ρ)
ผลลัพธ์ของพีชคณิตเชิงสัมพันธ์ยังมีความสัมพันธ์ แต่ไม่มีชื่อใด ๆ การดำเนินการเปลี่ยนชื่อช่วยให้เราสามารถเปลี่ยนชื่อความสัมพันธ์ของเอาต์พุตได้ การดำเนินการ 'เปลี่ยนชื่อ' แสดงด้วยอักษรกรีกตัวเล็กrho ρ .
Notation- ρ x (E)
ที่ผลลัพธ์ของการแสดงออก E ถูกบันทึกด้วยชื่อของ x.
การดำเนินการเพิ่มเติมคือ -
- กำหนดจุดตัด
- Assignment
- เข้าร่วมตามธรรมชาติ
แคลคูลัสเชิงสัมพันธ์
ตรงกันข้ามกับพีชคณิตเชิงสัมพันธ์แคลคูลัสเชิงสัมพันธ์เป็นภาษาแบบสอบถามที่ไม่ใช่ขั้นตอนกล่าวคือจะบอกว่าต้องทำอะไร แต่ไม่เคยอธิบายถึงวิธีการทำ
แคลคูลัสเชิงสัมพันธ์มีอยู่สองรูปแบบ -
แคลคูลัสเชิงสัมพันธ์ทูเพิล (TRC)
การกรองช่วงตัวแปรเหนือสิ่งทอ
Notation- {T | เงื่อนไข}
ส่งคืนสิ่งทอทั้งหมด T ที่เป็นไปตามเงื่อนไข
For example -
{ T.name | Author(T) AND T.article = 'database' }
Output - ส่งคืนสิ่งที่มี 'ชื่อ' จากผู้เขียนที่เขียนบทความเกี่ยวกับ 'ฐานข้อมูล'
TRC สามารถหาปริมาณได้ เราสามารถใช้ Existential (∃) และ Universal Quantifiers (∀)
For example -
{ R| ∃T ∈ Authors(T.article='database' AND R.name=T.name)}
Output - ข้อความค้นหาข้างต้นจะให้ผลลัพธ์เช่นเดียวกับคำค้นหาก่อนหน้า
แคลคูลัสเชิงสัมพันธ์ของโดเมน (DRC)
ใน DRC ตัวแปรการกรองใช้โดเมนของแอตทริบิวต์แทนค่าทูเพิลทั้งหมด (ดังที่ทำใน TRC ที่กล่าวถึงข้างต้น)
Notation -
{a 1เป็น2เป็น3 ... เป็นn | P (ก1เป็น2เป็น3 ... เป็นn )}
โดยที่ a1, a2 คือแอตทริบิวต์และ P ย่อมาจากสูตรที่สร้างโดยคุณลักษณะภายใน
For example -
{< article, page, subject > |
∈ TutorialsPoint ∧ subject = 'database'}
Output - ให้บทความหน้าและหัวเรื่องจากความสัมพันธ์ TutorialsPoint โดยที่หัวเรื่องเป็นฐานข้อมูล
เช่นเดียวกับ TRC DRC สามารถเขียนโดยใช้ตัวระบุอัตถิภาวนิยมและสากล DRC ยังเกี่ยวข้องกับตัวดำเนินการเชิงสัมพันธ์
พลังการแสดงออกของแคลคูลัส Tuple Relation และ Domain Relation Calculus เทียบเท่ากับ Relational Algebra
ER Model เมื่อสร้างแนวความคิดเป็นแผนภาพจะให้ภาพรวมที่ดีของความสัมพันธ์ของเอนทิตีซึ่งง่ายต่อการเข้าใจ แผนภาพ ER สามารถแมปกับสกีมาเชิงสัมพันธ์ได้นั่นคือเป็นไปได้ที่จะสร้างสคีมาเชิงสัมพันธ์โดยใช้แผนภาพ ER เราไม่สามารถนำเข้าข้อ จำกัด ER ทั้งหมดไปยังโมเดลเชิงสัมพันธ์ แต่สามารถสร้างสคีมาโดยประมาณได้
มีกระบวนการและอัลกอริทึมหลายอย่างที่พร้อมใช้งานในการแปลง ER Diagrams เป็น Relational Schema บางส่วนเป็นแบบอัตโนมัติและบางส่วนเป็นแบบแมนนวล เราอาจเน้นที่เนื้อหาแผนภาพการแมปไปที่พื้นฐานเชิงสัมพันธ์
แผนภาพ ER ส่วนใหญ่ประกอบด้วย -
- เอนทิตีและแอตทริบิวต์
- ความสัมพันธ์ซึ่งเป็นการเชื่อมโยงระหว่างเอนทิตี
เอนทิตีการแมป
เอนทิตีเป็นวัตถุในโลกแห่งความเป็นจริงที่มีคุณลักษณะบางอย่าง
กระบวนการทำแผนที่ (อัลกอริทึม)
- สร้างตารางสำหรับแต่ละเอนทิตี
- แอตทริบิวต์ของเอนทิตีควรกลายเป็นเขตข้อมูลของตารางที่มีชนิดข้อมูลตามลำดับ
- ประกาศคีย์หลัก
การทำแผนที่ความสัมพันธ์
ความสัมพันธ์คือการเชื่อมโยงระหว่างเอนทิตี
กระบวนการทำแผนที่
- สร้างตารางสำหรับความสัมพันธ์
- เพิ่มคีย์หลักของเอนทิตีที่เข้าร่วมทั้งหมดเป็นฟิลด์ของตารางด้วยประเภทข้อมูลที่เกี่ยวข้อง
- หากความสัมพันธ์มีแอตทริบิวต์ใด ๆ ให้เพิ่มแต่ละแอตทริบิวต์เป็นเขตข้อมูลของตาราง
- ประกาศคีย์หลักซึ่งประกอบด้วยคีย์หลักทั้งหมดของเอนทิตีที่เข้าร่วม
- ประกาศข้อ จำกัด คีย์ต่างประเทศทั้งหมด
การแมปชุดเอนทิตีที่อ่อนแอ
ชุดเอนทิตีที่อ่อนแอคือชุดที่ไม่มีคีย์หลักที่เกี่ยวข้อง
กระบวนการทำแผนที่
- สร้างตารางสำหรับชุดเอนทิตีที่อ่อนแอ
- เพิ่มแอตทริบิวต์ทั้งหมดในตารางเป็นฟิลด์
- เพิ่มคีย์หลักของการระบุชุดเอนทิตี
- ประกาศข้อ จำกัด คีย์ต่างประเทศทั้งหมด
การแมปเอนทิตีตามลำดับชั้น
ER specialization หรือ generalization มาในรูปแบบของชุดเอนทิตีแบบลำดับชั้น
กระบวนการทำแผนที่
สร้างตารางสำหรับเอนทิตีระดับสูงกว่าทั้งหมด
สร้างตารางสำหรับเอนทิตีระดับล่าง
เพิ่มคีย์หลักของเอนทิตีระดับสูงกว่าในตารางของเอนทิตีระดับล่าง
ในตารางระดับล่างให้เพิ่มแอตทริบิวต์อื่น ๆ ทั้งหมดของเอนทิตีระดับล่าง
ประกาศคีย์หลักของตารางระดับที่สูงขึ้นและคีย์หลักสำหรับตารางระดับล่าง
ประกาศข้อ จำกัด ของคีย์ต่างประเทศ
SQL เป็นภาษาโปรแกรมสำหรับฐานข้อมูลเชิงสัมพันธ์ ได้รับการออกแบบโดยใช้พีชคณิตเชิงสัมพันธ์และแคลคูลัสเชิงสัมพันธ์ทูเพิล SQL มาเป็นแพ็คเกจที่มีการกระจาย RDBMS ที่สำคัญทั้งหมด
SQL ประกอบด้วยทั้งนิยามข้อมูลและภาษาจัดการข้อมูล การใช้คุณสมบัตินิยามข้อมูลของ SQL เราสามารถออกแบบและแก้ไขสคีมาฐานข้อมูลได้ในขณะที่คุณสมบัติการจัดการข้อมูลอนุญาตให้ SQL จัดเก็บและดึงข้อมูลจากฐานข้อมูล
ภาษานิยามข้อมูล
SQL ใช้ชุดคำสั่งต่อไปนี้เพื่อกำหนดสกีมาฐานข้อมูล -
สร้าง
สร้างฐานข้อมูลตารางและมุมมองใหม่จาก RDBMS
For example -
Create database tutorialspoint;
Create table article;
Create view for_students;
ดรอป
วางคำสั่งมุมมองตารางและฐานข้อมูลจาก RDBMS
For example-
Drop object_type object_name;
Drop database tutorialspoint;
Drop table article;
Drop view for_students;
แก้ไข
แก้ไขสกีมาฐานข้อมูล
Alter object_type object_name parameters;
For example-
Alter table article add subject varchar;
คำสั่งนี้เพิ่มแอตทริบิวต์ในความสัมพันธ์ article ด้วยชื่อ subject ประเภทสตริง
ภาษาการจัดการข้อมูล
SQL มีภาษาจัดการข้อมูล (DML) DML แก้ไขอินสแตนซ์ฐานข้อมูลโดยการแทรกอัปเดตและลบข้อมูล DML รับผิดชอบการแก้ไขข้อมูลทุกรูปแบบในฐานข้อมูล SQL มีชุดคำสั่งต่อไปนี้ในส่วน DML -
- SELECT/FROM/WHERE
- ใส่ลงใน / ค่านิยม
- UPDATE/SET/WHERE
- ลบจาก / ที่ไหน
โครงสร้างพื้นฐานเหล่านี้ช่วยให้โปรแกรมเมอร์และผู้ใช้ฐานข้อมูลสามารถป้อนข้อมูลและข้อมูลลงในฐานข้อมูลและดึงข้อมูลได้อย่างมีประสิทธิภาพโดยใช้ตัวเลือกตัวกรองจำนวนมาก
เลือก / จาก / ที่ไหน
SELECT- นี่เป็นหนึ่งในคำสั่งเคียวรีพื้นฐานของ SQL มันคล้ายกับการดำเนินการฉายภาพของพีชคณิตเชิงสัมพันธ์ จะเลือกแอตทริบิวต์ตามเงื่อนไขที่อธิบายโดย WHERE clause
FROM- ประโยคนี้ใช้ชื่อความสัมพันธ์เป็นอาร์กิวเมนต์ที่จะเลือก / คาดการณ์แอตทริบิวต์ ในกรณีที่มีการตั้งชื่อความสัมพันธ์มากกว่าหนึ่งชื่อประโยคนี้จะสอดคล้องกับผลิตภัณฑ์คาร์ทีเซียน
WHERE - ประโยคนี้กำหนดเพรดิเคตหรือเงื่อนไขซึ่งจะต้องตรงกันเพื่อที่จะมีคุณสมบัติตามคุณสมบัติที่จะคาดการณ์
For example -
Select author_name
From book_author
Where age > 50;
คำสั่งนี้จะให้ชื่อผู้เขียนจากรีเลชัน book_author ซึ่งมีอายุมากกว่า 50 ปี
ใส่ลงใน / ค่านิยม
คำสั่งนี้ใช้สำหรับการแทรกค่าลงในแถวของตาราง (ความสัมพันธ์)
Syntax-
INSERT INTO table (column1 [, column2, column3 ... ]) VALUES (value1 [, value2, value3 ... ])
หรือ
INSERT INTO table VALUES (value1, [value2, ... ])
For example -
INSERT INTO tutorialspoint (Author, Subject) VALUES ("anonymous", "computers");
อัปเดต / ตั้งค่า / ที่ไหน
คำสั่งนี้ใช้สำหรับอัปเดตหรือแก้ไขค่าของคอลัมน์ในตาราง (ความสัมพันธ์)
Syntax -
UPDATE table_name SET column_name = value [, column_name = value ...] [WHERE condition]
For example -
UPDATE tutorialspoint SET Author="webmaster" WHERE Author="anonymous";
ลบ / จาก / ที่ไหน
คำสั่งนี้ใช้สำหรับการลบหนึ่งแถวขึ้นไปจากตาราง (ความสัมพันธ์)
Syntax -
DELETE FROM table_name [WHERE condition];
For example -
DELETE FROM tutorialspoints
WHERE Author="unknown";
การพึ่งพาการทำงาน
การพึ่งพาฟังก์ชัน (FD) คือชุดของข้อ จำกัด ระหว่างสองคุณลักษณะในความสัมพันธ์ การพึ่งพาการทำงานบอกว่าหากทูเปิลสองตัวมีค่าเดียวกันสำหรับแอตทริบิวต์ A1, A2, ... , An ดังนั้นสองสิ่งเหล่านี้จะต้องมีค่าเดียวกันสำหรับแอตทริบิวต์ B1, B2, ... , Bn
การพึ่งพาการทำงานจะแสดงด้วยเครื่องหมายลูกศร (→) นั่นคือ X → Y โดยที่ X กำหนดฟังก์ชัน Y แอตทริบิวต์ด้านซ้ายมือจะกำหนดค่าของแอตทริบิวต์ทางด้านขวามือ
สัจพจน์ของอาร์มสตรอง
ถ้า F เป็นชุดของการพึ่งพาการทำงานการปิด F ซึ่งแสดงเป็น F +คือชุดของการพึ่งพาการทำงานทั้งหมดที่มีเหตุผลโดยนัยของความจริงของ F Armstrong เป็นชุดของกฎที่เมื่อใช้ซ้ำ ๆ จะสร้างการปิดการอ้างอิงการทำงาน .
Reflexive rule - ถ้าอัลฟ่าเป็นชุดของแอตทริบิวต์และเบต้า is_subset_of อัลฟาอัลฟ่าจะถือเบต้า
Augmentation rule- ถ้า a → b ถือและ y เป็นชุดแอตทริบิวต์ดังนั้น ay →โดยถือด้วย นั่นคือการเพิ่มแอตทริบิวต์ในการอ้างอิงไม่เปลี่ยนการอ้างอิงพื้นฐาน
Transitivity rule- เหมือนกับกฎสกรรมกริยาในพีชคณิตถ้า a → b ถือและ b → c ถือแล้ว a → c ก็จะถือด้วย a → b เรียกว่าเป็นฟังก์ชันที่กำหนด b
การพึ่งพาการทำงานเล็กน้อย
Trivial- หากการพึ่งพาการทำงาน (FD) X → Y ถือโดยที่ Y เป็นส่วนย่อยของ X จะเรียกว่า FD เล็กน้อย FDs เล็กน้อยถือเสมอ
Non-trivial - หาก FD X → Y ถือโดยที่ Y ไม่ใช่ส่วนย่อยของ X จะเรียกว่า FD ที่ไม่สำคัญ
Completely non-trivial - ถ้า FD X → Y ถือโดยที่ x ตัดกัน Y = Φจะกล่าวว่าเป็น FD ที่ไม่สำคัญเลย
Normalization
หากการออกแบบฐานข้อมูลไม่สมบูรณ์แบบอาจมีความผิดปกติซึ่งเป็นเหมือนฝันร้ายสำหรับผู้ดูแลระบบฐานข้อมูล การจัดการฐานข้อมูลที่มีความผิดปกตินั้นเป็นไปไม่ได้เลย
Update anomalies- หากรายการข้อมูลกระจัดกระจายและไม่เชื่อมโยงกันอย่างถูกต้องอาจทำให้เกิดสถานการณ์แปลก ๆ ตัวอย่างเช่นเมื่อเราพยายามอัปเดตรายการข้อมูลหนึ่งรายการที่มีสำเนาอยู่กระจัดกระจายไปตามที่ต่างๆหลาย ๆ อินสแตนซ์จะได้รับการอัปเดตอย่างถูกต้องในขณะที่อีกสองสามรายการจะเหลือเพียงค่าเก่า อินสแตนซ์ดังกล่าวออกจากฐานข้อมูลในสถานะที่ไม่สอดคล้องกัน
Deletion anomalies - เราพยายามลบบันทึก แต่บางส่วนถูกลบทิ้งเนื่องจากความไม่รู้ข้อมูลจะถูกบันทึกไว้ที่อื่นด้วย
Insert anomalies - เราพยายามแทรกข้อมูลในบันทึกที่ไม่มีอยู่เลย
Normalization เป็นวิธีการลบความผิดปกติเหล่านี้และทำให้ฐานข้อมูลอยู่ในสถานะที่สอดคล้องกัน
รูปแบบปกติแรก
First Normal Form ถูกกำหนดไว้ในนิยามของความสัมพันธ์ (ตาราง) เอง กฎนี้กำหนดว่าแอตทริบิวต์ทั้งหมดในความสัมพันธ์ต้องมีโดเมนอะตอม ค่าในโดเมนอะตอมเป็นหน่วยที่แบ่งแยกไม่ได้
เราจัดเรียงความสัมพันธ์ใหม่ (ตาราง) ดังต่อไปนี้เพื่อแปลงเป็นรูปแบบปกติแรก
แต่ละแอตทริบิวต์ต้องมีเพียงค่าเดียวจากโดเมนที่กำหนดไว้ล่วงหน้า
แบบฟอร์มปกติที่สอง
ก่อนที่เราจะเรียนรู้เกี่ยวกับรูปแบบปกติที่สองเราต้องเข้าใจสิ่งต่อไปนี้ -
Prime attribute - แอตทริบิวต์ซึ่งเป็นส่วนหนึ่งของคีย์ตัวเลือกเรียกว่าแอตทริบิวต์หลัก
Non-prime attribute - แอตทริบิวต์ซึ่งไม่ได้เป็นส่วนหนึ่งของไพรม์คีย์ถูกกล่าวว่าเป็นแอตทริบิวต์ที่ไม่ใช่ไพรม์
หากเราทำตามรูปแบบปกติที่สองแอตทริบิวต์ที่ไม่ใช่ไพรม์ทุกรายการควรทำงานได้อย่างสมบูรณ์โดยขึ้นอยู่กับแอตทริบิวต์คีย์หลัก นั่นคือถ้า X → A ถือก็ไม่ควรมีส่วนย่อยที่เหมาะสม Y ของ X ซึ่ง Y → A ก็ถือเป็นจริงเช่นกัน
เราเห็นที่นี่ในความสัมพันธ์ Student_Project ที่แอตทริบิวต์สำคัญหลักคือ Stu_ID และ Proj_ID ตามกฎแล้วแอตทริบิวต์ที่ไม่ใช่คีย์เช่น Stu_Name และ Proj_Name ต้องขึ้นอยู่กับทั้งสองอย่างและไม่ขึ้นอยู่กับแอตทริบิวต์คีย์เฉพาะใด ๆ แต่เราพบว่า Stu_Name สามารถระบุได้โดย Stu_ID และ Proj_Name สามารถระบุได้ด้วย Proj_ID โดยอิสระ นี้เรียกว่าpartial dependencyซึ่งไม่ได้รับอนุญาตใน Second Normal Form
เราทำลายความสัมพันธ์เป็นสองส่วนดังที่แสดงในภาพด้านบน ดังนั้นจึงไม่มีการพึ่งพาบางส่วน
แบบฟอร์มปกติที่สาม
สำหรับความสัมพันธ์ที่จะอยู่ในรูปแบบปกติที่สามจะต้องอยู่ในรูปแบบปกติที่สองและสิ่งต่อไปนี้ต้องเป็นไปตาม -
- ไม่มีแอตทริบิวต์ non-prime ที่ขึ้นอยู่กับคุณสมบัติของคีย์ไพรม์
- สำหรับการพึ่งพาฟังก์ชันที่ไม่สำคัญใด ๆ X → A จากนั้น -
-
X เป็นซูเปอร์คีย์หรือ
- A คือคุณลักษณะเฉพาะ
เราพบว่าในความสัมพันธ์ Student_detail ข้างต้น Stu_ID เป็นคีย์และแอตทริบิวต์คีย์หลักเท่านั้น เราพบว่า Stu_ID สามารถระบุเมืองได้เช่นเดียวกับ Zip เอง ทั้ง Zip ไม่ใช่ซูเปอร์คีย์หรือซิตี้เป็นคุณสมบัติหลัก นอกจากนี้ Stu_ID → Zip → City จึงมีอยู่transitive dependency.
เพื่อนำความสัมพันธ์นี้ไปสู่รูปแบบปกติที่สามเราแบ่งความสัมพันธ์ออกเป็นสองความสัมพันธ์ดังนี้ -
แบบฟอร์มปกติ Boyce-Codd
Boyce-Codd Normal Form (BCNF) เป็นส่วนขยายของ Third Normal Form ในเงื่อนไขที่เข้มงวด BCNF ระบุว่า -
- สำหรับการพึ่งพาฟังก์ชันที่ไม่สำคัญใด ๆ X → A, X จะต้องเป็นซุปเปอร์คีย์
ในภาพด้านบน Stu_ID คือซูเปอร์คีย์ในรีเลชัน Student_Detail และ Zip คือซูเปอร์คีย์ในความสัมพันธ์ ZipCodes ดังนั้น,
Stu_ID → Stu_Name, Zip
และ
Zip →เมือง
ซึ่งยืนยันว่าความสัมพันธ์ทั้งสองอยู่ใน BCNF
เราเข้าใจถึงประโยชน์ของการใช้ผลิตภัณฑ์คาร์ทีเซียนของความสัมพันธ์สองแบบซึ่งทำให้เรามีสิ่งที่เป็นไปได้ทั้งหมดที่จับคู่กัน แต่อาจเป็นไปไม่ได้สำหรับเราในบางกรณีที่จะใช้ผลิตภัณฑ์คาร์ทีเซียนที่เราพบกับความสัมพันธ์อันยิ่งใหญ่กับสิ่งทูปเปิลหลายพันรายการที่มีคุณลักษณะจำนวนมาก
Joinคือการผสมผสานระหว่างผลิตภัณฑ์คาร์ทีเซียนตามด้วยกระบวนการคัดเลือก การดำเนินการเข้าร่วมจะจับคู่สิ่งสองสิ่งจากความสัมพันธ์ที่แตกต่างกันถ้าเป็นไปตามเงื่อนไขการเข้าร่วมที่กำหนดเท่านั้น
เราจะอธิบายสั้น ๆ เกี่ยวกับการเข้าร่วมประเภทต่างๆในส่วนต่อไปนี้
Theta (θ) เข้าร่วม
การเข้าร่วม Theta จะรวมสิ่งที่ได้จากความสัมพันธ์ที่แตกต่างกันหากพวกเขาเป็นไปตามเงื่อนไขของ theta เงื่อนไขการเข้าร่วมแสดงโดยสัญลักษณ์θ.
สัญกรณ์
R1 ⋈θ R2
R1 และ R2 เป็นความสัมพันธ์ที่มีแอตทริบิวต์ (A1, A2, .. , An) และ (B1, B2, .. , Bn) ซึ่งแอตทริบิวต์นั้นไม่มีอะไรเหมือนกันนั่นคือ R1 ∩ R2 = Φ
Theta join สามารถใช้ตัวดำเนินการเปรียบเทียบได้ทุกชนิด
นักศึกษา SID ชื่อ มาตรฐาน 101 อเล็กซ์ 10 102 มาเรีย 11 วิชา คลาส เรื่อง 10 คณิตศาสตร์ 10 ภาษาอังกฤษ 11 เพลง 11 กีฬา Student_Detail =
STUDENT ⋈Student.Std = Subject.Class SUBJECT
Student_detail SID ชื่อ มาตรฐาน คลาส เรื่อง 101 อเล็กซ์ 10 10 คณิตศาสตร์ 101 อเล็กซ์ 10 10 ภาษาอังกฤษ 102 มาเรีย 11 11 เพลง 102 มาเรีย 11 11 กีฬา Equijoin
เมื่อเข้าร่วม Theta ใช้เท่านั้น equalityตัวดำเนินการเปรียบเทียบว่ากันว่าเป็น Equijoin ตัวอย่างข้างต้นสอดคล้องกับ equijoin
เข้าร่วมตามธรรมชาติ ( ⋈ )
Natural join ไม่ใช้ตัวดำเนินการเปรียบเทียบใด ๆ ไม่เชื่อมต่อกันแบบที่ผลิตภัณฑ์คาร์ทีเซียนทำ เราสามารถทำการเข้าร่วมแบบธรรมชาติได้ก็ต่อเมื่อมีแอตทริบิวต์ทั่วไปอย่างน้อยหนึ่งอย่างที่มีอยู่ระหว่างสองความสัมพันธ์ นอกจากนี้แอตทริบิวต์ต้องมีชื่อและโดเมนเดียวกัน
การรวมตามธรรมชาติจะทำหน้าที่กับแอตทริบิวต์ที่ตรงกันเหล่านั้นโดยที่ค่าของแอตทริบิวต์ทั้งสองความสัมพันธ์เหมือนกัน
หลักสูตร CID หลักสูตร ฝ่าย CS01 ฐานข้อมูล CS ME01 กลศาสตร์ ฉัน ศ. 01 อิเล็กทรอนิกส์ ศ HoD ฝ่าย ศีรษะ CS อเล็กซ์ ฉัน มายา ศ มิรา หลักสูตร⋈ HoD ฝ่าย CID หลักสูตร ศีรษะ CS CS01 ฐานข้อมูล อเล็กซ์ ฉัน ME01 กลศาสตร์ มายา ศ ศ. 01 อิเล็กทรอนิกส์ มิรา การเข้าร่วมภายนอก
Theta Join, Equijoin และ Natural Join เรียกว่าการรวมภายใน การรวมภายในจะรวมเฉพาะสิ่งที่มีคุณสมบัติที่ตรงกันและส่วนที่เหลือจะถูกละทิ้งในความสัมพันธ์ที่เป็นผลลัพธ์ ดังนั้นเราจำเป็นต้องใช้การรวมภายนอกเพื่อรวมสิ่งที่รวมทั้งหมดจากความสัมพันธ์ที่เข้าร่วมในความสัมพันธ์ที่เป็นผลลัพธ์ การรวมภายนอกมีสามประเภท ได้แก่ การรวมภายนอกด้านซ้ายการรวมภายนอกด้านขวาและการรวมภายนอกแบบเต็ม
การเข้าร่วมด้านนอกซ้าย (R
ทูเปิลทั้งหมดจากรีเลชันด้านซ้าย R รวมอยู่ในความสัมพันธ์ผลลัพธ์ หากมีทูเปิลใน R โดยไม่มีทูเพิลที่ตรงกันในความสัมพันธ์ด้านขวา S ดังนั้น S-attributes ของความสัมพันธ์ที่เป็นผลลัพธ์จะถูกทำให้เป็น NULL
ซ้าย ก ข 100 ฐานข้อมูล 101 กลศาสตร์ 102 อิเล็กทรอนิกส์ ขวา ก ข 100 อเล็กซ์ 102 มายา 104 มิรา หลักสูตร ก ข ค ง 100 ฐานข้อมูล 100 อเล็กซ์ 101 กลศาสตร์ --- --- 102 อิเล็กทรอนิกส์ 102 มายา การเข้าร่วมภายนอกขวา: (R
tuples ทั้งหมดจากความสัมพันธ์ด้านขวา S รวมอยู่ในความสัมพันธ์ที่เป็นผลลัพธ์ หากมีทูเปิลใน S โดยไม่มีทูเพิลที่ตรงกันใน R ดังนั้น R-attributes ของความสัมพันธ์ที่เป็นผลลัพธ์จะถูกสร้างเป็น NULL
หลักสูตร ก ข ค ง 100 ฐานข้อมูล 100 อเล็กซ์ 102 อิเล็กทรอนิกส์ 102 มายา --- --- 104 มิรา การเข้าร่วมภายนอกแบบเต็ม: (R
tuples ทั้งหมดจากความสัมพันธ์ที่เข้าร่วมทั้งสองจะรวมอยู่ในความสัมพันธ์ที่เกิด หากไม่มีสิ่งสองสิ่งที่ตรงกันสำหรับทั้งสองความสัมพันธ์แอตทริบิวต์ที่ไม่ตรงกันตามลำดับจะถูกทำให้เป็น NULL
หลักสูตร ก ข ค ง 100 ฐานข้อมูล 100 อเล็กซ์ 101 กลศาสตร์ --- --- 102 อิเล็กทรอนิกส์ 102 มายา --- --- 104 มิรา ฐานข้อมูลจะถูกจัดเก็บในรูปแบบไฟล์ซึ่งประกอบด้วยระเบียน ในระดับกายภาพข้อมูลจริงจะถูกจัดเก็บในรูปแบบแม่เหล็กไฟฟ้าในอุปกรณ์บางเครื่อง อุปกรณ์จัดเก็บข้อมูลเหล่านี้สามารถแบ่งออกเป็นสามประเภทอย่างกว้าง ๆ -
Primary Storage- ที่เก็บหน่วยความจำที่ CPU เข้าถึงได้โดยตรงอยู่ในหมวดหมู่นี้ หน่วยความจำภายในของ CPU (รีจิสเตอร์) หน่วยความจำแบบเร็ว (แคช) และหน่วยความจำหลัก (RAM) สามารถเข้าถึงซีพียูได้โดยตรงเนื่องจากทั้งหมดวางอยู่บนเมนบอร์ดหรือชิปเซ็ต CPU โดยทั่วไปพื้นที่จัดเก็บนี้มีขนาดเล็กมากรวดเร็วเป็นพิเศษและมีความผันผวน ที่เก็บข้อมูลหลักต้องใช้แหล่งจ่ายไฟอย่างต่อเนื่องเพื่อรักษาสถานะ ในกรณีไฟฟ้าดับข้อมูลทั้งหมดจะสูญหาย
Secondary Storage- อุปกรณ์จัดเก็บข้อมูลรองใช้ในการจัดเก็บข้อมูลเพื่อใช้ในอนาคตหรือเป็นข้อมูลสำรอง หน่วยความจำรองรวมถึงอุปกรณ์หน่วยความจำที่ไม่ได้เป็นส่วนหนึ่งของชิปเซ็ต CPU หรือมาเธอร์บอร์ดตัวอย่างเช่นดิสก์แม่เหล็กออปติคัลดิสก์ (ดีวีดีซีดี ฯลฯ ) ฮาร์ดดิสก์แฟลชไดรฟ์และเทปแม่เหล็ก
Tertiary Storage- พื้นที่เก็บข้อมูลระดับอุดมศึกษาใช้เพื่อจัดเก็บข้อมูลจำนวนมาก เนื่องจากอุปกรณ์จัดเก็บข้อมูลดังกล่าวอยู่ภายนอกระบบคอมพิวเตอร์จึงมีความเร็วช้าที่สุด อุปกรณ์จัดเก็บข้อมูลเหล่านี้ส่วนใหญ่จะใช้เพื่อสำรองข้อมูลทั้งระบบ ออปติคัลดิสก์และเทปแม่เหล็กถูกใช้กันอย่างแพร่หลายในฐานะที่เก็บข้อมูลระดับตติยภูมิ
ลำดับชั้นของหน่วยความจำ
ระบบคอมพิวเตอร์มีลำดับชั้นของหน่วยความจำที่กำหนดไว้อย่างดี CPU สามารถเข้าถึงหน่วยความจำหลักได้โดยตรงเช่นเดียวกับการลงทะเบียนในตัว เวลาในการเข้าถึงหน่วยความจำหลักจะน้อยกว่าความเร็วของ CPU อย่างเห็นได้ชัด เพื่อลดความเร็วที่ไม่ตรงกันนี้จะมีการแนะนำหน่วยความจำแคช หน่วยความจำแคชให้เวลาในการเข้าถึงที่เร็วที่สุดและมีข้อมูลที่ CPU เข้าถึงบ่อยที่สุด
หน่วยความจำที่เข้าถึงได้เร็วที่สุดเป็นหน่วยความจำที่มีราคาแพงที่สุด อุปกรณ์จัดเก็บข้อมูลขนาดใหญ่ให้ความเร็วที่ช้าและมีราคาไม่แพง แต่สามารถจัดเก็บข้อมูลจำนวนมากได้เมื่อเทียบกับการลงทะเบียน CPU หรือหน่วยความจำแคช
ดิสก์แม่เหล็ก
ฮาร์ดดิสก์ไดรฟ์เป็นอุปกรณ์จัดเก็บข้อมูลสำรองที่พบมากที่สุดในระบบคอมพิวเตอร์ปัจจุบัน สิ่งเหล่านี้เรียกว่าดิสก์แม่เหล็กเนื่องจากใช้แนวคิดของการดึงดูดเพื่อจัดเก็บข้อมูล ฮาร์ดดิสก์ประกอบด้วยดิสก์โลหะที่เคลือบด้วยวัสดุที่เป็นแม่เหล็ก ดิสก์เหล่านี้วางในแนวตั้งบนแกนหมุน หัวอ่าน / เขียนจะเคลื่อนที่ไปมาระหว่างดิสก์และใช้เพื่อดึงดูดหรือดึงจุดที่อยู่ใต้มันออก จุดแม่เหล็กสามารถรับรู้ได้ว่า 0 (ศูนย์) หรือ 1 (หนึ่ง)
ฮาร์ดดิสก์ได้รับการจัดรูปแบบตามลำดับที่กำหนดไว้อย่างดีเพื่อจัดเก็บข้อมูลอย่างมีประสิทธิภาพ แผ่นฮาร์ดดิสก์มีวงกลมหลายจุดอยู่เรียกว่าtracks. ทุกแทร็กจะถูกแบ่งออกเป็นsectors. โดยทั่วไปเซกเตอร์บนฮาร์ดดิสก์จะเก็บข้อมูล 512 ไบต์
RAID
RAID ย่อมาจาก Redundant Aเรย์ของ Iพึ่งพา Disks ซึ่งเป็นเทคโนโลยีในการเชื่อมต่ออุปกรณ์จัดเก็บข้อมูลสำรองหลายเครื่องและใช้เป็นสื่อบันทึกข้อมูลเดียว
RAID ประกอบด้วยอาร์เรย์ของดิสก์ที่เชื่อมต่อดิสก์หลายตัวเข้าด้วยกันเพื่อให้บรรลุเป้าหมายที่แตกต่างกัน ระดับ RAID กำหนดการใช้ดิสก์อาร์เรย์
RAID 0- ในระดับนี้จะมีการนำอาร์เรย์ของดิสก์มาใช้ ข้อมูลถูกแบ่งออกเป็นบล็อกและบล็อกจะกระจายไปตามดิสก์ ดิสก์แต่ละตัวได้รับบล็อกข้อมูลเพื่อเขียน / อ่านแบบขนาน ช่วยเพิ่มความเร็วและประสิทธิภาพของอุปกรณ์จัดเก็บข้อมูล ไม่มีความเท่าเทียมกันและการสำรองข้อมูลในระดับ 0
RAID 1- RAID 1 ใช้เทคนิคการมิเรอร์ เมื่อข้อมูลถูกส่งไปยังตัวควบคุม RAID ข้อมูลจะส่งสำเนาข้อมูลไปยังดิสก์ทั้งหมดในอาร์เรย์ เรียกอีกอย่างว่า RAID ระดับ 1mirroring และให้ความซ้ำซ้อน 100% ในกรณีที่เกิดความล้มเหลว
RAID 2- RAID 2 บันทึกรหัสการแก้ไขข้อผิดพลาดโดยใช้ระยะทาง Hamming สำหรับข้อมูลลายบนดิสก์ที่แตกต่างกัน เช่นเดียวกับระดับ 0 บิตข้อมูลแต่ละคำจะถูกบันทึกลงในดิสก์ที่แยกจากกันและรหัส ECC ของคำข้อมูลจะถูกเก็บไว้ในดิสก์ชุดอื่น เนื่องจากโครงสร้างที่ซับซ้อนและต้นทุนสูง RAID 2 จึงไม่มีวางจำหน่ายทั่วไป
RAID 3- RAID 3 ขีดเส้นข้อมูลลงบนดิสก์หลายแผ่น พาริตีบิตที่สร้างขึ้นสำหรับ data word จะถูกเก็บไว้ในดิสก์อื่น เทคนิคนี้ทำให้สามารถเอาชนะความล้มเหลวของดิสก์เดี่ยวได้
RAID 4- ในระดับนี้บล็อกข้อมูลทั้งหมดจะถูกเขียนลงในดิสก์ข้อมูลจากนั้นพาริตีจะถูกสร้างและจัดเก็บไว้ในดิสก์อื่น โปรดทราบว่าระดับ 3 ใช้การสตริประดับไบต์ในขณะที่ระดับ 4 ใช้การสตริประดับบล็อก ทั้งระดับ 3 และระดับ 4 ต้องการดิสก์อย่างน้อยสามดิสก์เพื่อใช้งาน RAID
RAID 5 - RAID 5 เขียนบล็อกข้อมูลทั้งหมดลงในดิสก์ที่แตกต่างกัน แต่พาริตีบิตที่สร้างขึ้นสำหรับแถบข้อมูลจะถูกกระจายไปยังดิสก์ข้อมูลทั้งหมดแทนที่จะจัดเก็บไว้ในดิสก์เฉพาะอื่น
RAID 6- RAID 6 เป็นส่วนขยายของระดับ 5 ในระดับนี้จะมีการสร้างและจัดเก็บความเท่าเทียมกันสองแบบแยกกันระหว่างดิสก์หลายชุด ความเท่าเทียมกันสองแบบให้การยอมรับข้อผิดพลาดเพิ่มเติม ระดับนี้ต้องใช้ดิสก์ไดรฟ์อย่างน้อยสี่ตัวเพื่อใช้งาน RAID
ข้อมูลสัมพัทธ์และข้อมูลจะถูกจัดเก็บโดยรวมในรูปแบบไฟล์ ไฟล์คือลำดับของระเบียนที่จัดเก็บในรูปแบบไบนารี ดิสก์ไดรฟ์ถูกฟอร์แมตเป็นหลายบล็อกที่สามารถจัดเก็บบันทึกได้ เร็กคอร์ดไฟล์ถูกแมปลงบนบล็อกดิสก์เหล่านั้น
องค์กรไฟล์
File Organization กำหนดวิธีการแมปบันทึกไฟล์บนดิสก์บล็อก เรามี File Organization สี่ประเภทในการจัดระเบียบไฟล์ -
Heap File Organization
เมื่อไฟล์ถูกสร้างโดยใช้ Heap File Organization ระบบปฏิบัติการจะจัดสรรพื้นที่หน่วยความจำให้กับไฟล์นั้นโดยไม่มีรายละเอียดการบัญชีเพิ่มเติม บันทึกไฟล์สามารถวางไว้ที่ใดก็ได้ในพื้นที่หน่วยความจำนั้น เป็นความรับผิดชอบของซอฟต์แวร์ในการจัดการบันทึก ไฟล์ Heap ไม่รองรับการสั่งซื้อการจัดลำดับหรือการจัดทำดัชนีใด ๆ ด้วยตัวมันเอง
การจัดระเบียบไฟล์ตามลำดับ
ทุกระเบียนไฟล์มีฟิลด์ข้อมูล (แอตทริบิวต์) เพื่อระบุระเบียนนั้นโดยไม่ซ้ำกัน ในการจัดระเบียบไฟล์ตามลำดับเร็กคอร์ดจะถูกวางไว้ในไฟล์ตามลำดับตามลำดับตามช่องคีย์เฉพาะหรือคีย์การค้นหา ในทางปฏิบัติไม่สามารถจัดเก็บระเบียนทั้งหมดตามลำดับในรูปแบบทางกายภาพได้
องค์กรไฟล์แฮช
Hash File Organization ใช้การคำนวณฟังก์ชัน Hash ในบางฟิลด์ของระเบียน เอาต์พุตของฟังก์ชันแฮชกำหนดตำแหน่งของบล็อกดิสก์ที่จะวางเร็กคอร์ด
องค์กรไฟล์คลัสเตอร์
การจัดระเบียบไฟล์แบบคลัสเตอร์ไม่ถือว่าดีสำหรับฐานข้อมูลขนาดใหญ่ ในกลไกนี้เร็กคอร์ดที่เกี่ยวข้องจากความสัมพันธ์ตั้งแต่หนึ่งรายการขึ้นไปจะถูกเก็บไว้ในบล็อกดิสก์เดียวกันนั่นคือลำดับของเรกคอร์ดไม่ได้ขึ้นอยู่กับคีย์หลักหรือคีย์การค้นหา
การทำงานของไฟล์
การดำเนินการกับไฟล์ฐานข้อมูลสามารถแบ่งออกเป็นสองประเภทอย่างกว้าง ๆ -
Update Operations
Retrieval Operations
การดำเนินการอัปเดตเปลี่ยนค่าข้อมูลโดยการแทรกลบหรืออัปเดต ในทางกลับกันการดำเนินการดึงข้อมูลห้ามแก้ไขข้อมูล แต่ดึงข้อมูลหลังจากการกรองตามเงื่อนไขที่เป็นทางเลือก ในการดำเนินการทั้งสองประเภทการเลือกมีบทบาทสำคัญ นอกเหนือจากการสร้างและการลบไฟล์แล้วอาจมีการดำเนินการหลายอย่างซึ่งสามารถทำได้กับไฟล์
Open - ไฟล์สามารถเปิดได้ในหนึ่งในสองโหมด read mode หรือ write mode. ในโหมดอ่านระบบปฏิบัติการไม่อนุญาตให้ใครแก้ไขข้อมูล กล่าวอีกนัยหนึ่งคือข้อมูลอ่านอย่างเดียว ไฟล์ที่เปิดในโหมดอ่านสามารถใช้ร่วมกันระหว่างเอนทิตีต่างๆ โหมดเขียนช่วยให้สามารถแก้ไขข้อมูลได้ ไฟล์ที่เปิดในโหมดเขียนสามารถอ่านได้ แต่ไม่สามารถแชร์ได้
Locate- ทุกไฟล์มีตัวชี้ไฟล์ซึ่งจะบอกตำแหน่งปัจจุบันที่จะอ่านหรือเขียนข้อมูล ตัวชี้นี้สามารถปรับให้เหมาะสมได้ การใช้การดำเนินการค้นหา (ค้นหา) สามารถเลื่อนไปข้างหน้าหรือข้างหลังได้
Read- ตามค่าเริ่มต้นเมื่อเปิดไฟล์ในโหมดอ่านตัวชี้ไฟล์จะชี้ไปที่จุดเริ่มต้นของไฟล์ มีตัวเลือกที่ผู้ใช้สามารถบอกระบบปฏิบัติการว่าจะค้นหาตัวชี้ไฟล์ได้ที่ไหนในเวลาที่เปิดไฟล์ ข้อมูลถัดไปของตัวชี้ไฟล์จะถูกอ่าน
Write- ผู้ใช้สามารถเลือกที่จะเปิดไฟล์ในโหมดเขียนซึ่งทำให้พวกเขาสามารถแก้ไขเนื้อหาได้ สามารถลบแทรกหรือแก้ไขได้ ตัวชี้ไฟล์สามารถระบุได้ในเวลาที่เปิดหรือสามารถเปลี่ยนแปลงได้แบบไดนามิกหากระบบปฏิบัติการอนุญาตให้ทำเช่นนั้น
Close- นี่คือการดำเนินการที่สำคัญที่สุดจากมุมมองของระบบปฏิบัติการ เมื่อมีการสร้างคำร้องขอให้ปิดไฟล์ระบบปฏิบัติการ
- ลบล็อคทั้งหมด (ถ้าอยู่ในโหมดแชร์)
- บันทึกข้อมูล (หากมีการเปลี่ยนแปลง) ไปยังสื่อบันทึกข้อมูลสำรองและ
- ปล่อยบัฟเฟอร์และตัวจัดการไฟล์ทั้งหมดที่เกี่ยวข้องกับไฟล์
การจัดระเบียบข้อมูลภายในไฟล์มีบทบาทสำคัญที่นี่ กระบวนการค้นหาตัวชี้ไฟล์ไปยังเร็กคอร์ดที่ต้องการภายในไฟล์ต่างๆโดยขึ้นอยู่กับว่าเร็กคอร์ดถูกจัดเรียงตามลำดับหรือคลัสเตอร์
เราทราบว่าข้อมูลถูกจัดเก็บในรูปแบบของบันทึก ทุกระเบียนมีฟิลด์หลักซึ่งช่วยให้จดจำได้โดยไม่ซ้ำกัน
การจัดทำดัชนีเป็นเทคนิคโครงสร้างข้อมูลในการดึงเร็กคอร์ดจากไฟล์ฐานข้อมูลอย่างมีประสิทธิภาพโดยพิจารณาจากคุณสมบัติบางอย่างที่มีการจัดทำดัชนี การจัดทำดัชนีในระบบฐานข้อมูลคล้ายกับที่เราเห็นในหนังสือ
การจัดทำดัชนีถูกกำหนดตามแอตทริบิวต์การจัดทำดัชนี การจัดทำดัชนีสามารถเป็นประเภทต่อไปนี้ -
Primary Index- ดัชนีหลักถูกกำหนดบนไฟล์ข้อมูลที่สั่งซื้อ ไฟล์ข้อมูลถูกเรียงลำดับในไฟล์key field. โดยทั่วไปฟิลด์คีย์จะเป็นคีย์หลักของรีเลชัน
Secondary Index - ดัชนีรองอาจถูกสร้างขึ้นจากฟิลด์ซึ่งเป็นคีย์ตัวเลือกและมีค่าที่ไม่ซ้ำกันในทุกเรคคอร์ดหรือไม่ใช่คีย์ที่มีค่าซ้ำกัน
Clustering Index- ดัชนีการจัดกลุ่มถูกกำหนดบนไฟล์ข้อมูลที่สั่งซื้อ ไฟล์ข้อมูลถูกเรียงลำดับบนฟิลด์ที่ไม่ใช่คีย์
การจัดทำดัชนีตามลำดับมีสองประเภท -
- ดัชนีความหนาแน่น
- ดัชนีกระจัดกระจาย
ดัชนีความหนาแน่น
ในดัชนีที่หนาแน่นจะมีการบันทึกดัชนีสำหรับค่าคีย์การค้นหาทั้งหมดในฐานข้อมูล ทำให้การค้นหาเร็วขึ้น แต่ต้องใช้พื้นที่มากขึ้นในการจัดเก็บเรกคอร์ดดัชนีเอง ระเบียนดัชนีประกอบด้วยค่าคีย์การค้นหาและตัวชี้ไปยังระเบียนจริงบนดิสก์
ดัชนีกระจัดกระจาย
ในดัชนีกระจัดกระจายระเบียนดัชนีจะไม่ถูกสร้างขึ้นสำหรับทุกคีย์การค้นหา ระเบียนดัชนีที่นี่ประกอบด้วยคีย์การค้นหาและตัวชี้จริงไปยังข้อมูลบนดิสก์ ในการค้นหาบันทึกอันดับแรกเราจะดำเนินการโดยบันทึกดัชนีและเข้าถึงตำแหน่งจริงของข้อมูล หากข้อมูลที่เรากำลังค้นหาไม่ใช่ที่ที่เราเข้าถึงโดยตรงโดยทำตามดัชนีระบบจะเริ่มค้นหาตามลำดับจนกว่าจะพบข้อมูลที่ต้องการ
ดัชนีหลายระดับ
ระเบียนดัชนีประกอบด้วยค่าคีย์การค้นหาและตัวชี้ข้อมูล ดัชนีหลายระดับจะถูกเก็บไว้ในดิสก์พร้อมกับไฟล์ฐานข้อมูลจริง เมื่อขนาดของฐานข้อมูลเติบโตขึ้นขนาดของดัชนีก็เช่นกัน มีความจำเป็นอย่างยิ่งที่จะต้องเก็บบันทึกดัชนีไว้ในหน่วยความจำหลักเพื่อเพิ่มความเร็วในการค้นหา หากใช้ดัชนีระดับเดียวดัชนีขนาดใหญ่จะไม่สามารถเก็บไว้ในหน่วยความจำได้ซึ่งนำไปสู่การเข้าถึงดิสก์หลายรายการ
ดัชนีหลายระดับช่วยในการแยกดัชนีออกเป็นดัชนีขนาดเล็กหลาย ๆ ดัชนีเพื่อทำให้ระดับนอกสุดมีขนาดเล็กมากจนสามารถบันทึกไว้ในบล็อกดิสก์เดียวซึ่งสามารถรองรับได้ทุกที่ในหน่วยความจำหลัก
B +ต้นไม้
ต้นไม้AB +เป็นโครงสร้างการค้นหาแบบไบนารีที่สมดุลซึ่งเป็นไปตามรูปแบบดัชนีหลายระดับ โหนดใบของต้นไม้B +แสดงถึงตัวชี้ข้อมูลจริง ต้นไม้B +ช่วยให้มั่นใจได้ว่าโหนดใบไม้ทั้งหมดยังคงมีความสูงเท่ากันดังนั้นจึงมีความสมดุล นอกจากนี้โหนดลีฟยังเชื่อมโยงโดยใช้ลิงค์ลิสต์ ดังนั้นต้นไม้B +สามารถรองรับการเข้าถึงแบบสุ่มและการเข้าถึงตามลำดับ
โครงสร้างของ B + Tree
โหนดลีฟทุกโหนดอยู่ห่างจากโหนดรูทเท่ากัน ต้นไม้AB +เป็นไปตามลำดับn ที่ไหน nได้รับการแก้ไขสำหรับต้นไม้B +ทุกต้น
Internal nodes -
- โหนดภายใน (ไม่ใช่ลีฟ) มีพอยน์เตอร์⌈n / 2⌉เป็นอย่างน้อยยกเว้นโหนดรูท
- โดยมากโหนดภายในสามารถมีได้ n พอยน์เตอร์
Leaf nodes -
- โหนด Leaf มีตัวชี้บันทึกอย่างน้อย⌈n / 2⌉และค่าคีย์⌈n / 2⌉
- โหนดลีฟสามารถมีได้มากที่สุด n บันทึกพอยน์เตอร์และ n ค่าคีย์
- โหนดลีฟทุกโหนดมีตัวชี้หนึ่งบล็อก P เพื่อชี้ไปที่โหนดลีฟถัดไปและสร้างรายการที่เชื่อมโยง
การแทรกต้นไม้B +
ต้นไม้B +เต็มจากด้านล่างและแต่ละรายการจะทำที่โหนดใบไม้
- หากโหนดลีฟล้น -
แยกโหนดออกเป็นสองส่วน
พาร์ทิชันที่ i = ⌊(m+1)/2⌋.
อันดับแรก i รายการจะถูกเก็บไว้ในโหนดเดียว
รายการที่เหลือ (i + 1 เป็นต้นไป) จะถูกย้ายไปยังโหนดใหม่
ith คีย์ซ้ำกันที่แม่ของใบไม้
หากโหนดที่ไม่ใช่ลีฟล้น -
แยกโหนดออกเป็นสองส่วน
แบ่งโหนดที่ i = ⌈(m+1)/2⌉.
รายการได้ถึง i จะถูกเก็บไว้ในโหนดเดียว
รายการที่เหลือจะถูกย้ายไปยังโหนดใหม่
B +การลบทรี
รายการต้นไม้B +จะถูกลบที่โหนดใบไม้
รายการเป้าหมายถูกค้นหาและลบ
หากเป็นโหนดภายในให้ลบและแทนที่ด้วยรายการจากตำแหน่งด้านซ้าย
หลังจากลบแล้วจะมีการทดสอบ underflow
หากเกิด underflow ขึ้นให้กระจายรายการจากโหนดไปทางซ้าย
หากไม่สามารถกระจายจากด้านซ้ายได้
แจกจ่ายจากโหนดไปทางขวา
หากไม่สามารถกระจายจากทางซ้ายหรือทางขวาได้
รวมโหนดเข้ากับซ้ายและขวา
สำหรับโครงสร้างฐานข้อมูลขนาดใหญ่แทบจะเป็นไปไม่ได้เลยที่จะค้นหาค่าดัชนีทั้งหมดในทุกระดับจากนั้นจึงไปถึงบล็อกข้อมูลปลายทางเพื่อดึงข้อมูลที่ต้องการ การแฮชเป็นเทคนิคที่มีประสิทธิภาพในการคำนวณตำแหน่งโดยตรงของบันทึกข้อมูลบนดิสก์โดยไม่ต้องใช้โครงสร้างดัชนี
การแฮชใช้ฟังก์ชันแฮชที่มีแป้นค้นหาเป็นพารามิเตอร์เพื่อสร้างที่อยู่ของบันทึกข้อมูล
องค์กรแฮช
Bucket- ไฟล์แฮชเก็บข้อมูลในรูปแบบถัง Bucket ถือเป็นหน่วยเก็บข้อมูล โดยทั่วไปที่เก็บข้อมูลจะเก็บบล็อกดิสก์ที่สมบูรณ์หนึ่งบล็อกซึ่งสามารถจัดเก็บระเบียนได้ตั้งแต่หนึ่งรายการขึ้นไป
Hash Function - ฟังก์ชันแฮช h, เป็นฟังก์ชันการทำแผนที่ที่แมปชุดของแป้นค้นหาทั้งหมด Kไปยังที่อยู่ที่วางบันทึกจริง เป็นฟังก์ชันตั้งแต่ปุ่มค้นหาไปจนถึงที่อยู่ที่เก็บข้อมูล
การแฮชแบบคงที่
ในการแฮชแบบคงที่เมื่อมีการระบุค่าคีย์การค้นหาฟังก์ชันแฮชจะคำนวณแอดเดรสเดียวกันเสมอ ตัวอย่างเช่นหากใช้ฟังก์ชันแฮช mod-4 ฟังก์ชันนั้นจะสร้างได้เพียง 5 ค่า ที่อยู่เอาต์พุตจะต้องเหมือนกันสำหรับฟังก์ชันนั้นเสมอ จำนวนที่เก็บข้อมูลที่ระบุจะไม่เปลี่ยนแปลงตลอดเวลา
การดำเนินการ
Insertion - เมื่อจำเป็นต้องป้อนเรกคอร์ดโดยใช้แฮชแบบคงที่ฟังก์ชันแฮช h คำนวณที่อยู่ที่เก็บข้อมูลสำหรับคีย์การค้นหา Kที่บันทึกจะถูกจัดเก็บ
ที่อยู่ที่เก็บข้อมูล = h (K)
Search - เมื่อต้องเรียกข้อมูลบันทึกสามารถใช้ฟังก์ชันแฮชเดียวกันเพื่อดึงที่อยู่ของที่เก็บข้อมูลที่จัดเก็บข้อมูลได้
Delete - นี่เป็นเพียงการค้นหาตามด้วยการดำเนินการลบ
ล้นถัง
เงื่อนไขของการล้นที่เก็บข้อมูลเรียกว่า collision. นี่เป็นสถานะที่ร้ายแรงสำหรับฟังก์ชันแฮชแบบคงที่ ในกรณีนี้สามารถใช้โซ่โอเวอร์โฟลว์ได้
Overflow Chaining- เมื่อที่เก็บข้อมูลเต็มจะมีการจัดสรรที่เก็บข้อมูลใหม่สำหรับผลลัพธ์แฮชเดียวกันและเชื่อมโยงหลังจากที่เก็บข้อมูลก่อนหน้านี้ กลไกนี้เรียกว่าClosed Hashing.
Linear Probing- เมื่อฟังก์ชันแฮชสร้างที่อยู่ที่เก็บข้อมูลไว้แล้วที่เก็บข้อมูลฟรีถัดไปจะถูกจัดสรรให้ กลไกนี้เรียกว่าOpen Hashing.
แฮชแบบไดนามิก
ปัญหาเกี่ยวกับการแฮชแบบคงที่คือการไม่ขยายหรือย่อขนาดแบบไดนามิกเนื่องจากขนาดของฐานข้อมูลขยายใหญ่ขึ้นหรือลดลง การแฮชแบบไดนามิกมีกลไกในการเพิ่มและลบที่เก็บข้อมูลแบบไดนามิกและตามความต้องการ การแฮชแบบไดนามิกเรียกอีกอย่างว่าextended hashing.
ฟังก์ชันแฮชในการแฮชแบบไดนามิกถูกสร้างขึ้นเพื่อสร้างค่าจำนวนมากและใช้เพียงไม่กี่ค่าในขั้นต้น
องค์กร
คำนำหน้าของค่าแฮชทั้งหมดถูกนำมาใช้เป็นดัชนีแฮช ใช้เพียงส่วนหนึ่งของค่าแฮชสำหรับการคำนวณที่อยู่ที่เก็บข้อมูล ดัชนีแฮชทุกตัวมีค่าความลึกเพื่อแสดงจำนวนบิตที่ใช้ในการคำนวณฟังก์ชันแฮช บิตเหล่านี้สามารถจัดการกับที่เก็บข้อมูล 2n เมื่อบิตเหล่านี้ถูกใช้หมดนั่นคือเมื่อที่เก็บข้อมูลทั้งหมดเต็มแล้วค่าความลึกจะเพิ่มขึ้นในเชิงเส้นและจะจัดสรรที่เก็บข้อมูลเป็นสองเท่า
การดำเนินการ
Querying - ดูค่าความลึกของดัชนีแฮชและใช้บิตเหล่านั้นเพื่อคำนวณที่อยู่ที่เก็บข้อมูล
Update - ดำเนินการค้นหาตามด้านบนและอัปเดตข้อมูล
Deletion - ดำเนินการค้นหาเพื่อค้นหาข้อมูลที่ต้องการและลบข้อมูลเดียวกัน
Insertion - คำนวณที่อยู่ของที่เก็บข้อมูล
- หากถังเต็มแล้ว
- เพิ่มที่เก็บข้อมูลเพิ่มเติม
- เพิ่มบิตเพิ่มเติมให้กับค่าแฮช
- คำนวณฟังก์ชันแฮชอีกครั้ง
- อื่น
- เพิ่มข้อมูลลงในถัง
- หากที่เก็บข้อมูลทั้งหมดเต็มให้ดำเนินการแก้ไขการแฮชแบบคงที่
- หากถังเต็มแล้ว
การแฮชไม่เป็นผลดีเมื่อมีการจัดระเบียบข้อมูลในบางลำดับและการสืบค้นต้องใช้ช่วงข้อมูล เมื่อข้อมูลไม่ต่อเนื่องและสุ่มแฮชจะทำงานได้ดีที่สุด
อัลกอริทึมการแฮชมีความซับซ้อนสูงกว่าการจัดทำดัชนี การดำเนินการแฮชทั้งหมดจะทำในเวลาคงที่
ธุรกรรมสามารถกำหนดเป็นกลุ่มของงาน งานเดียวคือหน่วยประมวลผลขั้นต่ำซึ่งไม่สามารถแบ่งออกได้อีก
มาดูตัวอย่างธุรกรรมง่ายๆ สมมติว่าพนักงานธนาคารโอนเงิน Rs 500 จากบัญชี A ไปยังบัญชีของ B ธุรกรรมที่เรียบง่ายและเล็กมากนี้เกี่ยวข้องกับงานระดับต่ำหลายอย่าง
A’s Account
Open_Account(A) Old_Balance = A.balance New_Balance = Old_Balance - 500 A.balance = New_Balance Close_Account(A)
B’s Account
Open_Account(B) Old_Balance = B.balance New_Balance = Old_Balance + 500 B.balance = New_Balance Close_Account(B)
คุณสมบัติของกรด
ธุรกรรมเป็นหน่วยเล็ก ๆ ของโปรแกรมและอาจมีงานระดับต่ำหลายงาน ธุรกรรมในระบบฐานข้อมูลต้องคงไว้Aความเป็นทอม Consistency, Iความโดดเดี่ยวและ Dความสามารถในการดูดซับ - รู้จักกันทั่วไปในชื่อคุณสมบัติของกรด - เพื่อให้แน่ใจว่าถูกต้องครบถ้วนและสมบูรณ์ของข้อมูล
Atomicity- คุณสมบัตินี้ระบุว่าธุรกรรมต้องถือว่าเป็นหน่วยอะตอมนั่นคือการดำเนินการทั้งหมดจะดำเนินการหรือไม่มีเลย ต้องไม่มีสถานะใดในฐานข้อมูลที่ธุรกรรมถูกปล่อยให้เสร็จสมบูรณ์บางส่วน ควรกำหนดรัฐก่อนการดำเนินการของธุรกรรมหรือหลังจากการดำเนินการ / การทำแท้ง / ความล้มเหลวของธุรกรรม
Consistency- ฐานข้อมูลจะต้องอยู่ในสถานะที่สอดคล้องกันหลังการทำธุรกรรมใด ๆ การทำธุรกรรมไม่ควรมีผลกระทบใด ๆ ต่อข้อมูลที่อยู่ในฐานข้อมูล หากฐานข้อมูลอยู่ในสถานะที่สอดคล้องกันก่อนที่จะดำเนินการธุรกรรมฐานข้อมูลนั้นจะต้องมีความสอดคล้องกันหลังจากการดำเนินธุรกรรมเช่นกัน
Durability- ฐานข้อมูลควรมีความทนทานเพียงพอที่จะรองรับการอัปเดตล่าสุดทั้งหมดแม้ว่าระบบจะล้มเหลวหรือรีสตาร์ทก็ตาม หากธุรกรรมอัปเดตข้อมูลส่วนหนึ่งในฐานข้อมูลและตกลงฐานข้อมูลจะเก็บข้อมูลที่แก้ไขไว้ หากธุรกรรมเกิดขึ้น แต่ระบบล้มเหลวก่อนที่ข้อมูลจะถูกเขียนลงดิสก์ข้อมูลนั้นจะได้รับการอัปเดตเมื่อระบบกลับมาดำเนินการ
Isolation − In a database system where more than one transaction are being executed simultaneously and in parallel, the property of isolation states that all the transactions will be carried out and executed as if it is the only transaction in the system. No transaction will affect the existence of any other transaction.
Serializability
When multiple transactions are being executed by the operating system in a multiprogramming environment, there are possibilities that instructions of one transactions are interleaved with some other transaction.
Schedule − A chronological execution sequence of a transaction is called a schedule. A schedule can have many transactions in it, each comprising of a number of instructions/tasks.
Serial Schedule − It is a schedule in which transactions are aligned in such a way that one transaction is executed first. When the first transaction completes its cycle, then the next transaction is executed. Transactions are ordered one after the other. This type of schedule is called a serial schedule, as transactions are executed in a serial manner.
In a multi-transaction environment, serial schedules are considered as a benchmark. The execution sequence of an instruction in a transaction cannot be changed, but two transactions can have their instructions executed in a random fashion. This execution does no harm if two transactions are mutually independent and working on different segments of data; but in case these two transactions are working on the same data, then the results may vary. This ever-varying result may bring the database to an inconsistent state.
To resolve this problem, we allow parallel execution of a transaction schedule, if its transactions are either serializable or have some equivalence relation among them.
Equivalence Schedules
An equivalence schedule can be of the following types −
Result Equivalence
If two schedules produce the same result after execution, they are said to be result equivalent. They may yield the same result for some value and different results for another set of values. That's why this equivalence is not generally considered significant.
View Equivalence
Two schedules would be view equivalence if the transactions in both the schedules perform similar actions in a similar manner.
For example −
If T reads the initial data in S1, then it also reads the initial data in S2.
If T reads the value written by J in S1, then it also reads the value written by J in S2.
If T performs the final write on the data value in S1, then it also performs the final write on the data value in S2.
Conflict Equivalence
Two schedules would be conflicting if they have the following properties −
- Both belong to separate transactions.
- Both accesses the same data item.
- At least one of them is "write" operation.
Two schedules having multiple transactions with conflicting operations are said to be conflict equivalent if and only if −
- Both the schedules contain the same set of Transactions.
- The order of conflicting pairs of operation is maintained in both the schedules.
Note − View equivalent schedules are view serializable and conflict equivalent schedules are conflict serializable. All conflict serializable schedules are view serializable too.
States of Transactions
A transaction in a database can be in one of the following states −
Active − In this state, the transaction is being executed. This is the initial state of every transaction.
Partially Committed − When a transaction executes its final operation, it is said to be in a partially committed state.
Failed − A transaction is said to be in a failed state if any of the checks made by the database recovery system fails. A failed transaction can no longer proceed further.
Aborted − If any of the checks fails and the transaction has reached a failed state, then the recovery manager rolls back all its write operations on the database to bring the database back to its original state where it was prior to the execution of the transaction. Transactions in this state are called aborted. The database recovery module can select one of the two operations after a transaction aborts −
- Re-start the transaction
- Kill the transaction
Committed − If a transaction executes all its operations successfully, it is said to be committed. All its effects are now permanently established on the database system.
In a multiprogramming environment where multiple transactions can be executed simultaneously, it is highly important to control the concurrency of transactions. We have concurrency control protocols to ensure atomicity, isolation, and serializability of concurrent transactions. Concurrency control protocols can be broadly divided into two categories −
- Lock based protocols
- Time stamp based protocols
Lock-based Protocols
Database systems equipped with lock-based protocols use a mechanism by which any transaction cannot read or write data until it acquires an appropriate lock on it. Locks are of two kinds −
Binary Locks − A lock on a data item can be in two states; it is either locked or unlocked.
Shared/exclusive − This type of locking mechanism differentiates the locks based on their uses. If a lock is acquired on a data item to perform a write operation, it is an exclusive lock. Allowing more than one transaction to write on the same data item would lead the database into an inconsistent state. Read locks are shared because no data value is being changed.
There are four types of lock protocols available −
Simplistic Lock Protocol
Simplistic lock-based protocols allow transactions to obtain a lock on every object before a 'write' operation is performed. Transactions may unlock the data item after completing the ‘write’ operation.
Pre-claiming Lock Protocol
Pre-claiming protocols evaluate their operations and create a list of data items on which they need locks. Before initiating an execution, the transaction requests the system for all the locks it needs beforehand. If all the locks are granted, the transaction executes and releases all the locks when all its operations are over. If all the locks are not granted, the transaction rolls back and waits until all the locks are granted.
Two-Phase Locking 2PL
This locking protocol divides the execution phase of a transaction into three parts. In the first part, when the transaction starts executing, it seeks permission for the locks it requires. The second part is where the transaction acquires all the locks. As soon as the transaction releases its first lock, the third phase starts. In this phase, the transaction cannot demand any new locks; it only releases the acquired locks.
Two-phase locking has two phases, one is growing, where all the locks are being acquired by the transaction; and the second phase is shrinking, where the locks held by the transaction are being released.
To claim an exclusive (write) lock, a transaction must first acquire a shared (read) lock and then upgrade it to an exclusive lock.
Strict Two-Phase Locking
The first phase of Strict-2PL is same as 2PL. After acquiring all the locks in the first phase, the transaction continues to execute normally. But in contrast to 2PL, Strict-2PL does not release a lock after using it. Strict-2PL holds all the locks until the commit point and releases all the locks at a time.
Strict-2PL does not have cascading abort as 2PL does.
Timestamp-based Protocols
The most commonly used concurrency protocol is the timestamp based protocol. This protocol uses either system time or logical counter as a timestamp.
Lock-based protocols manage the order between the conflicting pairs among transactions at the time of execution, whereas timestamp-based protocols start working as soon as a transaction is created.
Every transaction has a timestamp associated with it, and the ordering is determined by the age of the transaction. A transaction created at 0002 clock time would be older than all other transactions that come after it. For example, any transaction 'y' entering the system at 0004 is two seconds younger and the priority would be given to the older one.
In addition, every data item is given the latest read and write-timestamp. This lets the system know when the last ‘read and write’ operation was performed on the data item.
Timestamp Ordering Protocol
The timestamp-ordering protocol ensures serializability among transactions in their conflicting read and write operations. This is the responsibility of the protocol system that the conflicting pair of tasks should be executed according to the timestamp values of the transactions.
- The timestamp of transaction Ti is denoted as TS(Ti).
- Read time-stamp of data-item X is denoted by R-timestamp(X).
- Write time-stamp of data-item X is denoted by W-timestamp(X).
Timestamp ordering protocol works as follows −
If a transaction Ti issues a read(X) operation −
- If TS(Ti) < W-timestamp(X)
- Operation rejected.
- If TS(Ti) >= W-timestamp(X)
- Operation executed.
- All data-item timestamps updated.
If a transaction Ti issues a write(X) operation −
- If TS(Ti) < R-timestamp(X)
- Operation rejected.
- If TS(Ti) < W-timestamp(X)
- Operation rejected and Ti rolled back.
- Otherwise, operation executed.
Thomas' Write Rule
This rule states if TS(Ti) < W-timestamp(X), then the operation is rejected and Ti is rolled back.
Time-stamp ordering rules can be modified to make the schedule view serializable.
Instead of making Ti rolled back, the 'write' operation itself is ignored.
In a multi-process system, deadlock is an unwanted situation that arises in a shared resource environment, where a process indefinitely waits for a resource that is held by another process.
For example, assume a set of transactions {T0, T1, T2, ...,Tn}. T0 needs a resource X to complete its task. Resource X is held by T1, and T1 is waiting for a resource Y, which is held by T2. T2 is waiting for resource Z, which is held by T0. Thus, all the processes wait for each other to release resources. In this situation, none of the processes can finish their task. This situation is known as a deadlock.
Deadlocks are not healthy for a system. In case a system is stuck in a deadlock, the transactions involved in the deadlock are either rolled back or restarted.
Deadlock Prevention
To prevent any deadlock situation in the system, the DBMS aggressively inspects all the operations, where transactions are about to execute. The DBMS inspects the operations and analyzes if they can create a deadlock situation. If it finds that a deadlock situation might occur, then that transaction is never allowed to be executed.
มีรูปแบบการป้องกันการหยุดชะงักที่ใช้กลไกการสั่งซื้อการประทับเวลาของธุรกรรมเพื่อกำหนดสถานการณ์การชะงักงันไว้ล่วงหน้า
โครงการ Wait-Die
ในโครงร่างนี้หากธุรกรรมร้องขอให้ล็อกทรัพยากร (รายการข้อมูล) ซึ่งถูกระงับไว้แล้วโดยธุรกรรมอื่นมีการล็อกที่ขัดแย้งกันอาจเกิดความเป็นไปได้อย่างใดอย่างหนึ่ง -
ถ้า TS (T i ) <TS (T j ) - นั่นคือ T iซึ่งกำลังร้องขอการล็อกที่ขัดแย้งกันนั้นเก่ากว่า T j - ดังนั้น T iจะได้รับอนุญาตให้รอจนกว่ารายการข้อมูลจะพร้อมใช้งาน
ถ้า TS (T i )> TS (t j ) - นั่นคือ T iอายุน้อยกว่า T j - ดังนั้น T ฉันก็ตาย T iจะเริ่มต้นใหม่ในภายหลังโดยมีการหน่วงเวลาแบบสุ่ม แต่มีการประทับเวลาเดียวกัน
โครงการนี้ช่วยให้ธุรกรรมที่เก่ากว่ารอได้ แต่ฆ่าคนที่อายุน้อยกว่า
โครงการ Wound-Wait
ในโครงร่างนี้หากธุรกรรมร้องขอให้ล็อกทรัพยากร (รายการข้อมูล) ซึ่งมีการล็อกที่ขัดแย้งกันโดยธุรกรรมอื่นอาจเกิดความเป็นไปได้อย่างใดอย่างหนึ่ง -
หาก TS (T ฉัน ) <TS (T J ) แล้ว T ฉันบังคับ T Jที่จะรีดกลับ - นั่นคือ T ฉันบาดแผล T J T jจะเริ่มต้นใหม่ในภายหลังโดยมีการหน่วงเวลาแบบสุ่ม แต่มีการประทับเวลาเดียวกัน
ถ้า TS (T i )> TS (T j ) ดังนั้น T iจะถูกบังคับให้รอจนกว่าทรัพยากรจะพร้อมใช้งาน
โครงการนี้ช่วยให้ธุรกรรมที่อายุน้อยกว่ารอได้ แต่เมื่อธุรกรรมที่เก่ากว่าร้องขอรายการที่ถือโดยผู้ที่อายุน้อยกว่าธุรกรรมที่เก่ากว่าจะบังคับให้ผู้ที่อายุน้อยกว่ายกเลิกและปล่อยรายการนั้น
ในทั้งสองกรณีธุรกรรมที่เข้าสู่ระบบในระยะต่อมาจะถูกยกเลิก
หลีกเลี่ยงการหยุดชะงัก
การยกเลิกธุรกรรมไม่ใช่แนวทางปฏิบัติเสมอไป กลไกการหลีกเลี่ยงการหยุดชะงักสามารถใช้เพื่อตรวจจับสถานการณ์การหยุดชะงักล่วงหน้าได้ มีวิธีการเช่น "wait-for graph" แต่เหมาะสำหรับระบบที่ธุรกรรมมีน้ำหนักเบาและมีทรัพยากรน้อยกว่า ในระบบขนาดใหญ่เทคนิคการป้องกันการหยุดชะงักอาจทำงานได้ดี
รอกราฟ
นี่เป็นวิธีการง่ายๆในการติดตามว่าสถานการณ์การหยุดชะงักใด ๆ อาจเกิดขึ้น สำหรับแต่ละธุรกรรมที่เข้าสู่ระบบโหนดจะถูกสร้างขึ้น เมื่อมีการทำธุรกรรม T ฉันขอล็อคในรายการพูด X ซึ่งจะจัดขึ้นโดยบางส่วนอื่น ๆ การทำธุรกรรม T J , ขอบกำกับถูกสร้างขึ้นจาก T ฉันทีเจ หาก T jเผยแพร่รายการ X ขอบระหว่างรายการเหล่านั้นจะหลุดออกและ T i จะล็อกรายการข้อมูล
ระบบจะเก็บรักษากราฟการรอสำหรับทุกธุรกรรมที่รอรายการข้อมูลบางอย่างที่ผู้อื่นถือไว้ ระบบจะตรวจสอบว่ามีวัฏจักรใด ๆ ในกราฟหรือไม่
ที่นี่เราสามารถใช้สองวิธีต่อไปนี้ -
ขั้นแรกไม่อนุญาตให้มีการร้องขอรายการใด ๆ ซึ่งถูกล็อกโดยธุรกรรมอื่นแล้ว สิ่งนี้ไม่เป็นไปได้เสมอไปและอาจทำให้เกิดความอดอยากซึ่งธุรกรรมจะรอรายการข้อมูลอย่างไม่มีกำหนดและไม่สามารถรับรายการข้อมูลนั้นได้
ตัวเลือกที่สองคือการย้อนกลับรายการใดรายการหนึ่ง ไม่สามารถย้อนกลับธุรกรรมที่มีอายุน้อยกว่าได้เสมอไปเนื่องจากอาจมีความสำคัญมากกว่าธุรกรรมที่เก่ากว่า ด้วยความช่วยเหลือของอัลกอริทึมสัมพัทธ์บางธุรกรรมจะถูกเลือกซึ่งจะถูกยกเลิก ธุรกรรมนี้เรียกว่าvictim และกระบวนการนี้เรียกว่า victim selection.
การสูญเสียพื้นที่เก็บข้อมูลที่ระเหยได้
ที่เก็บข้อมูลที่เปลี่ยนแปลงได้เช่น RAM จะเก็บบันทึกที่ใช้งานอยู่บัฟเฟอร์ดิสก์และข้อมูลที่เกี่ยวข้องทั้งหมด นอกจากนี้ยังจัดเก็บธุรกรรมทั้งหมดที่กำลังดำเนินการอยู่ จะเกิดอะไรขึ้นหากพื้นที่จัดเก็บข้อมูลระเหยดังกล่าวขัดข้องทันที เห็นได้ชัดว่าจะนำบันทึกและสำเนาที่ใช้งานอยู่ทั้งหมดของฐานข้อมูลออกไป ทำให้การกู้คืนแทบเป็นไปไม่ได้เนื่องจากทุกสิ่งที่จำเป็นในการกู้คืนข้อมูลจะสูญหายไป
อาจนำเทคนิคต่อไปนี้มาใช้ในกรณีที่สูญเสียพื้นที่เก็บข้อมูลที่ระเหยได้ -
เราสามารถมี checkpoints ในหลายขั้นตอนเพื่อบันทึกเนื้อหาของฐานข้อมูลเป็นระยะ
สถานะของฐานข้อมูลที่ใช้งานอยู่ในหน่วยความจำระเหยสามารถเป็นระยะ ๆ dumped ไปยังที่เก็บข้อมูลที่เสถียรซึ่งอาจมีบันทึกและธุรกรรมที่ใช้งานอยู่และบล็อกบัฟเฟอร์
<dump> สามารถทำเครื่องหมายบนไฟล์บันทึกเมื่อใดก็ตามที่เนื้อหาฐานข้อมูลถูกทิ้งจากหน่วยความจำที่ไม่ลบเลือนไปยังหน่วยความจำที่เสถียร
การกู้คืน
เมื่อระบบกู้คืนจากความล้มเหลวระบบจะคืนค่าดัมพ์ล่าสุดได้
สามารถรักษารายการที่ทำซ้ำและยกเลิกรายการเป็นจุดตรวจได้
สามารถกู้คืนระบบได้โดยปรึกษารายการเลิกทำซ้ำเพื่อกู้คืนสถานะของธุรกรรมทั้งหมดจนถึงจุดตรวจสุดท้าย
การสำรองฐานข้อมูลและการกู้คืนจากความล้มเหลวของภัยพิบัติ
ความล้มเหลวอย่างรุนแรงคือสิ่งหนึ่งที่ทำให้อุปกรณ์จัดเก็บข้อมูลสำรองที่มีความเสถียรเสียหาย ด้วยอุปกรณ์จัดเก็บข้อมูลที่มีค่าทั้งหมดที่เก็บไว้ภายในจะสูญหายไป เรามีสองกลยุทธ์ที่แตกต่างกันในการกู้คืนข้อมูลจากความล้มเหลวที่ร้ายแรงดังกล่าว -
การสำรองข้อมูลระยะไกล & minu; ที่นี่สำเนาสำรองของฐานข้อมูลจะถูกเก็บไว้ในตำแหน่งที่ห่างไกลซึ่งสามารถเรียกคืนได้ในกรณีที่เกิดภัยพิบัติ
อีกวิธีหนึ่งคือการสำรองฐานข้อมูลโดยใช้เทปแม่เหล็กและเก็บไว้ในที่ที่ปลอดภัยกว่า ข้อมูลสำรองนี้สามารถถ่ายโอนไปยังฐานข้อมูลที่ติดตั้งใหม่ในภายหลังเพื่อนำไปสำรอง
ฐานข้อมูลที่เติบโตขึ้นมีขนาดใหญ่เกินกว่าที่จะสำรองข้อมูลบ่อยๆ ในกรณีเช่นนี้เรามีเทคนิคที่เราสามารถกู้คืนฐานข้อมูลได้เพียงแค่ดูบันทึก ดังนั้นสิ่งที่เราต้องทำต่อไปนี้คือการสำรองข้อมูลบันทึกทั้งหมดเป็นระยะ ๆ ฐานข้อมูลสามารถสำรองได้สัปดาห์ละครั้งและสามารถสำรองข้อมูลบันทึกที่มีขนาดเล็กมากได้ทุกวันหรือบ่อยที่สุด
การสำรองข้อมูลระยะไกล
การสำรองข้อมูลระยะไกลให้ความปลอดภัยในกรณีที่ตำแหน่งหลักที่ฐานข้อมูลตั้งอยู่ถูกทำลาย การสำรองข้อมูลระยะไกลสามารถออฟไลน์หรือเรียลไทม์หรือออนไลน์ ในกรณีที่ออฟไลน์ระบบจะดูแลด้วยตนเอง
ระบบสำรองข้อมูลออนไลน์เป็นแบบเรียลไทม์และช่วยชีวิตสำหรับผู้ดูแลระบบฐานข้อมูลและนักลงทุน ระบบสำรองข้อมูลออนไลน์เป็นกลไกที่สำรองข้อมูลแบบเรียลไทม์ทุกบิตพร้อมกันในสถานที่ห่างไกลสองแห่ง หนึ่งในนั้นเชื่อมต่อโดยตรงกับระบบและอีกระบบหนึ่งจะถูกเก็บไว้ในที่ห่างไกลเพื่อเป็นข้อมูลสำรอง
ทันทีที่การจัดเก็บฐานข้อมูลหลักล้มเหลวระบบสำรองข้อมูลจะตรวจจับความล้มเหลวและเปลี่ยนระบบผู้ใช้ไปยังที่เก็บข้อมูลระยะไกล บางครั้งสิ่งนี้ก็เกิดขึ้นทันทีที่ผู้ใช้ไม่สามารถตระหนักถึงความล้มเหลวได้
การกู้คืนความผิดพลาด
DBMS เป็นระบบที่มีความซับซ้อนสูงโดยมีธุรกรรมหลายร้อยรายการที่ดำเนินการทุกวินาที ความทนทานและความแข็งแกร่งของ DBMS ขึ้นอยู่กับสถาปัตยกรรมที่ซับซ้อนรวมถึงฮาร์ดแวร์และซอฟต์แวร์ระบบพื้นฐาน หากล้มเหลวหรือขัดข้องระหว่างการทำธุรกรรมคาดว่าระบบจะทำตามขั้นตอนวิธีหรือเทคนิคบางอย่างเพื่อกู้คืนข้อมูลที่สูญหาย
การจำแนกความล้มเหลว
เพื่อดูว่าปัญหาเกิดขึ้นที่ใดเราสรุปความล้มเหลวเป็นหมวดหมู่ต่างๆดังนี้ -
การทำธุรกรรมล้มเหลว
ธุรกรรมต้องยกเลิกเมื่อดำเนินการไม่สำเร็จหรือเมื่อถึงจุดที่ไม่สามารถดำเนินการต่อไปได้อีก สิ่งนี้เรียกว่าความล้มเหลวในการทำธุรกรรมซึ่งมีการทำธุรกรรมหรือกระบวนการเพียงเล็กน้อยเท่านั้น
สาเหตุของความล้มเหลวในการทำธุรกรรมอาจเป็น -
Logical errors - ในกรณีที่ธุรกรรมไม่สามารถดำเนินการให้เสร็จสมบูรณ์ได้เนื่องจากมีข้อผิดพลาดของรหัสหรือเงื่อนไขข้อผิดพลาดภายใน
System errors- ในกรณีที่ระบบฐานข้อมูลยุติธุรกรรมที่ใช้งานอยู่เนื่องจาก DBMS ไม่สามารถดำเนินการได้หรือต้องหยุดทำงานเนื่องจากเงื่อนไขบางประการของระบบ ตัวอย่างเช่นในกรณีของการชะงักงันหรือทรัพยากรไม่พร้อมใช้งานระบบจะยกเลิกธุรกรรมที่ใช้งานอยู่
ระบบขัดข้อง
มีปัญหา - ภายนอกระบบ - ที่อาจทำให้ระบบหยุดกะทันหันและทำให้ระบบล่ม ตัวอย่างเช่นการหยุดชะงักของแหล่งจ่ายไฟอาจทำให้เกิดความล้มเหลวของฮาร์ดแวร์หรือซอฟต์แวร์ที่ใช้งานอยู่
ตัวอย่างอาจรวมถึงข้อผิดพลาดของระบบปฏิบัติการ
ดิสก์ล้มเหลว
ในยุคแรก ๆ ของวิวัฒนาการของเทคโนโลยีเป็นปัญหาทั่วไปที่ฮาร์ดดิสก์ไดรฟ์หรือไดรฟ์จัดเก็บมักจะล้มเหลวบ่อยครั้ง
ความล้มเหลวของดิสก์รวมถึงการก่อตัวของเซกเตอร์เสียการไม่สามารถเข้าถึงดิสก์ได้ความผิดพลาดของหัวดิสก์หรือความล้มเหลวอื่น ๆ ซึ่งทำลายพื้นที่จัดเก็บดิสก์ทั้งหมดหรือบางส่วน
โครงสร้างการจัดเก็บ
เราได้อธิบายระบบจัดเก็บข้อมูลไว้แล้ว โดยสรุปโครงสร้างการจัดเก็บสามารถแบ่งออกเป็นสองประเภท -
Volatile storage- ตามชื่อที่แนะนำพื้นที่จัดเก็บข้อมูลแบบระเหยไม่สามารถอยู่รอดระบบล่มได้ อุปกรณ์จัดเก็บข้อมูลแบบระเหยวางอยู่ใกล้กับ CPU มาก โดยปกติจะฝังอยู่บนชิปเซ็ตเอง ตัวอย่างเช่นหน่วยความจำหลักและหน่วยความจำแคชเป็นตัวอย่างของหน่วยเก็บข้อมูลที่ระเหยได้ รวดเร็ว แต่สามารถจัดเก็บข้อมูลได้เพียงเล็กน้อย
Non-volatile storage- ความทรงจำเหล่านี้สร้างขึ้นเพื่อเอาตัวรอดจากระบบล่ม มีความจุข้อมูลมาก แต่เข้าถึงได้ช้ากว่า ตัวอย่างอาจรวมถึงฮาร์ดดิสก์เทปแม่เหล็กหน่วยความจำแฟลชและแรมที่ไม่ลบเลือน (สำรองแบตเตอรี่)
การฟื้นตัวและปรมาณู
เมื่อระบบขัดข้องระบบอาจมีการดำเนินการธุรกรรมหลายรายการและมีการเปิดไฟล์ต่าง ๆ เพื่อให้แก้ไขรายการข้อมูล ธุรกรรมเกิดจากการดำเนินการต่างๆซึ่งมีลักษณะเป็นปรมาณู แต่ตามคุณสมบัติ ACID ของ DBMS ต้องรักษาระดับอะตอมของธุรกรรมโดยรวมนั่นคือการดำเนินการทั้งหมดจะถูกดำเนินการหรือไม่มีเลย
เมื่อ DBMS กู้คืนจากความผิดพลาดควรรักษาสิ่งต่อไปนี้ -
ควรตรวจสอบสถานะของธุรกรรมทั้งหมดที่กำลังดำเนินการ
ธุรกรรมอาจอยู่ระหว่างการดำเนินการบางอย่าง DBMS ต้องตรวจสอบความเป็นอะตอมของธุรกรรมในกรณีนี้
ควรตรวจสอบว่าธุรกรรมสามารถดำเนินการได้ในขณะนี้หรือจำเป็นต้องย้อนกลับ
ไม่มีธุรกรรมใดที่ได้รับอนุญาตให้ออกจาก DBMS ในสถานะที่ไม่สอดคล้องกัน
มีเทคนิคสองประเภทซึ่งสามารถช่วย DBMS ในการกู้คืนและรักษาระดับอะตอมของธุรกรรม -
การดูแลรักษาบันทึกของแต่ละธุรกรรมและเขียนลงในหน่วยเก็บข้อมูลที่มีเสถียรภาพก่อนที่จะแก้ไขฐานข้อมูลจริง
การรักษาการเพจเงาโดยที่การเปลี่ยนแปลงจะทำบนหน่วยความจำที่ลบเลือนและในภายหลังฐานข้อมูลจริงจะถูกอัพเดต
การกู้คืนตามบันทึก
บันทึกคือลำดับของเร็กคอร์ดซึ่งเก็บรักษาบันทึกของการดำเนินการโดยธุรกรรม สิ่งสำคัญคือต้องเขียนบันทึกก่อนการแก้ไขจริงและจัดเก็บไว้ในสื่อบันทึกข้อมูลที่มีเสถียรภาพซึ่งไม่ปลอดภัย
การกู้คืนตามบันทึกทำงานดังนี้ -
ไฟล์บันทึกจะถูกเก็บไว้ในสื่อบันทึกข้อมูลที่เสถียร
เมื่อธุรกรรมเข้าสู่ระบบและเริ่มดำเนินการระบบจะเขียนบันทึกเกี่ยวกับมัน
<Tn, Start>
เมื่อธุรกรรมแก้ไขรายการ X จะเขียนบันทึกดังนี้ -
<Tn, X, V1, V2>
มันอ่าน T nมีการเปลี่ยนแปลงค่าของ X จาก V 1เพื่อ V 2
- เมื่อธุรกรรมเสร็จสิ้นระบบจะบันทึก -
<Tn, commit>
ฐานข้อมูลสามารถแก้ไขได้โดยใช้สองวิธี -
Deferred database modification - บันทึกทั้งหมดถูกเขียนลงในที่จัดเก็บที่เสถียรและฐานข้อมูลจะได้รับการอัปเดตเมื่อมีการทำธุรกรรม
Immediate database modification- แต่ละบันทึกเป็นไปตามการแก้ไขฐานข้อมูลจริง นั่นคือฐานข้อมูลจะถูกแก้ไขทันทีหลังจากการดำเนินการทุกครั้ง
การกู้คืนด้วยธุรกรรมพร้อมกัน
เมื่อมีการดำเนินการธุรกรรมมากกว่าหนึ่งรายการพร้อมกันบันทึกจะถูกแทรกสลับกัน ในช่วงเวลาของการกู้คืนระบบการกู้คืนจะยากที่จะย้อนกลับบันทึกทั้งหมดจากนั้นจึงเริ่มการกู้คืน เพื่อบรรเทาสถานการณ์นี้ DBMS สมัยใหม่ส่วนใหญ่ใช้แนวคิดของ 'จุดตรวจ'
ด่าน
การเก็บและดูแลบันทึกแบบเรียลไทม์และในสภาพแวดล้อมจริงอาจเติมเต็มพื้นที่หน่วยความจำทั้งหมดที่มีอยู่ในระบบ เมื่อเวลาผ่านไปไฟล์บันทึกอาจมีขนาดใหญ่เกินกว่าจะจัดการได้เลย Checkpoint เป็นกลไกที่บันทึกก่อนหน้านี้ทั้งหมดจะถูกลบออกจากระบบและจัดเก็บอย่างถาวรในดิสก์เก็บข้อมูล Checkpoint ประกาศจุดก่อนหน้าที่ DBMS อยู่ในสถานะที่สอดคล้องกันและธุรกรรมทั้งหมดได้รับการยอมรับ
การกู้คืน
เมื่อระบบที่มีธุรกรรมพร้อมกันเกิดปัญหาและกู้คืนระบบจะทำงานในลักษณะต่อไปนี้ -
ระบบการกู้คืนจะอ่านบันทึกย้อนหลังจากจุดสิ้นสุดจนถึงจุดตรวจสุดท้าย
มันมีสองรายการคือยกเลิกรายการและทำซ้ำรายการ
หากระบบการกู้คืนเห็นบันทึกที่มี <T n , Start> และ <T n , Commit> หรือเพียงแค่ <T n , Commit> ระบบจะทำให้ธุรกรรมนั้นอยู่ในรายการทำซ้ำ
หากระบบการกู้คืนเห็นบันทึกที่มี <T n , Start> แต่ไม่พบบันทึกการคอมมิตหรือยกเลิกระบบจะทำให้ธุรกรรมนั้นอยู่ในรายการเลิกทำ
ธุรกรรมทั้งหมดในรายการเลิกทำจะถูกยกเลิกและบันทึกจะถูกลบออก ธุรกรรมทั้งหมดในรายการทำซ้ำและบันทึกก่อนหน้าจะถูกลบออกแล้วทำใหม่ก่อนบันทึกบันทึก