CHUYỂN ĐỔI DỮ LIỆU TỪ XML SANG CƠ SỞ DỮ LIỆU QUAN HỆ Ths. Nguyễn Thị Mỹ Truyền TÓM TẮT Quá trình chuyển đổi từ XML sang CSDL quan hệ có tính phức tạp bởi đặc tính phân cấp của tài liệu XML và tính chặt chẽ về cấu trúc của DTD. Do đó với mong muốn quá trình chuyển đổi có thể thực hiện tự động và đạt hiệu quả cao, ta có thể dùng hai thuật toán New Inlining và XInsert để thực hiện quá trình chuyển đổi này. Thuật toán New Inlining chuyển từ lược đồ XML sang lược đồ CSDL quan hệ và thuật toán XInsert chuyển dữ liệu của tài liệu XML sang dữ liệu quan hệ. ABSTRACT Converting XML into Relational database is sophisticated because of strict and hierarchic characteristics of XML structure.Two following algorithms may give you a good translating method. The main purpose of New Inlining and XInsert algorithms help this process
Trang 1CHUYỂN ĐỔI DỮ LIỆU TỪ XML SANG CƠ SỞ DỮ LIỆU QUAN HỆ
Ths Nguyễn Thị Mỹ Truyền
TÓM TẮT
Quá trình chuyển đổi từ XML sang CSDL quan hệ có tính phức tạp bởi đặc tính phân cấp của tài liệu XML và tính chặt chẽ về cấu trúc của DTD Do đó với mong muốn quá trình chuyển đổi có thể thực hiện tự động và đạt hiệu quả cao, ta có thể dùng hai thuật toán New Inlining và XInsert để thực hiện quá trình chuyển đổi này Thuật toán New Inlining chuyển từ lược đồ XML sang lược đồ CSDL quan hệ và thuật toán XInsert chuyển dữ liệu của tài liệu XML sang dữ liệu quan hệ
ABSTRACT
Converting XML into Relational database is sophisticated because of strict and hierarchic characteristics of XML structure.Two following algorithms may give you a good translating method The main purpose of New Inlining and XInsert algorithms help this process become more automaticaly and effectively The New Inlining algorithm converts XML Schema into relational database schema Then, the XInsert algorithm maps data of XML document to relational database.
1 ĐẶT VẤN ĐỀ
Với mục đích phát huy tối đa tiềm năng và sức mạnh của Internet, W3C cho ra đời một ngôn ngữ mới, ngôn ngữ đánh dấu mở rộng XML XML được kết hợp bởi tính mềm dẻo của SGML và tính đơn giản của HTML Điểm nổi bậc của XML là nó được xây dựng theo cấu trúc phân cấp bằng các thẻ tự định nghĩa bởi người dùng theo đúng định chuẩn của W3C Ngày nay, XML đã trở thành chuẩn chính thức trên Internet và là công nghệ mới cho việc hiển thị, trao đổi, lưu trữ và truy xuất dữ liệu của World Wide Web
Mặc dù XML rất hiệu quả trong quá trình trao đổi, truy xuất trên Internet nhưng nó không thể có được những tính năng tuyệt vời của CSDL quan hệ như lưu trữ hiệu quả với dung lượng cực lớn, sao chép dự phòng, phục hồi dữ liệu, tối ưu hệ thống,… Do đó, nhu cầu chuyển đổi dữ liệu từ XML sang CSDL quan hệ là rất cần thiết khi lượng tài liệu XML ngày càng tăng
2 NỘI DUNG NGHIÊN CỨU
Theo chuẩn W3C, tài liệu XML (hình 2) phải được định nghĩa bởi DTD (hình 1) DTD mô tả cấu trúc các phần
tử, thuộc tính XML thông qua các phần tử con, toán tử và các ràng buộc về dữ liệu Vì vậy, quá trình chuyển đổi bao gồm hai tiến trình con (hình 3): Chuyển lược đồ DTD sang lược đồ quan hệ (thuật toán New Inlining) và chuyển dữ liệu XML sang dữ liệu quan hệ (thuật toán XInsert)
<!DOCTYPE univ [
<!ELEMENT univ (colleges, schools?)>
<!ATTLIST univ uName CDATA #REQUIRED>
<!ELEMENT colleges (college + )>
<!ELEMENT college (dep * )>
<!ATTLIST college cName CDATA #REQUIRED>
<!ELEMENT schools (school + )>
<!ELEMENT school (dep * )>
<!ATTLIST school sName CDATA #REQUIRED>
<!ELEMENT dep (tel?, fax?, website?)>
<!ATTLIST dep dName CDATA #REQUIRED>
<!ELEMENT tel (#PCDATA)>
<!ELEMENT fax (#PCDATA)>
<!ELEMENT website (#PCDATA)>
]>
<?xml version=”1.0”?>
<!DOCTYPE univ SYSTEM “univ.dtd”>
<univ uName=”WSU”>
<colleges>
<college cName=”Science”>
<dep dName=”CS”>
<website>www.cs.wayne.edu</website>
</dep>
</college>
<college cName=”Engineering”>
<dep dName=”ECE”>
<tel>313-5773920</tel>
</dep>
<dep dName=”IE”></dep>
</college>
<college cName=”Pharmacy”> </college>
</colleges>
</univ>
Hình 1: Định nghĩa kiểu tài liệu DTD
Hình 2: Tài liệu XML
Trang 22.1 Chuyển đổi lược đồ
Thuật toán New Inlining ánh xạ dữ liệu DTD sang lược đồ quan hệ gồm 3 bước: Đơn giản hóa DTD, tạo và giản lược đồ thị DTD, sinh lược đồ quan hệ
2.1.1 Đơn giản hoá DTD
Áp dụng các qui tắc sau đây một cách đệ qui để đơn giản hóa các toán tử +, ?, |, * trong định nghĩa DTD
1 e+ → e*
2 e? → e
3 (e1| e2 |…| en) →(e1, e2 ,…, en)
4 (a) (e1, e2 ,…, en)* → (e1*, e2* ,…, en*)
(b) e** →e*
5 (a) …, e,…,e,…→ …,e*,…
(b)…, e,…,e*,…→ …, e*,…
(c)…, e*,…,e,…→ …, e*,…
(d)…, e*,…,e*,…→ …e*,…
2.1.2 Tạo lập và giản lược đồ thị DTD bởi thuật toán Inline()
- Một đỉnh có thể gộp nếu và chỉ nếu nó có đúng một cạnh đi vào - tương ứng với một toán tử bộ (đỉnh b, d hình A)
- Đỉnh e và tất cả các đỉnh có thể gộp khác có thể đến được từ e bằng đúng một cạnh tạo thành cây thì cây đó là cây
có thể gộp đỉnh e (hình D có a,b,c,d là cây có thể gộp đỉnh a)
Ý tưởng của thuật toán New linining là sử dụng chiến lược tìm kiếm theo chiều sâu trên đồ thị DTD để xác định cây có thể gộp cho từng nút và cuối cùng gộp cây đó vào nút gốc của nó Độ phức tạp của thuật toán là O(n)
Thuật toán Inline(DTDGraph G)
Begin
For mỗi nút e trong G do
If not visited(e) then
InlineNode(e)
End If
End For
DTD
Lược đồ quan hệ
Chuyển
dữ liệu
Dữ liệu XML
Dữ liệu quan hệ
Các hàm ánh xạ lược đồ
Chuyển lược đồ
Hình 3: Quá trình chuyển đổi XML sang RDB
a, b
b *
*
c, d c
a b c e g
f d
a, b, c, d g
e, f D
Hình 4: Thao tác gộp C
Trang 3Thuật toán InlineNode(Node e)
Begin
Đánh dấu e là “visited”
For mỗi con c của e do
If not visited(c) then
InlineNode(c)
End If
End For
For mỗi con c của e do
If inlinable(c) then
e.inlinedSet U = c.inlinedSet;
chuyển tất cả các con của c thành con của e;
và xóa c trong G
End If
End For
End
2.1.3 Sinh lược đồ quan hệ
Mỗi nút e trên đồ thị sinh một quan hệ e có thuộc tính quan hệ sau:
1) ID là khóa chính, thuộc tính A của e sinh ra một thuộc tính quan hệ A tương ứng có cùng tên
2) Nếu |e.inlinedSet| ≥ 2 thì ta thêm thuộc tính nodetype
3) Tên các phần tử XML cuối (xem như nút lá) trong tập e.inlinedSet
4) Nếu có đúng một cạnh đơn từ e đến c thì ta thêm c.ID như là một khóa ngoại của e tham chiếu đến quan hệ c
5) Nếu ít nhất có 2 quan hệ dạng t1(ID) và t2(ID) thì kết hợp chúng thành một quan hệ đơn dạng table1(ID, nodetype)
6) Nếu có ít nhất 2 bộ t1(ID, t1) và t2(ID, t2) thì ta kết hợp chúng thành một quan hệ đơn table2(ID,nodetype, pcdata)
7) Nếu có ít nhất một cạnh “*” trong đồ thị giản lược DTD thì ta thêm quan hệ edge(parentID, childID, parentType, childType) để lưu trữ tất cả các quan hệ cha con tương ứng với những cạnh “*”
Lược đồ kết quả của DTD ở hình 1:
2.2 Chuyển đổi dữ liệu
Thuật toán XInsert cần dữ liệu đầu vào là lược đồ quan hệ (kết quả của thuật toán New Inlining), các hàm ánh xạ
và mô hình dữ liệu dựa trên mô hình DOM của W3C
Có 3 hàm ánh xạ:
σ(e): Ánh xạ phần tử DTD sang bảng quan hệ Ví dụ: σ(univ) = univ, σ(uName) = univ
θ(a): Ánh xạ thuộc tính XML sang thuộc tính quan hệ Ví dụ: θ(uName) = uName, θ(dName) = dName
δ(e): Ánh xạ phần tử nút lá sang thuộc tính quan hệ Ví dụ: δ(tel)=tel, δ(fax) = fax
Mô hình DOM: Mỗi nút e trên cây DOM có những tính chất sau: e.name, e.parent, e.children, e.attributes, e.value
univ (ID, nodeType, uName)
college (ID, cName)
school (ID, sName)
dep (ID, nodeType, dName, tel, fax, website)
edge (parentID, childID, parentType, childType)
Trang 4Ý tưởng của thuật toán XInsert:
- XInsert dùng 2 hàng đợi q, r để lưu các phần tử trên cây DOM Các phần tử không thể gộp được lưu vào q
- Dựa trên dữ liệu lưu trong hàng đợi và các hàm ánh xạ, XInsert tạo ra từng bộ dữ liệu và lần lượt đưa vào các bảng của lược đồ quan hệ
- Nếu quan hệ giữa hai phần tử là nhiều-nhiều thì những thông tin về mối quan hệ đó sẽ được lưu vào bảng edge
Độ phức tạp của thuật toán XInsert là O(n) với n là số phần tử XML và những thuộc tính trên cây T
(Chi tiết về thuật toán XInsert có thể tìm thấy trong tài liệu “Mapping XML Data to Relational Data: A DOM-BASED APPROACH”).
3 KẾT LUẬN
Có nhiều thuật toán hỗ trợ cho quá trình chuyển đổi dữ liệu giữa XML và CSDL quan hệ Hai thuật toán New Inlining và XInsert tương đối đơn giản và đáp ứng được phần lớn các yêu cầu trong quá trình chuyển đổi về mặt dữ liệu Bên cạnh đó có những thuật toán chuyển đổi có thể bảo toàn các ràng buộc ngữ nghĩa của lược đồ gốc hoặc chuyển đổi theo chiều ngược lại (CPI, NeT, CoT,…)
Danh mục các từ viết tắt
DOM Document Object Model
DTD Document Type Definition
RDB Relational Database
SGML Standard Generalized Markup Language
XML eXtensible Markup Language
W3C World Wide Web Consortium
Tài liệu tham khảo
Hồ Thuần, Hồ Cẩm Hà (2004), Các hệ cơ sở dữ liệu lí thuyết và thực hành (tập một), nhà xuất bản Giáo Dục.
Lê Tiến Vương (2000), Nhập môn cơ sở dữ liệu quan hệ, nhà xuất bản Thống Kê.
univ(uName=”WSU”) colleges college(cName=”Engineering”) college(cName=”Pharmacy”) college(cName=”Science”)
dep(dName=”ECE”) dep(dName=”IE”) dep(dName=”CS”)
Tel(”313-5773920”) website(”www.cs.waync.edu”)
Hình 5: Xây dựng cây DOM từ tài liệu XML hình 2
Edge ParentID childID parentType childType
3 7 college dep
School
ID sName
Univ
ID nodeType uName
1 univ WSU
College
ID cName
2 Science
3 Engineering
4 Pharmacy Hình 6: CSDL sau khi lưu trữ univ.xml
Dep
ID nodeType dName tel fax website
5 dep CS null null www.cs.wayne.edu
6 dep ECE 313-5773920 null null
7 dep IE null null null
Trang 5Nguyễn Phương Lan (2001), XML nền tảng và ứng dụng, nhà xuất bản Giáo Dục.
Nguyễn Tiến, Đặng Xuân Hường, Nguyễn Văn Hoài, Nguyễn Tuấn Ngọc (2001), Nhập môn XML thực hành và ứng dụng, nhà xuất bản Thống Kê.
Mustafa Atay, Yezhou Sun, Dapeng Liu, Shiyong Lu, Farshad Fotouhi, “Mapping XML Data to Relational Data: A DOM-BASED APPROACH”, Department of Computer Science Wayne State University, Detroit, MI 48202 ShiYoung Lu, Yezhou Sun, Mustafa Atay, Farshad Fotouhi: “A New Inlining Algorithm for Mapping XML DTDs to Relational Schemas” Department Of Computer Science Wayne State University, Detroit, MI 48202.