Mở đầu Hầ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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com sẵn phong phú và cho phép tạo ra các kiểu phức tạ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. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chƣơ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 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.1 <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: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Ở đâ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.
Giố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.0" encoding="UTF-8" ?> <Order OrderNo="1023"> <OrderDate>2002-3-27</OrderDate> <Customer>Peter Collingwood</Customer> LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com <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ố (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. 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 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> Có 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com <Customer> <FirstName>Stephen</FirstName> <MiddleInitial></MiddleInitial> <LastName>King</LastName> <PhoneNumber Location="Home">9847 2635</PhoneNumber> <PhoneNumber Location="Work"></PhoneNumber> </Customer> 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 giả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.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, …. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.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ự hiển thị và trình diễn nội dung tài liệu.
CSS trích rút dữ liệu từ XML và đặt vào bảng định kiểu tạo thành một phiên bản trình diễn sau cùng tựa HTML. XSL là một cách khác để hiển thị XML. XSL (Extensible Style Language) là ngôn ngữ định kiểu mở rộng dựa trên cú pháp và nguyên tắc cấu thành của XML. XSL cho phép xử lý và trình diễn dữ liệu mạnh hơn CSS.
XSL là ngôn ngữ định kiểu có khả năng điều khiển động các phần tử thẻ và dữ liệu cần định dạng. XSL có thể sắp xếp lại các thẻ trong tài liệu, thay đổi cả nội dung thẻ, hiển thị một phần hay toàn bộ nội dung dữ liệu.5 Xây dựng tài liệu XML hợp khuôn dạng Với XML bạn tự định nghĩa thẻ và tuỳ ý quyết định mục đích sử dụng của thẻ. Mặc dù được tự do định nghĩa, nhưng các thẻ XML cần theo một quy tắc định nghĩa bắt buộc. Nếu bạn không theo những quy tắc này khi định nghĩa thẻ, các bộ phân tích cú pháp XML sẽ không xác định được tài liệu của bạn.