Chỉ mục trong cơ sở dữ liệu

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 44 - 45)

Trong cơ sở dữ liệu Tin, các đối tượng cơ sở là đỉnh và tam giác, trong đó yêu cầu truy vấn các tam giác có phần nhiều yêu cầu truy vấn các đỉnh do đó ta cần xây dựng một cây chỉ mục dùng chung cho cả hai loại đối tượng này.

Qua tìm hiểu họ cây R, ta chọn cấu trúc của cây X-Tree để xây dựng cây chỉ mục cho cơ sở dữ liệu Tin. Do những hạn chế về thời gian, chúng tôi không thể hiện thực đầu

đủ lớp cây X-Tree (cụ thể là không có split-history), mà chỉ xây dựng lớp cây tương tự

dựa trên cấu trúc và một số giải thuật của cây X-Tree, ta tạm gọi đó là cây G-Tree để phân biệt với các cây khác trong họ R-Tree..

a. Giải thuật chèn.

Giải thuật chèn một phần tử vào X-Tree là tương tự nhau đối với họ cây họ R-Tree.

Sau đây là giải thuật chèn một phần tử vào cây G-Tree ở dirnode, giải thuật này hơn khác với giải thuật chuNn của X-Tree để phù hợp với cấu trúc của G-Tree. Giải thuật

chèn phần tử của datanode cũng tương tự.

INSFLAG XDirNode::Insert(OBJ Obj, REGION& mbr, XNode** slibing)

{

XMBRSet s1, s2;

XNode *follow, *new_son;

int follow_idx;

INSFLAG return_value;

follow = ChooseSubTree(mbr,follow_idx);

return_value = follow->Insert(Obj, mbr , &new_son);

UpdateMBR(follow_idx,follow->calc_mbr());

if (return_value == IF_SPLIT) {

add_mbr(mbr,new_son);

if (num_of_mbrs() > CAPACITY ) { // overflow occur if (Split(s1,s2)==true) {

set_mbrs(s1);

Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.

(*slibing)->set_mbrs(s2);

return IF_SPLIT;

}

else {

// Nod grow up e to supernode m_mbrs.capacity += PAGESIZE;

} }

};

} return IF_OK;

b. Giải thuật xóa

Để xóa một phần tử ra khỏi cây, việc đầu tiên là xác dịnh datanode chứa nó. Sau khi

loại bỏ phần tử này ra khỏi node, nếu số phần tử của datanode nhỏ hơn một giá trị nào

đó (MIN_FANOUT) thì ta cần phải xóa datanode này, các phần tử khác sẽ được chèn

lại vào cây để đảm bảo tính cân bằng của cây.

c. Giải thuật tách node. d. Giải thuật search.

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 44 - 45)

Tải bản đầy đủ (PDF)

(117 trang)