Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

โมเดลฐานข้อมูลแบบลำดับชั้น


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

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

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

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

โมเดลฐานข้อมูลแบบลำดับชั้น

ฐานข้อมูลตัวแทน

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

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

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

ข้อดี

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

ข้อเสีย

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

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

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

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

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

โมเดลฐานข้อมูลแบบลำดับชั้น

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

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

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