Một DTD hayschema sẽ định nghĩa mọi thứ từ cấu trúc dữ liệu tới kiểu dữ liệu, những thuộctính được yêu cầu, và những ràng buộc về thành phần và thuộc tính được kết... Một tài liệu XML đư
Trang 1Trang Trang phụ bìa
Lời cam đoan
Lời cảm ơn
MỤC LỤC i
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT iii
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ XML VÀ CƠ SỞ DỮ LIỆU QUAN HỆ 4 1.1 Tổng quan về XML 4
1.1.2 Cấu trúc của tài liệu XML 4
1.1.2.1 Tài liệu XML 4
1.1.2.2 Cấu trúc của tài liệu XML 5
1.1.3 Các thành phần cơ bản trong tài liệu XML 6
1.1.4 Cấu trúc tài liệu XML hợp khuôn dạng 11
1.1.5 Định nghĩa kiểu tài liệu DTD (Document Type Definition) 13
1.1.6 Lược đồ XML (XML schema) 15
1.1.7 Bảng định kiểu CSS (Cascading Style Sheet) 16
1.1.8 Mô hình DOM (Document Object Model) 18
1.1.9 Phân tích tài liệu XML theo mô hình DOM 20
1.2 Cơ sở dữ liệu quan hệ 21
1.2.1 Cấu trúc cơ sở dữ liệu quan hệ 21
1.2.2 Ràng buộc toàn vẹn trên một cơ sở dữ liệu quan hệ 24
1.2.2.1 Định nghĩa 24
1.2.2.2 Các yếu tố của ràng buộc toàn vẹn 24
1.2.3 Chuẩn hóa một cơ sở dữ liệu quan hệ 25
1.3 Kết luận 27
CHƯƠNG 2: TÍCH HỢP CÁC HỆ THỐNG CƠ SỞ DỮ LIỆU QUAN HỆ VÀ XML 28
2.1 Phương pháp luận 28
2.1.1 Đối sánh nội dung của một CSDL quan hệ và một tài liệu XML 29
Trang 2CSDL quan hệ 31
2.1.3 Tên duy nhất 34
2.1.4 Các giá trị rỗng và các giá trị mặc định 35
2.1.5 Quan hệ 36
2.1.6 Thứ tự 38
2.2 Chuyển một tài liệu XML sang một cơ sở dữ liệu quan hệ 39
2.3 Chuyển một CSDL quan hệ thành một tài liệu XML 41
2.3.1 Phi chuẩn các lược đồ quan hệ 42
2.3.2 Kết nối các CSDL đã phi chuẩn 45
2.3.3 Ánh xạ một CSDL quan hệ đã kết nối thành một DOM chính và chuyển thành một tài liệu XML 47
2.4 Kết luận 51
CHƯƠNG 3: THUẬT TOÁN TÍCH HỢP CÁC HỆ THỐNG CƠ SỞ DỮ LIỆU QUAN HỆ VÀ XML 52
3.1 Thuật toán 52
3.1.1 Đọc tài liệu XML dưới dạng sơ đồ hình cây 52
3.1.2 Hiển thị tài liệu XML dưới dạng bảng 54
3.1.3 Chuyển một CSDL quan hệ sang một tài liệu XML 55
3.2 Cài đặt thuật toán 55
3.3 Đánh giá kết quả 59
3.4 Kết luận 59
CHƯƠNG IV: CÀI ĐẶT THỬ NGHIỆM 60
4.1 Yêu cầu cài đặt: 60
- Phần mềm: 60
4.2 Giao diện của chương trình như sau: 60
KẾT LUẬN 67
TÀI LIỆU THAM KHẢO 69
Trang 3CSDL Cơ sở dữ liệu quan hệ
HTML Hyperlink Text Markup Language
ODBC Open Database Connectivity
SGML Standard Generalized Markup Language
URI Uniform Resource Identifier
XSL eXtensible Stylesheet Language
XSLT eXtensible Stylesheet Language Transformations
Trang 4MỞ ĐẦU
1 Lý do chọn đề tài
Hiện nay có rất nhiều các giao dịch, tương tác thông qua Internet đượcphát triển rầm rộ, hàng loạt các ngôn ngữ và các giao thức giao tiếp, thiết kếtrang web cũng ra đời để phục vụ cho những mục đích nhất định Có thể kểđến nhiều ngôn ngữ đã phổ biến như HTML, DHTML, Java, PHP, ASP,…mỗi loại có ưu và nhược điểm riêng
Ngôn ngữ XML (eXtensible Markup Language) mới phát triển trong
thời gian gần đây và được phổ biến rộng rãi (ở các ngôn ngữ NET) Khônggiới hạn và định nghĩa sẵn như HTML, XML cho phép người dùng tự địnhnghĩa ra các thành phần riêng và mở rộng tuỳ ý
XML trở nên phổ biến có rất nhiều nguyên nhân Điểm quan trọng nhất
là XML cho phép dễ dàng xử lý, chuyển tải và trao đổi dữ liệu giữa nhiều ứngdụng và tài liệu người dùng với các định dạng khác nhau
Nhận thấy tính thiết thực của vấn đề này và được sự gợi ý của giáo viên
hướng dẫn, em đã chọn đề tài “Tích hợp cơ sở dữ liệu quan hệ và XML” làm
đề tài cho luận văn tốt nghiệp của mình
2 Mục đích nghiên cứu
Luận văn tập trung tìm hiểu về XML và mô hình DOM, phương pháp
sử dụng mô hình DOM để chuyển một cơ sở dữ liệu quan hệ sang tài liệuXML và ngược lại
3 Đối tượng nghiên cứu
Tìm hiểu về công nghệ XML
Tìm hiểu về cơ sở dữ liệu quan hệ
Cách chuyển đổi một tài liệu XML sang một cơ sở dữ liệu
Trang 5 Cách chuyển một cơ sở dữ liệu quan hệ sang một tài liệu XML.
4 Giả thiết khoa học
Nếu chúng ta sử dụng công nghệ XML thì chúng ta không những có thểphát triển một tài liệu XML mới trong khi vẫn sử dụng các cơ sở dữ liệu đangtồn tại mà còn có thể trích rút các dữ liệu từ các tài liệu XML
5 Nhiệm vụ nghiên cứu
7 Phương pháp nghiên cứu
Đọc tài liệu: sách, báo và các tài liệu liên quan
Phân tích - tổng hợp lý thuyết và xây dựng các thuật toán chuyển đổimột cơ sở dữ liệu quan hệ sang dạng tài liệu XML và ngược lại
Khai thác ngôn ngữ lập trình C# để viết chương trình Demo
Luận văn được trình bày gồm bốn chương:
Chương 1: “Tổng quan về XML và cơ sở dữ liệu quan hệ” – Trìnhbày tổng quan về cấu trúc một tài liệu XML, định nghĩa kiểu tài liệu DTD,
Trang 6lược đồ, mô hình đối tượng tài liệu DOM, phân tích tài liệu XML theo môhình DOM và các khái niệm cơ sở về cơ sở dữ liệu (CSDL) quan hệ.
Chương 2: “Tích hợp các hệ thống cơ sở dữ liệu và XML” – Giớithiệu phương pháp luận chuyển một tài liệu XML sang một CSDL quan hệ vàngược lại
Chương 3: “Thuật toán tích hợp các hệ thống cơ sở dữ liệu quan hệ
và XML” – Đưa ra thuật toán tích hợp các hệ thống cơ sở dữ liệu quan hệ vàXML
Chương 4: “Cài đặt thử nghiệm” – Trình bày việc cài đặt thuật toánbằng ngôn ngữ lập trình C# trong môi trường ASP.NET, trên cơ sở xây dựngứng dụng trang web “Đăng ký học tín chỉ” của trường Đại học Hàng Hải ViệtNam
Và phần cuối Kết luận – Tóm tắt các nội dung chính, các kết quả đạt
được và hướng nghiên cứu tiếp theo của luận văn
Trang 7CHƯƠNG 1: TỔNG QUAN VỀ XML VÀ CƠ SỞ DỮ LIỆU QUAN HỆ 1.1 Tổng quan về XML
1.1.1 Giới thiệu công nghệ XML
XML (viết tắt từ tiếng Anh eXtensible Markup Language, “Ngôn ngữ
Đánh dấu Mở rộng”) [2], [11] là ngôn ngữ đánh dấu với mục đích chung doW3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác Đây là một tập con đơngiản của SGML, có khả năng mô tả nhiều loại dữ liệu khác nhau Mục đíchchính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khácnhau, đặc biệt là các hệ thống được kết nối với Internet Các ngôn ngữ dựatrên XML (thí dụ: RDF, RSS, MathML, XHTML, SVG, GML và Cxml) đượcđịnh nghĩa theo cách thông thường, cho phép các chương trình sửa đổi vàkiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước vềhình thức của chúng
1.1.2 Cấu trúc của tài liệu XML
1.1.2.1 Tài liệu XML
Một tài liệu HTML có thể tồn tại một số thẻ không đúng quy định(trình biên dịch sẽ bỏ qua những thẻ này) Tuy nhiên với một tài liệu XML thìđiều này không thể xảy ra Khi xây dựng một tài liệu XML, nó phải tuân thủtheo một số quy luật nào đó Những tài liệu XML tuân thủ đúng những quyluật này được gọi là well-formed (tạm dịch là định dạng đúng) Với một tàiliệu không phải là well–formed, Internet Explorer sẽ thông báo lỗi khi nạp tàiliệu này
Một tài liệu XML well–formed chưa chắc là một tài liệu hợp lệ Một tàiliệu XML được xem là hợp lệ nếu nó đảm bảo những quy tắc đặc tả trong tàiliệu Document Type Definition (DTD) hay giản đồ (schema) Một DTD hayschema sẽ định nghĩa mọi thứ từ cấu trúc dữ liệu tới kiểu dữ liệu, những thuộctính được yêu cầu, và những ràng buộc về thành phần và thuộc tính được kết
Trang 8hợp trong tài liệu Phương thức kiểm tra tài liệu này thường được sử dụngtrong giao tiếp giữa ứng dụng – ứng dụng, đảm bảo dữ liệu trao đổi hợp lệtránh dẫn tới những ảnh hưởng của dữ liệu không hợp lệ trên toàn hệ thống.
Tài liệu XML có thể viết bằng trình soạn thảo thông thường (Notepad),hay các trình soạn thảo chuyên dụng của XML: XML Notepad, XMLWriter,XML Spy,
1.1.2.2 Cấu trúc của tài liệu XML
Tài liệu XML chỉ chứa đựng dữ liệu và cách lưu trữ dữ liệu mà không
hề đề cập tới cách thức trình bày dữ liệu Một tài liệu XML sẽ chứa nhữngđặc tả về cấu trúc dữ liệu Mỗi cấu trúc gồm nhiều phần tử (element), mỗiphần tử được bắt đầu với một thẻ bắt đầu (Start–tag) và kết thúc với một thẻkết thúc (End–tag) Giữa Start–tag và End–tag là nội dung của phần tử này.Nội dung có thể bao gồm dữ liệu văn bản hay có thể là một phần tử khác
Một tài liệu XML có thể được chia thành 2 thành phần chính, mỗithành phần có thể có các thành phần theo quy định khác nhau
Hình 1.1 Cấu trúc tài liệu XML
Phần mở đầu (PROLOG) chứa các khai báo trong tài liệu XML như:khai báo phiên bản sử dụng của XML, cách thức mã hóa dữ liệu, chỉ thị xử
lý, định nghĩa kiểu tài liệu cho tài liệu DTD, các chú thích, các khoảng trắng
Phần mở đầu
Phần nội dung Khai báo
Mô tả cấu trúc tài liệu
Trang 9Chuẩn XML không bắt buộc phải khai báo phần mở đầu của XML Tuy nhiênW3C khuyến khích chúng ta nên sử dụng phần khai báo này, ít nhất cũng làphần khai báo phiên bản sử dụng của XML.
Phần thân (BODY) của tài liệu chứa nội dung của dữ liệu bao gồm mộthay nhiều thành phần (bắt buộc phải có ít nhất một thành phần), những thànhphần này bao gồm các phần tử (element) Mỗi phần tử bao gồm một cặp thẻ(thẻ bắt đầu và thẻ kết thúc) Phần tử đầu tiên của tài liệu được coi là phần tửgốc (root element) Tất cả các tài liệu XML được gọi là hợp khuôn dạng nếuchứa đựng duy nhất một phần tử gốc Phần tử gốc chứa đựng tất cả các phần
tử và các cặp thẻ khác trong tài liệu
1.1.3 Các thành phần cơ bản trong tài liệu XML
Định dạng và dữ liệu kí tự:
Tài liệu XML được tạo thành từ thành phần định dạng và thành phần
dữ liệu kí tự Trong tài liệu XML, định dạng giúp phân biệt các thành phầnkhác nhau trong tài liệu XML hay các nút khác nhau trong cây XML Địnhdạng bao gồm các thẻ bắt đầu, thẻ kết thúc, các phần tử thẻ rỗng, các thamchiếu thực thể, tham chiếu kí tự, lời chú thích, phân đoạn CDATA, khai báokiểu tài liệu và chỉ thị xử lý Tất cả các dữ liệu còn lại trong tài liệu XMLkhông phải là định dạng đều được xem là dữ liệu kí tự
Các khai báo XML:
Một tài liệu XML có thể bắt đầu khai báo cho biết tài liệu được viếttheo định dạng và đặc tả XML Nếu sử dụng khai báo XML, khai báo nàyphải được đặt ở dòng đầu tiên của tài liệu Không được khai báo XML sau bất
kỳ dòng nào khác Khai báo XML trong tài liệu được viết theo cấu trúc:
< ?xml [các kiểu khai báo] ?>
Các khai báo trong XML gồm:
Trang 10Khai báo phiên bản (version): Khai báo này cho biết phiên bản đặc tả
XML mà tài liệu sử dụng (khai báo này là tùy chọn nhưng W3C khuyến cáonên sử dụng khai báo này)
Khai báo mã hóa (encoding): bộ mã được sử dụng trong tài liệu XML
mặc định là UTF-8 Ngoài ra có thể sử dụng các bộ mã khác như Unicode,UCS-2, USC-4, (khai báo này là tùy chọn)
Khai báo thực thể độc lập (standalone): được đặt thuộc tính là ‘yes’ nếu
tài liệu không tham chiếu đến các thực thể khác bên ngoài, ngược lại được đặt
là ‘no’ (khai báo này là tùy chọn)
Chú thích không được đặt trước các khai báo
Không được đặt trước chú thích vào bên trong phần định dạng
Không dùng chuỗi bên trong chú thích
Chỉ thị xử lý
Các chỉ thị xử lý được dùng để chỉ dẫn cho bộ phân tích cách xử lý tàiliệu XML trong quá trình phân tích Những chỉ thị này thường bắt đầu bằngdấu <? kết thúc cũng bằng ?> tương tự như phần khai báo
Ví dụ: chỉ thị yêu cầu bộ phân tích kết hợp dữ liệu của XML với bảngđịnh kiểu CSS:
<?xml-stylesheet?>
Trang 11 Thẻ và các phần tử (element)
Cấu trúc tài liệu XML dựa trên các thành phần định dạng (markup).Những thành phần này bao gồm các phần tử (element) Mỗi phần tử thườngbao gồm một cặp thẻ, thẻ bắt đầu và thẻ kết thúc.Ngoại trừ các phần tử rỗng
sẽ được định nghĩa bằng một thẻ Thẻ bắt đầu (còn được gọi là thẻ mở) và bắtđầu bằng kí tự < và kết thúc bằng kí tự > Thẻ kết thúc (còn gọi là thẻ đóng)bắt đầu bằng cặp kí tự </ và kết thúc bằng kí tự >
Tên thẻ có thể bắt đầu bằng kí tự, gạch chân (_) hoặc dấu hai chấm (:).Các kí tự kế tiếp có thể là kí tự, kí số, gạch chân, gạch nối, dấu chấm, dấu haichấm nhưng không được là khoảng trắng
Mỗi phần tử trong cùng một tài liệu XML là duy nhất Bộ phân tích tàiliệu XML phân biệt chữ hoa và chữ thường nên khi đặt tên cho các thẻ vàthuộc tính và cần phân biệt chữ hoa và chữ thường
Phần tử rỗng: là phần tử chỉ có một thẻ duy nhất được đặt trong cặp dấu < />.Phần tử gốc (root element): là phần tử chứa đựng tất cả các phần tử vàcác cặp thẻ khác trong tài liệu Phần tử gốc được xem là phần rất quan trọngtrong cấu trúc XML
Thuộc tính (attribute)
Thuộc tính của các thẻ trong tài liệu XML tương tự như thuộc tính củacác thẻ HTML Thuộc tính được kết hợp theo cặp name = value Thuộc tínhcho phép xác định thêm thông tin và thuộc tính của thẻ Thuộc tính được đặttrong thẻ mở và thẻ rỗng Để gán giá trị cho thuộc tính thường dùng dấu bằng (=)
Thuộc tính luôn được gán giá trị là kiểu text (do phần định dạng luôn làvăn bản text) Trong XML, giá trị của thuộc tính phải đặt trong cặp dấu nháykép “” Tuy nhiên, nếu giá trị chuỗi truyền cho thuộc tính bao gồm luôn cảdấu nháy kép ta có thể sử dụng nháy đơn thay thế
Trang 12 Phân đoạn CDATA
Phân đoạn CDATA cũng là một phần tử trong tài liệu XML nhưng chỉgồm một thẻ Thẻ này bắt đầu bằng <![CDATA và kết thúc bằng ]> Toàn bộnội dung được đặt trong phân đoạn CDATA sẽ không được trình phân tích coinhư cấu trúc XML mà chúng chỉ được xem như là dữ liệu thuần túy
Không gian tên (namespace)
XML cho phép tự định nghĩa và đặt tên cho các thẻ Nếu tài liệu XMLchỉ sử dụng cho một mục đích nào đó và không cần phải kết hợp với các tàiliệu XML khác thì điều này không thành vấn đề Nhưng một khi các ứngdụng phát triển, tập định nghĩa các thẻ XML cần sống chung và kết hợp vớinhau thì đó là một vấn đề
Để định nghĩa không gian tên cho các thẻ, ta đưa vào thuộc tính
xmlns:prefix vào gốc phần tử Trong đó prefix là tên miền hay không gian tên
mà ta muốn chỉ định, mỗi không gian tên có một định danh duy nhất (có thể
là định danh URL hoặc URI) Sau đó áp dụng không gian tên này cho tất cảcác thẻ trong tài liệu XML mà ta muốn chúng thuộc không gian tên đã địnhnghĩa theo cú pháp:
<prefix:TagName> đối với thẻ mở,
</prefix:TagName> đối với thẻ đóng.
Ví dụ 1.1: Cho một tài liệu XML chưa định nghĩa không gian tên như sau:
Trang 13<NganhHocID>
14 </NganhHocID>
<DiaChi>
Ha Noi </DiaChi>
<DiaChi>
Ha Noi </DiaChi>
<DienThoai>
</DienThoai>
</Danh_Sach_SV>
Trang 14Sau đó áp dụng không gian tên cho các thẻ trong tài liệu XML như sau:
<danhsachsv:DiaChi>
Ha Noi </danhsachsv:DiaChi>
1.1.4 Cấu trúc tài liệu XML hợp khuôn dạng
Một tài liệu XML được coi là một tài liệu hợp khuôn dạng nếu tuântheo các quy tắc sau:
Các khai báo XML cần được đặt ở dòng đầu tiên của tài liệu Khai báo chỉthị xử lý XML đầu tiên không bắt buộc , tuy nhiên nếu sử dụng thì phải đặtchúng ở ngay dòng đầu tiên của tài liệu Nếu không thực hiện được yêu cầunày, tài liệu XML được xem là không hợp lệ
Trang 15 Tài liệu XML chỉ có một phần tử gốc, các phần tử khác nếu có phải là concủa phần tử gốc.
Mọi phần tử XML khác rỗng phải bao gồm đầy đủ thẻ đóng và thẻ mở.Trong tài liệu XML hợp khuôn dạng, mọi thẻ mở (trừ thẻ rỗng) phải có thẻđóng tương ứng Nếu bộ phân tích XML phát hiện một phần tử bị thiếu thẻđóng hay thẻ mở thì quá trình phân tích tài liệu sẽ kết thúc
Đóng phần tử rỗng với chuỗi đóng /> Phần tử rỗng là phần tử chỉ có mộtthẻ Dấu kết của phần tử rỗng phải là /> nếu không tài liệu sẽ được coi làkhông hợp khuôn dạng
Mọi phần tử trong tài liệu XML khác phần tử gốc (root) đều phải nằm giữacặp thẻ gốc
Tham chiếu thực thể Ý nghĩa của kí tự tương ứng
Trang 16Bao giá trị thuộc tính bằng cặp dấu nháy Tất cả các thuộc tính được thể hiện
ở dạng chuỗi và phải bao giá trị gán cho thuộc tính bằng cặp nháy kép (“ ”)hoặc nháy đơn (‘ ’)
Chỉ nên sử dụng kí tự < và & đối với thẻ mở và các thực thể
1.1.5 Định nghĩa kiểu tài liệu DTD (Document Type Definition)
Khi định nghĩa thẻ XML, ta tùy ý quyết định cách sử dụng chúng Ta
có thể quyết định thẻ chỉ chứa nội dung là dữ liệu text thuần túy hoặc có thểchứa các phần tử con khác Tuy nhiên, để tài liệu rõ ràng chúng ta nên địnhnghĩa kiểu tài liệu mà mỗi phần tử sẽ biểu diễn
Một tài liệu XML được coi là hợp lệ và có giá trị khi toàn bộ các phần
tử trong tài liệu được định nghĩa kiểu (type definition) mà nó sẽ chứa Việcđịnh nghĩa kiểu tài liệu (DTD – Document Type Definition) cần theo cú phápquy định của tổ chức XML W3C
Định nghĩa kiểu tài liệu DTD:
Sử dụng thẻ khai báo <!DOCTYPE> để bắt đầu định nghĩa cho cácphần tử XML Mẫu khai báo như sau: <!DOCTYPE rootname [DTD]>
Trong đó: DTD là định nghĩa cho các phần tử trong tài liệu
Mỗi phần tử được định nghĩa theo cú pháp:
<!ELEMENT NAME CONTENT_MODEL>
Trong đó: NAME là tên của phần tử muốn định nghĩa; CONTENT_MODEL
có thể được đặt là EMPTY hay ANY hoặc trộn lẫn cả hai nội dung (bao gồm
dữ liệu có thể dùng phân tích hoặc các phần tử con khác)
Ví dụ 1.2: Khai báo và định nghĩa DTD trong tài liệu XML:
<?xml version="1.0" standalone=“yes” encoding="utf-8" ?>
<!DOCTYPE Danh_Sach_SV[
<!ELEMENT Danh_Sach_SV(SinhVien)*>
Trang 17<DiaChi>
Ha Noi </DiaChi>
Trang 181.1.6 Lược đồ XML (XML schema)
XML Schema là một tài liệu XML được viết dưới dạng thức thuần vănbản với phần mở rộng xsd Tài liệu này mở đầu bằng khai báo chuẩn XML,tiếp theo dùng tiếp đầu ngữ xsd: để khai báo không gian tên XML Schema,theo cú pháp sau:
<?xml version = “1.0” ?>
<xsd:schema xmlns:xsd = http : // www.w3.org/1999/XMLSchema> …………
</xsd:schema>
Để chương trình xử lý XML có thể sử dụng tập tin lược đồ (.xsd) cho tàiliệu XML, thì các bộ xử lý phải có cách cài đặt cụ thể của riêng nó để nhận ralược đồ đi kèm với tài liệu XML W3C cho phép khai báo không gian tên chotài liệu XML tham chiếu đến tập tin lược đồ theo địa chỉ URL như sau:
Dễ học và dễ dùng hơn DTD
Định nghĩa chính xác được các kiểu dữ liệu (data type)
Có hệ thống không gian tên (NS) tốt hơn
Dùng lại được các phần tử bằng cách thừa kế
Trang 191.1.7 Bảng định kiểu CSS (Cascading Style Sheet)
CSS là mô hình định nghĩa kiểu định dạng dùng cho việc hiển thị tàiliệu Ta có thể dùng CSS để hiển thị tài liệu XML tương tự các trang HTML.CSS cho phép tách rời định dạng với nội dung dữ liệu CSS tương tự như mộttập mẫu (template) quy định các kiểu định dạng cho các phần tử trong XMLnhư định dạng về font chữ, màu chữ, màu nền, …
Bảng định kiểu CSS đã được áp dụng trong tài liệu HTML, tuy nhiênđiểm khác biệt chủ yếu giữa việc áp dụng CSS vào HTML với việc áp dụngCSS vào XML là các thẻ trong HTML thì có sẵn thông tin định dạng còn cácthẻ trong XML thì không có
Bản chất của CSS là tạo ra một tập mẫu quy định các kiểu định dạngcho các phần tử trong XML (hay các thẻ HTML) trong một file tách biệt vớitài liệu Sau đó tập mẫu này được áp dụng vào trong tài liệu XML thông qua
xử lý:
<?xml-stylesheet type=“text/css” href=“filename.css” ?>
Trong đó filename là tên file chứa tệp mẫu quy định các định dạng chocác phần tử trong tài liệu, file này có phần mở rộng là css và nội dung là cácđịnh dạng cho các phần tử trong tài liệu
Nội dung định dạng của mỗi phần tử được định nghĩa theo cú pháp:
Trang 20attName là tên thuộc tính và attValue là giá trị của thuộc tính Nếu
muốn gom giá trị các thuộc tính định kiểu lại một nhóm (gọi là lớp) thay vìđịnh kiểu cho từng phần tử, ta sử dụng cú pháp sau:
.className{attName1:attValue1; ….; attNamen:attValuen}
Trong đó className là tên lớp và lớp này được sử dụng bên trong phần
tử cần định dạng thông qua thuộc tính theo cú pháp:
<DiaChi>
Trang 21Ha Noi </DiaChi>
1.1.8 Mô hình DOM (Document Object Model)
Để xử lý tài liệu XML, W3C định nghĩa tài liệu theo mô hình hướngđối tượng DOM (Document Object Model) [4], [10] Theo mô hình này tàiliệu XML được tổ chức theo cấu trúc hình cây bao gồm các nút đối tượng, nộidung của mỗi nút (node), trên cây có thể chứa phần tử (element), dữ liệu (text), thuộc tính (attribute),… và các nút con khác Cụ thể, trong mô hình XML có các loại nút sau đây:
Entity reference Tham chiếu thực thể
Processing Instruction Chỉ thị xử lý
Document Type Kiểu tài liệu
Document fragment Đoạn tài liệu
Bảng 1.2 Các loại nút trong mô hình XML
Mô hình DOM được W3C định nghĩa theo nhiều cấp độ khác nhau Cụthể là các cấp độ sau:
Level 0: là đặc tả XML không chính thức và được áp dụng cho cáctrình duyệt trước đây như Nestcape Navigator 3.0 và IE 3.0
Trang 22Level 1: Tập trung vào kết hợp giữa tài liệu HTML và XML.
Level 2: Hỗ trợ không gian tên XML, khung nhìn có lọc (filteredviews) và các sự kiện DOM
Level 3: Nâng cao các khả năng của DOM với việc cho phép nạp, xử
lý, lưu lại mô hình cho nội dung tài liệu
Ví dụ 1.4: Cho một tài liệu XML sau:
<?xml version="1.0" encoding="utf-8" ?>
<SinhVien>
<SinhVienID>
0001 </SinhVienID>
<DiaChi>
Ha Noi </DiaChi>
<DienThoai>
0986735461
</DienThoai>
</SinhVien>
Trang 23Theo mô hình DOM, tài liệu XML trên được tổ chức theo cấu trúc cây sau:
1.1.9 Phân tích tài liệu XML theo mô hình DOM
W3C định nghĩa tài liệu theo mô hình DOM Về cơ bản DOM là giaodiện trình ứng dụng API (Application Progam Interface) không phụ thuộc vàongôn ngữ và chương trình, cho phép các chương trình và các kịch bản truycập và cập nhật tự động nội dung, cấu trúc và kiểu của các tài liệu XML cũngnhư HTML
Với mô hình DOM, một tài liệu XML có thể được phân tích: tạo, duyệt,thêm, loại bỏ, thay đổi các phần tử thông qua các ngôn ngữ như: Java,JavaScript, Visual Studio.NET, C/C++, … Dù sử dụng ngôn ngữ nào để phân tích thì
ta cũng phải sử dụng tới các phương thức mà DOM cung cấp được liệt kê trong bảng sau:
documentElement Lấy về nút gốc của tài liệu DOM
parentNode Lấy nút cha của nút hiện tại
firstChild Lấy nút con đầu tiên
previousChild Lấy nút con trước đó
nextChild Lấy nút con kế tiếp
lastChild Lấy nút con cuối cùng
firstSibling Lấy nút con cùng cấp đầu tiên
nextSibling Lấy nút con cùng cấp kế tiếp
previousSibling Lấy nút con cùng cấp trước đó
lastSibling Lấy nút con cùng cấp cuối cùng
getElementByTagName Lấy về danh sách các nút
Item(i) Truy cập nút thứ i trong danh sách
SinhVienSinhVien
Trang 24childeNodes Trả về danh sách các nút trong tài liệu
Length Trả về các nút trong danh sách các nút
noteValue Trả về giá trị của một nút
noteType Xác định kiểu dữ liệu của một nút
createElement() Khởi tạo một thành phần mới trong tài liệucreateTextNode() Khởi tạo dữ liệu text cho một nút
Bảng 1.3 Các phương thức trong mô hình DOM 1.2 Cơ sở dữ liệu quan hệ
1.2.1 Cấu trúc cơ sở dữ liệu quan hệ
Một cơ sở dữ liệu quan hệ là một tập của một hoặc nhiều quan hệ, trong
đó mỗi quan hệ là một bảng hai chiều bao gồm các cột và các hàng (gọi làbảng dữ liệu hay quan hệ) Bảng dữ liệu chính là hình thức thể hiện cụ thể củakiểu thực thể khi chúng ta xây dựng cơ sở dữ liệu, bảng dữ liệu được sử dụng
để lưu dữ liệu về các thực thể trong lớp thực thể đó
Như vậy bảng dữ liệu là một tập các bộ dữ liệu hay bản ghi dữ liệu,mỗi bộ có một số lượng thuộc tính như nhau nhưng có thể khác nhau về giátrị Bảng dữ liệu trong cách tiếp cận CSDL quan hệ được hiểu chính xác hơnbằng cụm từ “quan hệ” Một quan hệ bao gồm lược đồ quan hệ và một thểhiện quan hệ Trong đó thể hiện quan hệ chính là một bảng còn một lược đồquan hệ miêu tả tiêu đề các cột của bảng đó Trong một quan hệ không thể tồntại hai bộ dữ liệu giống nhau ở tất cả các thuộc tính
Một bảng dữ liệu được đặc trưng bởi một tên cụ thể, gọi là tên quan hệ.Mỗi cột trong bảng tương ứng với một thuộc tính trong quan hệ, được đặt tênduy nhất (gọi là tên trường) Mỗi dòng trong bảng tương ứng với một bộ trongquan hệ (được gọi là bản ghi), mỗi bộ là một danh sách các giá trị có thứ tự(tương ứng thứ tự các cột trong bảng)
Trang 25Ví dụ 1.5: Cho bảng dữ liệu hay quan hệ SINHVIEN như sau:
Bảng 1.4 Bảng dữ liệu SinhVien
Trong bảng dữ liệu, mỗi thuộc tính nhận giá trị nằm trong một miềnnào đó, gọi là miền giá trị Cũng như kiểu dữ liệu, miền giá trị không chỉ xácđịnh tập giá trị cho thuộc tính mà còn xác định các thao tác được phép sửdụng trên các dữ liệu
Định nghĩa miền giá trị:
Miền giá trị của bảng quan hệ là miền xác định các giá trị thuộc tínhtrong quan hệ
Miền giá trị phải đơn giản, chỉ nhận giá trị đơn (đơn trị) Nếu miền giátrị nhận giá trị là đa trị (không phải là nguyên tố) thì ta phải tách giá trị đa trịthành đơn trị (bằng cách thêm vào các quan hệ phụ)
Quan hệ có thể hiểu là tập con của tích đề các của một hoặc nhiềumiền Như vậy, mỗi quan hệ có thể gọi là vô hạn Với giả thiết rằng quan hệ
là một tập hữu hạn Người ta dùng thuật ngữ “quan hệ cơ sở” để chỉ mức độthấp nhất của thể hiện dữ liệu với người dùng Tất cả dữ liệu trong CSDLquan hệ sẽ được lưu trữ theo tập các “quan hệ cơ sở” Dữ liệu có thể đượctruy cập và xử lý theo cách nhìn nhận riêng, đặc biệt gọi là “khung nhìn”.Khung nhìn là quan hệ logic, tương ứng trực tiếp hoặc gián tiếp với quan hệ
cơ sở
Định nghĩa khung nhìn (View):
Khung nhìn là quan hệ liên kết logic cho phép hai hay nhiều quan hệ một cách trực tiếp hoặc gián tiếp
Trang 26Một khung nhìn có thể là một tập con của một cơ sở dữ liệu quan hệ.
Ví dụ 1.6: Cho bảng quan hệ MonHocInHocKy
MonHocID TenMonHoc NganhHocID HocKyID GhiChu
xử lý
1.2.2 Ràng buộc toàn vẹn trên một cơ sở dữ liệu quan hệ
Ràng buộc toàn vẹn và kiểm tra sự vi phạm ràng buộc toàn vẹn là mộttrong những vấn đề quan trọng trong quá trình phân tích, thiết kế và khai tháccác hệ thống cơ sở dữ liệu [1]
1.2.2.1 Định nghĩa
Ràng buộc toàn vẹn là một điều kiện bất biến không được vi phạmtrong một cơ sở dữ liệu
Trang 27Trong thực tế, một CSDL luôn luôn tồn tại những mối liên hệ qua lạilẫn nhau giữa các thuộc tính, giữa các bộ giá trị trong cùng một quan hệ hoặctrong các quan hệ với nhau Các mối quan hệ phụ thuộc lẫn nhau này chính lànhững điều kiện bất biến mà tất cả các bộ của quan hệ có liên quan trongCSDL đều phải thỏa mãn tại bất kỳ thời điểm nào Ràng buộc toàn vẹn còn cóthể được hiểu là các quy tắc (rule) được áp đặt trên các đối tượng của thế giớithực.
1.2.2.2 Các yếu tố của ràng buộc toàn vẹn
Khi xác định một ràng buộc toàn vẹn [1] cần chỉ rõ:
Điều kiện của ràng buộc toàn vẹn và trên cơ sở của điều kiện này cho tacách biểu diễn dữ liệu
Bối cảnh xảy ra ràng buộc toàn vẹn: trên một hay nhiều quan hệ và cụthể là trên quan hệ nào
Tầm ảnh hưởng của ràng buộc toàn vẹn, khả năng tính toàn vẹn bị ảnhhưởng và hành động cần phải có khi tính ràng buộc toàn vẹn bị viphạm
Như vậy tính ràng buộc toàn vẹn dữ liệu được biểu diễn thông qua cácphụ thuộc hàm và cụ thể là dựa trên ràng buộc khóa
Có các khái niệm về khóa: khóa chính (primary key), khóa ngoại(foreign key) và khóa duy nhất (unique key)
Khóa duy nhất (unique key): Ràng buộc không cho phép có hai giá trịgiống y hệt nhau trên cột hoặc tập các cột được định nghĩa bởi mệnh đề dạngnày
Khóa chính (primary key): ràng buộc không cho phép có hai giá trịgiống y hệt nhau cũng như hai giá trị null được đưa vào cột hoặc tập các cộtđược định nghĩa thỏa mãn mệnh đề ràng buộc này
Trang 28Khóa ngoại (foreign key): ràng buộc đòi hỏi mỗi giá trị trong cột hoặctập các cột được định nghĩa bởi ràng buộc này phải bằng một giá trị lấy từquan hệ liên kết tương ứng, và cột trong quan hệ liên kết tương ứng cũng phảithỏa mãn các ràng buộc toàn vẹn là khóa duy nhất hoặc khóa chính Ràngbuộc này đôi khi còn gọi là ràng buộc tham chiếu Cột được khai báo ràngbuộc này có thể nhận giá trị null.
1.2.3 Chuẩn hóa một cơ sở dữ liệu quan hệ
Chuẩn hóa một cơ sở dữ liệu quan hệ [7] là rất cần thiết trong thực tế vìnhờ bước chuẩn hóa này mà chúng ta có thể loại bỏ tối đa sự dư thừa dữ liệu– một trong những nguyên nhân dẫn đến sự không toàn vẹn dữ liệu
Chuẩn hóa một CSDL có nghĩa là chúng ta sẽ đưa các lược đồ quan hệ
về một trong các dạng chuẩn: 1NF, 2NF, 3NF, BCNF
Chuẩn 1NF: một quan hệ ở dạng chuẩn 1NF nếu tất cả các giá trị các
thuộc tính của nó là sơ cấp Tức nó chỉ chứa các giá trị nguyên tố - khôngphân chia nhỏ được nữa
Chuẩn 2NF: một quan hệ là chuẩn 2NF nếu nó là chuẩn 1NF và mọi
thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào khóa chính (tức làkhông có thuộc tính không khóa nào phụ thuộc hàm một phần vào khóachính)
Nếu một quan hệ chưa ở dạng 2NF thì ta tách quan hệ ban đầu thànhcác quan hệ mới gồm: quan hệ chứa các thuộc tính không khóa không phụthuộc bộ phận vào khóa chính và các quan hệ trong đó mỗi quan hệ chứa cácthuộc tính là các thuộc tính bộ phận của khóa chính và các thuộc tính phụthuộc bộ phận vào thuộc tính bộ phận của khóa chính đó
Chuẩn 3NF: một quan hệ ở dạng chuẩn 3NF nếu nó là 2NF và tất cả
các phụ thuộc hàm giữa khóa chính và các thuộc tính khác của nó đều là trựctiếp
Trang 29Nếu một quan hệ chưa ở dạng chuẩn 3NF thì thực hiện các bước sau đây:
Tìm các phụ thuộc hàm bắc cầu vào khóa chính có dạng: K -> X,
X-> Y, trong đó K là tập các khóa chính, X và Y là tập các thuộctính không khóa
Nếu tìm thấy phụ thuộc hàm bắc cầu như trên thì tiến hành táchquan hệ hiện thời thành hai quan hệ, quan hệ thứ nhất bao gồm cácthuộc tính X, Y và quan hệ thứ hai bao gồm các thuộc tính trongquan hệ ban đầu trừ thuộc tính Y
Kiểm tra các quan hệ con xem đã ở dạng chuẩn 3 NF hay chưa, nếuchưa thì lặp lại hai bước trên
Chuẩn BCNF: một quan hệ ở dạng chuẩn BCNF nếu nó là 3NF và tập
các phụ thuộc hàm không chứa phụ thuộc hàm tầm thường
Phụ thuộc hàm tầm thường: với phụ thuộc hàm A B, và B là tập concủa A, thì phụ thuộc hàm A B được gọi là phụ thuộc hàm tầm thường
Trang 301.3 Kết luận
Chương 1 đã trình bày những kiến thức cơ bản về cấu trúc một tài liệuXML cũng như các kiến thức giúp chúng ta nhận biết được thế nào là một tàiliệu XML hợp lệ, hợp khuôn dạng, mô hình DOM và cách phân tích tài liệuXML theo mô hình DOM cùng các trình phân ngữ trong XML như: kiểu tàiliệu DTD, lược đồ XML, không gian tên, bảng định kiểu CSS Ngoài nhữngkiến thức cơ bản về XML, trong chương 1 cũng trình bày những kiến thức cơbản về cơ sở dữ liệu quan hệ, các khái niệm, cấu trúc, các ràng buộc toàn vẹntrên CSDL quan hệ
Trang 31CHƯƠNG 2: TÍCH HỢP CÁC HỆ THỐNG CƠ SỞ DỮ LIỆU QUAN
HỆ VÀ XML
Các cơ sở dữ liệu ngày nay được lưu trữ ở rất nhiều định dạng file khácnhau Chuyển đổi dữ liệu giữa chúng là một vấn đề nan giải mặc dù đã cókhông ít những trình ứng dụng hỗ trợ Nếu dữ liệu của file chỉ được lưu theodạng text thì mọi việc trở nên đơn giản do file text có thể được đọc bởi hầunhư tất cả các trình ứng dụng Tuy nhiên file text khó có thể bố trí dữ liệutheo cấu trúc XML [2] ra đời đã khắc phục được những bất cập nói trên.Trong XML, dữ liệu và định dạng được lưu ở dạng text và chúng ta có thể dễdàng cấu hình cũng như thay đổi chúng bằng các trình soạn thảo thôngthường
Việc ngày càng có nhiều hệ quản trị cơ sở dữ liệu tổ chức lưu trữ cácfile với nhiều định dạng khác nhau gây khó khăn cho việc giao tiếp giữa các
hệ thống thông tin Để khắc phục tình trạng này, chúng ta dùng các file XMLlàm cầu nối để lưu trữ và trao đổi dữ liệu Do đó, chuyển đổi dữ liệu từ một
cơ sở dữ liệu bất kỳ sang định dạng file XML và ngược lại là một việc làmcần thiết và mang giá trị thực tiễn cao
Với cấu trúc của một tài liệu XML, các cơ sở dữ liệu được tổ chức dướidạng mô hình đối tượng DOM Việc xử lý các dữ liệu này thông qua mô hìnhDOM như có thể chuyên một cơ sở dữ liệu quan hệ sang một tài liệu XMLhoặc ngược lại chuyển một tài liệu XML sang dạng một cơ sở dữ liệu quan hệ
là nội dung của việc tích hợp giữa các hệ thống cơ sở dữ liệu và XML [6]
2.1 Phương pháp luận
Tích hợp cơ sở dữ liệu quan hệ và XML nghiên cứu về cách chuyển đổimột cơ sở dữ liệu quan hệ thành một tài liệu XML và ngược lại, chuyển mộttài liệu XML về một cơ sở dữ liệu quan hệ Để giải quyết vấn đề này chúng taphải tìm hiểu các vấn đề sau:
Trang 322.1.1 Đối sánh nội dung của một CSDL quan hệ và một tài liệu XML
Mối quan hệ giữa nội dung một cơ sở dữ liệu quan hệ và một tài liệu XML được thể hiện qua các mức so sánh về: mô hình dữ liệu, lược đồ và các mức được minh họa như sau:
Mức mô
hình dữ liệu
Relation Attribute Element Type Attribute
Mức lược đồ
Relation A Attribute XRelation B Attribute Y
Cơ sở dữ liệu quan hệ Tài liệu XML
Tupe Value Element Type -> Attribute
Element Value Attribute Value
Hình 2.1 Các mức so sánh giữa mô hình quan hệ và XML
Tại mức mô hình dữ liệu, nội dung dữ liệu và nội dung quan hệ có sựkhác nhau đáng kể do những mục đích khác nhau của CSDL quan hệ vàXML Mục đích của CSDL quan hệ là để đáp ứng khả năng lưu trữ rộng lớn,truy cập hiệu quả và đảm bảo tính chắc chắn của chúng Ngược lại, XMLđược sử dụng với mục đích đáp ứng một nhu cầu định dạng về cấu trúc và sựtrao đổi của những tài liệu siêu liên kết Trong nội dung quan hệ, từ quan hệchỉ ra các thuộc tính tương ứng của nó Trong nội dung XML, từ kiểu phần tửchúng ta biết được các phần tử con và các thuộc tính tương ứng của chúng
Trang 33Sự khác nhau đáng kể về nội dung của quan hệ và XML có ảnh hưởngkhông tốt tới việc tích hợp cả hai mô hình này.
Tại mức lược đồ, sự khác nhau cũng được chỉ rõ Ở lược đồ quan hệ,mối liên hệ giữa các quan hệ và thuộc tính được xác định rõ: một lược đồ chỉbao gồm các thuộc tính trong quan hệ tương ứng, một lược đồ quan hệ khôngthể bao hàm một lược đồ quan hệ khác trong nó Ngược lại, một lược đồXML hay một Documtent Type Definition (DTD) chỉ ra: với mỗi kiểu phần
tử được định nghĩa trong nó có thể bao gồm các thuộc tính, các phần tử con
và các thuộc tính của các phần tử con đó
Mặt khác, một DTD hay một lược đồ XML có thể lưu trữ trực tiếp bêntrong một tài liệu XML hoặc cũng có thể được lưu trữ trong một file độc lập
từ bên trong tài liệu XML Đây là một trong những khác biệt cơ bản vớiCSDL quan hệ - nơi mà một lược đồ quan hệ thì bắt buộc phải lưu trữ bêntrong CSDL quan hệ và các mối quan hệ tới lược đồ thì phải được kiểm trabởi hệ thống trước khi chèn chúng vào trong CSDL
Cuối cùng, tại mức minh họa, trong một CSDL quan hệ, với mỗi bộ(bản ghi) sẽ có một tập giá trị tương ứng Trong một tài liệu XML, với mỗikiểu phần tử chỉ ra giá trị tương ứng của chúng Như vậy, chứng tỏ rằng cáctài liệu XML là tự mô tả, nghĩa là các phần tử của lược đồ được định nghĩatrong các thẻ mẫu là bản sao trong mỗi tài liệu XML và khi đó lược đồ cóđược định nghĩa rõ ràng hay không thì không quan trọng Đây là một trongnhững điều trái ngược với CSDL quan hệ, nơi chỉ tồn tại duy nhất một lược
đồ quan hệ với CSDL toàn vẹn
Trang 342.1.2 Cấu trúc và kiểu cơ chế của một tài liệu XML và một lược đồ CSDL quan hệ.
Những cơ chế cơ bản được sử dụng để định rõ cấu trúc của những tàiliệu XML và lược đồ quan hệ là những kiểu phần tử và những thuộc tính đốivới XML giống như những quan hệ và những thuộc tính đối với CSDL quan
hệ Về kiểu phần tử, nó hữu dụng cho việc mô tả hai mảng phạm trù: Đầutiên, nó mô tả kiểu phần tử có bao gồm một miền nguyên tử hay không Thứhai, biểu thị kiểu phần tử có một miền hợp hay không Những kết quả nàyphân biệt trong bốn loại kiểu phần tử khác nhau [4]
Ngược lại DTD, lược đồ XML cung cấp một phạm vi rộng lớn củanhững nguyên tử được xác định bởi những kiểu phần tử và những thuộc tính.Những miền nguyên tử được xác định trước này là phù hợp để biểu diễn trongCSDL quan hệ Lược đồ XML cho phép những miền nguyên tử được sử dụngnhư cơ sở bắt nguồn từ những miền được định nghĩa bởi người dùng Điều
Trang 35này thì tương tự với nội dung hướng đối tượng của lớp con bằng việc định rõnhững mở rộng thích hợp hoặc những ràng buộc.
Bên cạnh những miền nguyên tử, những kiểu phần tử được phép kếthợp với một miền hợp được gọi là những kiểu phần tử hợp Kiểu phần tử baogồm những kiểu phần tử khác nhau gọi là những kiểu phần tử hợp được sửdụng để xây dựng độ sâu tùy ý (xác định thứ bậc kiểu phần tử trong tài liệu).Với mỗi tài liệu XML, nó được yêu cầu là tất cả các kiểu phần tử hợp đượctạo thành từ một hay nhiều kiểu phần tử đơn Đây là một trong những ràngbuộc CSDL quan hệ, nơi mà một phần của những sự phân cấp không thể thựchiện bởi những trung gian ẩn bên trong khi những quan hệ gồm những thuộctính chỉ có giá trị nguyên thủy Tuy nhiên, một phần của những sự phân cấp
có thể được đưa ra trong CSDL quan hệ bằng các trung gian của khóa ràngbuộc khóa ngoại lai Khi những kiểu phần tử hợp thành có thể có một miềnnguyên tử để thêm vào miền hợp thành Hơn nữa, bên trong những kiểu phần
tử hợp thành với nội dung hỗn hợp và những kiểu phần tử hợp thành với nộidung phần tử (bảng 2.1) Và đặc biệt khi những kiểu phần tử hợp thành xuấthiện trong một chuỗi nối tiếp hoặc như là một sự lựa chọn
Trang 36Bảng 2.2 Minh họa định nghĩa của những kiểu phần tử hợp thành
<element name= “NganhHocID” type=
“integer” minOccurs = “1” maxOccurs = “1” />
<element name= “DiaChi” type= “string” minOccurs = “1” maxOccurs = “1” />
<element name= “DienThoai” type= “integer” minOccurs = “0” maxOccurs = “unbounded” />