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


13

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

ฉันสมมติว่า RDBMS ไม่มีคุณสมบัติพิเศษในการจัดการนอกเหนือจาก SQL ANSI ปกติหรือคุณสมบัติทั่วไปที่มีอยู่

มีข้อสงสัยฉันสนใจ MySQL และ PostgreSQL เสมอและในที่สุด SQLite

คำตอบ:


8

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

ie- (pseudocode มาก)

TABLE tree
int         id                  autoinc
varchar(16) data_you_care_about
int         parent_id
int         left_child_id
int         right_child_id

FOREIGN KEY parent_id = tree.id
FOREIGN KEY left_child_id = tree.id
FOREIGN KEY right_child_id = tree.id

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

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

แน่นอนมันขึ้นอยู่กับรุ่นพื้นฐาน ฉันคิดว่าคำตอบที่ได้รับจาก Patrick นั้นเพียงพอหากเป็นแบบอย่างที่ถูกต้อง
jcolebrand

6

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.