MỘT SỐ THUẬT NGỮ Basic Inlining Gộp cơ sở Share Inlining Gộp chia sẻ New Inlining Gộp cải tiến Hybrid Inlining Gộp lai ghép DTD MAP Schema Lược đồ ánh xạ DTD XML Document Tài liệu XML Ca
Trang 1ĐẠI HỌC QUÔC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN PHƯƠNG NHUNG
CHUYỂN ĐỔI DỮ LIỆU GIỮA XML
VÀ CƠ SỞ DỮ LIỆU QUAN HỆ
GVHD : PGS.TS ĐOÀN VĂN BAN
HÀ NỘI, 20
Trang 2DANH MỤC TỪ VIẾT TẮT 4
MỘT SỐ THUẬT NGỮ 5
Mở đầu 5
Chương I: KHÁI NIỆM XML VÀ MÔ HÌNH DỮ LIỆU QUAN HỆ 8 1.1 TÀI LIỆU XML 8
1.1.1 Giới thiệu XML và ngôn ngữ định dạng 8
1.1.2 Trình soạn thảo XML (XML Editors) và trình duyệt XML 12
1.1.3 Bộ phân tích XML và Bộ kiểm tra XML (XML Validator) 13
1.1.4 CSS và XSL 13
1.1.5 Xây dựng tài liệu XML hợp khuôn dạng Error! Bookmark not defined 1.1.6 Định nghĩa kiểu tài liệu (DTD) Error! Bookmark not defined 1.1.7 Giới thiệu về Xpath Error! Bookmark not defined 1.1.8 Mô hình đối tượng dữ liệu DOM Error! Bookmark not defined 1.1.9 XML và cơ sở dữ liệu Error! Bookmark not defined 1.2 MÔ HÌNH DỮ LIỆU QUAN HỆ Error! Bookmark not defined 1.2.1 Các khái niệm cơ bản [3][4][5] Error! Bookmark not defined 1.2.2 Các phép toán trên quan hệ [4][5] Error! Bookmark not defined 1.3 KẾT LUẬN Error! Bookmark not defined Chương II:THUẬT TOÁN CHUYỂN ĐỔI DỮ LIỆU GIỮA TÀI LIỆU XML
VÀ CSDL QUAN HỆ Error! Bookmark not defined 2.1 CHUYỂN ĐỔI XML SANG CSDL QUAN HỆ Error! Bookmark not defined
2.1.1 Đơn giản hoá đặc tả DTD Error! Bookmark not defined
2.1.2 Cơ sở của các thuật toán chuyển đổi lược đồ XML sang lược đồ CSDL
quan hệ Error! Bookmark not defined 2.1.3 Thuật toán gộp cơ sở (Basis Inlining) Error! Bookmark not defined 2.1.4 Thuật toán gộp chia sẻ (Shared Inlining) Error! Bookmark not defined 2.1.5 Thuật toán gộp cải tiến Error! Bookmark not defined 2.1.5.1 Đơn giản hoá DTD Error! Bookmark not defined 2.1.5.2 Tạo lập và giản lược đồ thị DTD Error! Bookmark not defined 2.1.5.3 Sinh lược đồ quan hệ Error! Bookmark not defined 2.1.6 Thuật toán Xinsert-Ánh xạ dựa trên hướng tiếo cận DOM Error! Bookmark not defined
2.1.7 Thuật toán CPI (Constraint-Preserving Inlining)Error! Bookmark not defined
2.1.7.1 Ánh xạ DTD sang lược đồ quan hệ Error! Bookmark not defined 2.1.7.2 Các ràng buộc ngữ nghĩa trong DTD Error! Bookmark not defined
Trang 32.1.7.3 Phát hiện và bảo toàn các ràng buộc ngữ nghĩa Error! Bookmark not defined
2.2 CHUYỂN ĐỔI CSDL QUAN HỆ SANG XMLError! Bookmark not defined 2.2.1 Chuyển đổi phẳng (Flat Translation) Error! Bookmark not defined 2.2.2 Chuyển đổi lồng(Nesting base Traslation) Error! Bookmark not defined 2.2.3 Thuật toán CoT (Chuyển đổi sử dụng các phụ thuộc bao hàm) Error! Bookmark not defined
2.2.3.1 Một khoá ngoại giữa hai bảng Error! Bookmark not defined 2.2.3.2 Hai khoá ngoại giữa ba bảng Error! Bookmark not defined 2.2.3.3 Lược đồ quan hệ tổng quát Error! Bookmark not defined Chương III: CHƯƠNG TRÌNH ỨNG DỤNG Error! Bookmark not defined 3.1 THUẬT TOÁN GỘP CẢI TIẾN VÀ XINSERT Error! Bookmark not defined
3.1.1 Mô tả bài toán Error! Bookmark not defined 3.1.2 Chương trình DEMO Error! Bookmark not defined 3.1.3 KẾT LUẬN Error! Bookmark not defined PHẦN KẾT LUẬN Error! Bookmark not defined PHỤ LỤC Error! Bookmark not defined TÀI LIỆU THAM KHẢO Error! Bookmark not defined
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99 100 Error! Bookmark not defined
Trang 4DANH MỤC TỪ VIẾT TẮT
CSDL Cơ sở dữ liệu
RDB Relational Database
XML eXtensible Markup language
HTML HyperText Markup Language
SGML Standard Generalized Markup Language
W3C World Wide Web Consortium
DTD Document Type Definition
DOM Document Oject Model
SAX Simple API for XML
CSS Cascading Style Sheets
XSl Extensible Style Sheet Language
API Application Progaramming Interfaces
DDL Data definition Language
DML Data Manipulation Language
CPI Constraint- Preserving Inlining
ID Inclusion Dependencies
FD Function Dependency
EGD Equality –Generating
TGD Tuple-generating Dependencies
FT Flat translation
NeT Nesting-base Translation
CoT Constraint Translation
IND Inclusion Defendencies
Trang 5MỘT SỐ THUẬT NGỮ
Basic Inlining Gộp cơ sở
Share Inlining Gộp chia sẻ
New Inlining Gộp cải tiến
Hybrid Inlining Gộp lai ghép
DTD MAP Schema Lược đồ ánh xạ DTD
XML Document Tài liệu XML
Cardinality Operator Toán tử lực lượng
XML Processor Trình phân tích XML
Element nodes Nút phân tử
Integrity constraint Rằng buộc toàn vẹn
Set-value attribute Thuộc tính có giá trị tập hợp Relational keys Khoá quan hệ
Relational recurive processing Tiến trình đệ quy quan hệ Element graph Đồ thị các phần tự
Inlinable tree Cây có thể gộp
Singteton constraint Ràng buộc đơn
Equality- generating dependencies Phụ thuộc sinh đồng nhất Child constraint Ràng buộc con
Parent constraint Ràng buộc cha
Mở đầu
Trang 6Hầu hết các dữ liệu thương mại được lưu trữ và duy trì trong các hệ quản trị dữ liệu quan hệ và được dự báo vẫn là phương thức lưu trữ dữ liệu trong tương lai Các hệ thống này cung cấp cho người sử dụng cách truy cập dữ liệu hiệu quả và đáng tin cậy trong một tổ chức Tuy nhiên, tốc độ phát triển mạnh mẽ của thương maị điện tử và nhu cầu chuyển và nhận dữ liệu từ khách hàng cũng như các tổ chức khác qua Internet đồng nghĩa với việc một số dữ liệu cần được giải thoát khỏi mô hình giới hạn này XML[1][2][10] đang nổi lên như một tiêu chuẩn vượt trội để mô tả và trao đổi dữ liệu, do vậy các cơ chế để chuyển đổi dữ liệu đuợc lưu trữ trong hệ quản trị cơ sở dữ liệu quan hệ sang XML và ngược lại là lĩnh vực quan trọng cần nghiên cứu
Sự thành công của bất kỳ công cụ nào kết nối giữa XML và hệ quản trị cơ sở dữ liệu quan hệ trực tiếp hay thông qua ngôn ngữ thứ cấp hơn đều phụ thuộc nặng nề vào chất lượng giản đồ định rõ cấu trúc của
dữ liệu được chuyển đổi Một giản đồ mơ hồ và chưa hoàn thiện có thế dẫn tới việc kết nối thiếu chính xác hoặc mất dữ liệu Các cơ chế suy luận các giản đồ quan hệ từ các giản đồ không quan hệ đều được chứng minh tốt bằng tài liệu nhưng các phương thức để suy luận một giản đồ XML thì khó hiểu hơn rất nhiều
Cho tới hiện nay, việc chọn lựa một dạng thức để mô tả giản đồ XML còn hết sức khó khăn Gần đây, giản đồ XML nổi lên như một tiêu chuẩn phổ biến nhưng không chính thức để định dạng giản đồ XML
Đó là một tiêu chuẩn có ưu thế lớn và toàn diện giúp hỗ trợ các kiểu đánh máy được cài đặt sẵn phong phú và cho phép tạo ra các kiểu phức
Trang 7tạp hơn dựa trên những kiểu được cài đặt sẵn cũng như nhiều tính năng hữu dụng khác
Luận văn trình bày phương pháp chuyển đổi dữ liệu giữa XML sang cơ sở dữ liệu quan hệ và ngược lại dựa trên lược đồ XML và lược
đồ quan hệ Cụ thể, luận văn đi sâu nghiên cứu một số thuật toán chuyển đổi cơ bản hướng cấu trúc và một thuật toán chuyển đổi hướng dữ liệu Đồng thời, dựa trên các thuật toán cơ bản đó, luận văn nghiên cứu việc chuyển đổi có thể đảm bảo được các ràng buộc, giảm dư thừa dữ liệu, và
có thể khai thác tối đa khả năng, lợi ích của hướng tiếp cận này
Luận văn được trình bày trong 3 chương
Chương I: trình bày một số khái niệm cơ bản về XML như định
nghĩa DTD, lược đồ XML, trình phân tích tài liệu, mô hình DOM … và
mô hình CSDL quan hệ như các khái niệm về quan hệ, thuộc tính, bộ, khoá …
Chương II: Giới thiệu một số thuật toán chuyển đổi dữ liệu giữa
XML và mô hình quan hệ Các thuật toán cơ bản như gộp cơ sở, gộp chia
sẻ, gộp cải tiến giửi quyết sự phức tạp của đặc tả DTD, sự xung đột giữa kiến trúc có thứ bậc tự nhiện cảu mô hình dữ liệu XML và bản chất hai mức của mô hình quan hệ Ba thuật toán CPI, NeT và CoT không chỉ thực hiện tốt việc chuyển đổi cấu trúc của lược đồ gốc mà còn bảo toàn
về mặt ngữ nghĩa của lược đồ trong quá trình chuyển đổi Ngoài các thuật toán chuyển đổi lược đồ, luận văn giới thiệu một thuật toán chuyển đổi dữ liệu Xinsert, thuật toán có khả năng chuyển đổi dữ liệu của tài liệu XML sang dữ liệu quan hệ theo hướng tiếp cận DOM
Chương III: Nghiên cứu cài đặt ứng dụng minh hoạ cho một số
thuật toán chuyển đổi dữ liệu như thuật toán gộp cải tiến và Xinsert
Trang 8Chương I: KHÁI NIỆM XML VÀ MÔ HÌNH DỮ LIỆU QUAN HỆ
1.1 TÀI LIỆU XML
1.1.1 Giới thiệu XML và ngôn ngữ định dạng
Như tất cả chúng ta đều biết, XML là viết tắt cho chữ eXtensible Markup Language XML là một ngôn ngữ đánh dấu tương đối mới được
sử dụng để định nghĩa cấu trúc các dữ liệu trong một tài liêu thông qua các thẻ[1][2]
Ngôn ngữ định dạng (Markup Language) là ngôn ngữ được dùng
để trình bày các dữ liệu trong một tài liệu
Ngôn ngữ định dạng mà mọi người quen thuộc ngày nay là ngôn ngữ HTML HTML cho phép bạn tạo nội dung các trang Web tương đối đơn giản
Ví dụ 1.1
Trang 9Ở đây HTML thực hiện định dạng bằng các thẻ (tags) như
<Head>, <Center>, <B>… Những thẻ này chỉ cho trình duyệt (browser) cách hiển thị nội dung tài liệu
<Html>
<Head>
<Title>Lời chào</Title>
</Head>
<Body>
<Center>
<B>
Chào tất cả các bạn học sinh thân yêu!
</B>
</Center>
</Body>
</Html>
Kết quả trang web trong trình duyệt được hiển thị như sau:
Trang 10Giống như HTML, XML dùng các thẻ để khai báo cấu trúc dữ liệu trong file XML Điểm khác biệt chính giữa HTML và XML là trong khi các thẻ HTML chứa ý nghĩa dùng để trình bày dữ liệu thì các thẻ của XML chứa ý nghĩa dùng để định nghĩa cấu trúc dữ liệu Ví dụ một tài liệu đặt hàng (order) XML dưới đây:
Ví dụ 1.2
<? Xml version="1.0" encoding="UTF-8" ?>
<Order OrderNo="1023">
<OrderDate>2002-3-27</OrderDate>
<Customer>Peter Collingwood</Customer>
<Item>
<ProductID>1</ProductID>
<Quantity>5</Quantity>
</Item>
<Item>
<ProductID>4</ProductID>
<Quantity>3</Quantity>
</Item>
</Order>
Tài liệu này chỉ chứa dữ liệu, không đề cập gì đến cách trình bày Điều này có nghĩa là một bộ phân tích XML (XML parser) không cần phải hiểu ý nghĩa của các thẻ Nó chỉ cần tìm các thẻ và xác định rằng đây là một tài liệu XML hợp lệ Vì trình duyệt không cần phải hiểu ý nghĩa của các thẻ, nên ta có thể dùng bất kỳ tên nào để đặt cho thẻ cũng được, trong đó tên đặt cho thẻ bắt đầu bằng ký tự gạch chân (_), ký tự số
Trang 11(1,2,3…), ký tự (a,A,b,B…), dấu chấm (.), dấu gạch nối (-), nhưng không
có khoảng trắng
Nhìn tổng quát, một tài liệu XML bắt đầu bằng thẻ khái báo chỉ thị
xử lý XML <? Xml version="1.0" encoding="UTF-8" ?> Tất cả các chỉ thị xử lý XML bắt đầu bằng <? Và kết thúc bằng ?>
Chúng ta hãy quan sát kỹ hơn cấu trúc của một tài liệuXML Trước hết tài liệu XML được hình thành từ các phần tử (element) XML
và các thuộc tính của các phần tử đó
Trong ví dụ trên ta thấy tài liệu XML gồm có phần tử Order được gọi là phần tử gốc của tài liệu có thuộc tính OrderNo với giá trị 1023 Bên trong phần tử gốc Order có chứa:
- Phần tử OrderDate với giá trị là:2002-3-27
- Phần tử Customer với giá trị là: Peter Collingwood
- Hai phần tử Item, mỗi phần tử Item lại chứa một phần tử ProductID và một phần tử Quantity
Đôi khi ta còn khai báo một phần tử rỗng trong tài liệu XML (là phần tử có tên, nhưng không chứa một giá trị), vì ta muốn dùng nó như một phần tử tuỳ chọn, có cũng được, không có cũng không sao Ví dụ như phẩn tử rỗng MiddleInitial trong phần tử Customer dưới đây:
Ví dụ 1.3
<Customer>
<FirstName>Stephen</FirstName>
<MiddleInitial></MiddleInitial>
<LastName>King</LastName>
</Customer>
Trang 12Có một cách khác để biểu diễn phần tử rỗng là bỏ thẻ đóng và thêm một dấu "/" ở cuối thẻ mở Ta có thể viết lại ví dụ customer như sau:
Ví dụ 1.4
<Customer>
<FirstName>Stephen</FirstName>
<MiddleInitial/>
<LastName>King</LastName>
</Customer>
Dĩ nhiên phần tử rỗng cũng có thể có thuộc tính như phần tử PhoneNumber thứ nhì dưới đây:
Ví dụ 1.5
<Customer>
<FirstName>Stephen</FirstName>
<MiddleInitial></MiddleInitial>
<LastName>King</LastName>
<PhoneNumber Location="Home">9847
2635</PhoneNumber>
<PhoneNumber Location="Work"></PhoneNumber>
</Customer>
1.1.2 Trình soạn thảo XML (XML Editors) và trình duyệt XML
Để tạo ra các tài liệu XML ta có thẻ sử dụng các trình soạn thảo đơn giản như: Notepad, wordpad … Có rất nhiều các trình soạn thảo đặc biệt được dùng phục vụ cho hiệu chỉnh nội dung file dữ liệu XML Đơn
Trang 13giản và dễ dùng nhất là trình soạn thảo XML notepad của Microsoft Các trình soạn thảo chuyên nghiệp hơn như XML Writer
Những phần mềm trình duyệt điển hình hỗ trợ XML (chỉ kiểm tra khuôn dạng XML hợp lệ và cho phép kết hợp CSS, XSL) bao gồm: Internet Explorer(IE), Netscape Navigator, Jumpo
1.1.3 Bộ phân tích XML và Bộ kiểm tra XML (XML Validator)
Bộ phân tích là gói phần mềm được sử dụng chúng như một phần mềm kèm theo của ứng dụng có chứa các thư viện cung cấp các hàm, cho phép phân tích nội dung và trích xuất dữ liệu của XML khá đơn giản Dưới đây là các trình phân tích thướng dùng: XML cho Java (XML4J), Microsoft XML Parser, Python XML Parse
Bộ kiểm tra là các gói phần mềm cho phép kiểm tra một số chuẩn trên XML Một số bộ kiểm tra thường dùng, nếu sử dụng bộ phân tích XML4J của IBM, bạn có thể dùng đối tượng DOM Writer để làm bộ kiểm tra, ngoài ra còn có các bộ kiểm tra như XML Writer, Tidy, …
1.1.4 CSS và XSL
CSS và XSL [8] là các bảng định kiểu (Style sheet) CSS thích hợp
để định dạng tài liệu hướng về HTML, ta có thể thay đổi font chữ, cỡ chữ, màu sắc, đặt hình ảnh và yêu cầu kết hợp định dạng của CSS với dữ liệu XML Bản thân XML chỉ định nghĩa các cấu trúc lưu trữ dữ liệu, nó không có khả năng tự