Lƣợc đồ quanhệ tổng quát

Một phần của tài liệu Chuyển đổi dữ liệu giữa XML và cơ sở dữ liệu quan hệ (Trang 83)

Mở rộng cho trường hợp tổng quát gồm nhiều bảng được kết nối bởi phụ thuộc bao hàm. Xét lược đồ gồm một tập các bảng {t1, t2,…, tn } và các INDs ti [i]

ti [i], trong đó i,j n. Chúng ta chỉ xét những IDs là các ràng buộc khóa ngoại (j là khoá chính của bảng tj) và i không rỗng. Khi đó mối quan hệ giữa các bảng được mô tả bởi đồ thị phụ thuộc bao hàm (IDs-Graph).

Định nghĩa 2.9 (IDs- Graph)

Một đồ thị phụ thuộc bao hàm G = (V, E) gồm một tập các nút V và một tập các cạnh có hướng E, sao cho mỗi bảng ti tồn tại một nút Vi V, và mỗi IDs ti []tj [] phân biệt tồn tại tj -> ti trong G.

Khi IDs-Graph được xây dựng, CoT cần xác định điểm bắt đầu để áp dụng các qui tắc chuyển đổi. Một phần tử được gọi là nút gốc nếu nó không là phần tử con của bất kỳ phần tử nào khác. Nút gốc được xác định như sau:

1) Một phẩn tử s là nút gốc nếu không tồn tại phần tử t (t ≠ s) có IDs dạng s[α] t[β] và α không null.

2) Xét một tập các phần tử S = {s1, s2, ..., sk }có dạng là một tập chu trình của IDs và không có một phần tử nào trong S là nút gốc. Giả sử không tồn tại phần tử t  S sao cho có một IDs dạng si[α]  t[β] và α không null thì ta chọn bất kỳ một phần tử trong S làm nút gốc.

Cho T là một tập các nút gốc, CoT dùng BFS - tìm kiếm theo chiều rộng - để duyệt G cho đến khi tất cả các nút và các cạnh được xét. Các IDs được mô tả như các phần tử con (nếu nút đó được xét lần đầu tiên), hoặc các thuộc tính tham chiếu (IDREF) (nếu nó đã được xét lần sau). Thuật toán CoT như sau:

1) CoT: R = (T, C, P, )  X = (E, A, M, P, r, )

2) Xây dựng đồ thị phụ thuộc hàm G = (V, E) từ IDs đã cho. Xác định T là tập các nút gốc. Đặt S = T để lưu vết của các nút gốc và những nút con.

3) Với mỗi nút gốc ti T, thực hiện tìm kiếm theo chiều rộng. Giả sử ta thu được nút w từ v (nghĩa là quanhệ bao hàm: w[α]  v [β] ký hiệu là C(w)=Cw và C(v) = Cv.

(a) Nếu w  S (nghĩa là w không phải là một phần tử con của bất kỳ nút nào) thì chuyển đổi quan hệ bao hàm như phần 2.2.3.1.

i) Nếu α duy nhất thì M(v) = (Cv, w?)

ii) Nếu α không duy nhất thì M(v) = (Cv, w*)

iii) M(w) = (Cw - α)

iv) S = S  w

(b) Nếu w  S (tức w là một phần tử con của một nút nào đó) thì chuyển quan hệ bao hàm IDs thành thuộc tính IDREF như trong phần định nghĩa 2.2.3.2.

i) A(v) = {ID_v}, A(w) = {Ref_v}, M(v) = (Cv);

ii) M(w) = (Cw- α ),  = K'w key w

4) Sao chép giữ nguyên ràng buộc toàn vẹn từ  tới  , và r = T.

Ví dụ 2.16: Cho lược đồ như sau:

SinhVien(svID, tensv, ngươiHD) NhanVien(nvID,ten, tenDA) GiaoVien(nvID, ten, khoaDay) KhoaHoc(khID,tenKhoa, phong) KhoaBM(soKhoaBM, nguoiQL) DuAn(tenDuAn,nguoiQLDA) SinhVien(svID,  GiaoVien(nvID) NhanVien(tenDA) DuAn(tenDuAn) GiaoVien(khoaDay)  KhoaHoc(khID) GiaoVien(nvID, ten)  NhanVien(nvID,ten) KhoaBM(nguoiQL)  NhanVien (nvID) DuAn(nguoiQLDA)  NhanVien (nvID)

Hình 2.13: IDs-Graph biểu diễn lược đồ ở bảng 2.15

Ví dụ 2.17. Xét một lược đồ cùng các IDs của nó trong bảng 2.15 IDs- Graph trong hình 2.13 gồm 2 nút gốc: 1) KhoaHoc: vì không tồn tại nút t có IDs dạng KhoaHoc [α ]  t[β]; và 2) NhanVien: vì có chu trình là một tập IDs (NhanVien và DuAn) nhưng không tồn tại nút t ngoài chu trình có IDs theo dạng NhanVien [α ]  t[β ] hoặc DuAn[α ]  t[β].

M(KhoaHoc) = (khID, tenKhoa, phong, GiaoVien*) (1)

M(GiaoVien) = (nvID,ten) (2)

M(GiaoVien)=(nvID, ten, SinhVien*); (3)

M(SinhVien)= (svID, ten) (4)

M(SinhVien) = (nvID, ten, tenDA, KhoaBM*) (5)

M(KhoaBM) = (soKhoaBM) (6)

M(GiaoVien) = (SinhVien*) (7)

A(NhanVien) = {nvID} và A(GiaoVien) = {Ref_NhanVien} (8)

 = {Ref_NhanVien key GiaoVien}

SinhVien GiaoVien KhoaBM DuAn NhanVien KhoaHoc

M(NhanVien) = (nvID, ten, tenDA, KhoaBM*, DuAn*) (10)

M(DuAn) = (tenDuAn) (11)

M(NhanVien) = (nvID, ten, KhoaBM*, DuAn*) (12)

A(DuAn) = {ID_DuAn}, A(NhanVien) = {Ref_DuAn} (13)

Kết quả lược đồ XSchema là: (1)(2)(4)(6)(7)(8)(9)(11)(12)(13).

Thực tế trong thuật toán CoT có những thao tác con người có thể đưa ra những ánh xạ tốt tuỳ theo ngữ nghĩa và tuỳ thuộc vào mục đích dùng làm dữ liệu hay dùng cho ứng dụng. Do đó, thuật toán CoT có thể xem là một trong những cách để chuyển đổi từ RDB sang XML.

KẾT LUẬN

Các thuật toán gộp cơ sở, gộp chia sẻ, gộp cải tiến là những thuật toán cơ bản có thẻ mô tả được cấu trúc của lược đồ gốc, nhưng chúng chỉ tập trung vào mức độ thuộc tính và mức giá trị của lược đồ trong quá trình chuyển đổi. Do đó các thuật toán này chưa đáp ứng được đầy đủ cho quá trình chuyển đổi dữ liệu. Tuy nhiên, chúng có thể dùng làm nền tảng cho các thuật toán cao hơn như thuật toán XInsert hay thuật toán CPI. CPI được sự hỗ trợ của thuật toán cao hơn như thuật toán gộp lai ghép - đây là sự kết hợp của thuật toán gộp cơ sở và gộp chia sẻ - cho quá trình chuyển đổi lược đồ.

Thuật toán CPI là một phương thức có thể khai thác các ràng buộc ngữ nghĩa ẩn đằng sau các DTD và có thể chuyển các ràng buộc đó sang các định dạng quan hệ. Ưu điểm của CPI là vẫn duy trì được những ràng buộc về mặt ngữ nghĩa của lược đồ gốc khi chuyển đổi dữ liệu từ lược đồ XML sang lược đồ quan hệ.

Thuật toán FT ánh xạ mô hình quan hệ phẳng sang mô hình XML phẳng theo kiểu 1-1. FT không sử dụng các biểu thức toán tử "*", "+" như đã

được hỗ trợ trong mô hình XML. Nhưng thuật toán NeT đã được giải quyết được những hạn chế của FT. NeT sử dụng toán tử lồng để có được cấu trúc lồng từ mô hình quan hệ phẳng, do đó lược đồ XML trở nên trực quan và ngắn gọn hơn. Tuy nhiên, NeT chỉ áp dụng tốt cho từng bảng một, vì vậy không thể mô tả được đầy đủ toàn bộ lược đồ quan hệ có nhiều bảng kết nối với nhau. Thuật toán CoT có thể bảo toàn được các ràng buộc toàn vẹn và bảo đảm được ngữ nghĩa của lược đồ quan hệ. CoT có thể sinh lược đồ kết quả tốt hơn NeT.

Chƣơng III: CHƢƠNG TRÌNH ỨNG DỤNG

3.1 THUẬT TOÁN GỘP CẢI TIẾN VÀ XINSERT 3.1.1 Mô tả bài toán

Một phần của tài liệu Chuyển đổi dữ liệu giữa XML và cơ sở dữ liệu quan hệ (Trang 83)

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

(100 trang)