21/10/14 Cơ sở dữ liệu XML 18 Là các loại tài liệu sử dụng XML như dữ liệu chuyển đổi Được thiết kế cho việc sử dụng của các hệ thống Không quan trọng cho ứng dụng hoặc CSDL có
Trang 1Chương 9
CƠ SỞ DỮ LIỆU XML
Trang 221/10/14 Cơ sở dữ liệu XML 2
Nội dung trình bày
Trang 3XML là gì?
XML(Extensible Markup Language) ra đời 2/1998
XML là ngôn ngữ có kiến trúc gần giống như HTML
XML thiết kế dùng để mô tả dữ liệu
Người dùng tự định nghĩa các thẻ (tag)
XML dùng DTD(Document Type Definition) hoặc XML Schemas để mô tả dữ liệu
Trang 421/10/14 Cơ sở dữ liệu XML 4
Sự khác biệt giữ XML và HTML
XML ra đời không phải là sự thay thế cho HTML
XML dùng để mô tả dữ liệu – HTML dùng để biểu
diễn dữ liệu
XML quan tâm đến dữ liệu lưu trữ là gì? – HTML
quan tâm đến việc hiển thị dữ liệu như thế nào
Cách qui định lưu dữ liệu trên file XML nghiêm ngặt
hơn HTML
Trang 5XML được sử dụng như thế nào?
Trang 621/10/14 Cơ sở dữ liệu XML 6
Cú pháp của XML
Các qui định cú pháp của XML rất đơn giản nhưng rất nghiêm ngặt
Tất cả các tài liệu của XML phải có một nút gốc(Root Element)
Mỗi một thành phần (element) bắt buộc phải có thẻ đóng (</>)
Trang 7 Các thẻ đóng mở của XML có phân biệt chữ hoa và chữ thường (</letter> # </Letter>)
Tất cả các thành phần của XML phải lồng nhau một cách chính xác:
Trang 821/10/14 Cơ sở dữ liệu XML 8
Cú pháp cho XML
<? xml version =“1.0” encoding =“ISO-8859-1”?>
<note>
<to> Tove </to>
<from> Jani </from>
<heading> Reminder <heading>
<body> Don’t forget me this weekend! </body>
</note>
Ví dụ trên định nghĩa một thành phần gốc là note, trong đó có 4 thành phần con là: to, from, heading, body
Trang 9 Thành phần(Element)
- Các thành phần được đặt tên theo luật.
- Các thành phần có thể mở rộng và có sự liên hệ với nhau
+ Elements must have a closing tag
+ Elements must be properly
nested
Các khái niệm của XML
<book>
<title> My first XML </title>
<prod id = “33-657” medid =“paper” </prod>
<chapter> Introduction to XML <para> What is HTML </para>
<para> What is XML </para>
</chapter>
<chapter> XML Syntax <para> Elements must have a closing tag </para> <para> Elements must be properly nested </para> </chapter>
</book>
Trang 1021/10/14 Cơ sở dữ liệu XML 10
Các khái niệm của XML
<person sex = “female”>
<firstname> Anna</firstname>
<lastname> Smith</lastname>
</person>
Trang 11 Namspace: cung cấp phương pháp tránh đụng độ tên các thành phần
XML Parser: dùng để phân tích cấu trúc XML khi đọc – sửa đổi, tạo – xử lý
XML Encoding:chuyển các ký tự sang dạng chuẩn unicode để cho bộ phân tích XML hiểu khi gặp ký tự lạ
CDATA:Các dữ liệu văn bản trong đoạn này không bị phân tích bởi bộ phân tích XML
PCDATA:Nội dung trong phần này đơn giản ở dạng văn bản thô, ngoài tính chất mô tả văn bản chúng không có hỗ trợ nào thêm, tất cả dữ liệu trong phần này đều lưu dưới dạng text
Các khái niệm của XML
Trang 1221/10/14 Cơ sở dữ liệu XML 12
XML có phải là một cơ sở dữ liệu?
Liệu XML có gần gũi hơn một cơ sở dữ liệu?
Sự lựa chọn giữa một CSDL bình thường và CSDL thuần XML (native XML database)
Data-centric documents
Document-centric documents
Mối quan hệ giữa dữ liệu, tài liệu và cơ sở dữ liệu.
Đánh giá các kiểu cơ sở dữ liệu dùng lưu trữ dữ liệu XML
XML VÀ CƠ SỞ DỮ LIỆU
Trang 13 Ưu điểm của XML:
- Tự nó mô tả cấu trúc và tên của loại dữ liệu.
- Dễ dàng di chuyển
- Có thể mô tả dưới cấu trúc dạng cây hoặc đồ thị
Khuyết điểm của XML:
- Dài dòng
- Truy xuất dữ liệu chậm
XML có phải là một cơ sở dữ liệu?
Trang 1421/10/14 Cơ sở dữ liệu XML 14
XML có gần gũi hơn một CSDL?
Một số điểm XML giống với CSDL:
- Có khả năng lưu trữ
- Có các lược đồ (DTDs, XML Schemas, Relaxng,…)
- Ngôn ngữ truy vấn(XQuery, XPath, XQL, XML-QL, QUILT…)
- Hỗ trợ lập trình giao diện
Trang 15XML có gần gũi như một CSDL
Một số vấn đề XML chưa hỗ trợ như một CSDL:
- Lưu trữ hiệu quả
- Tạo chỉ mục hiệu quả
- Bảo mật dữ liệu
- Quản lý giao tác và tính toàn vẹn dữ liệu
- Truy cập đa người dùng
- Triggers
- Truy vấn thông qua nhiều tài liệu
Trang 1621/10/14 Cơ sở dữ liệu XML 16
XML có gần gũi như một CSDL
Câu trả lời “là một phần nào”
=> Kết luận: XML không phù hợp cho môi trường đa người dùng , tính toàn vẹn dữ liệu được yêu cầu nghiêm ngặt
Trang 17Câu hỏi đặt ra:
Chúng ta có một dữ liệu nguồn cần đưa ra ngoài?
Chúng ta tìm một nơi để lưu trữ các website của mình?
Một ứng dụng e-commerce sử dụng một CSDL mà XML chỉ được xem là dữ liệu chuyển đổi?
Trang 1821/10/14 Cơ sở dữ liệu XML 18
Là các loại tài liệu sử dụng XML như dữ liệu chuyển đổi
Được thiết kế cho việc sử dụng của các hệ thống
Không quan trọng cho ứng dụng hoặc CSDL có lưu trữ tài liệu dạng XML
Không phù hợp với dữ liệu có cấu trúc theo qui tắc, dữ liệu ở mức ít thô
Nội dung thể hiện ít hoặc không trộn lẫn nhau.
Ví dụ: các hóa đơn bán hàng, lịch bay,…
Data - centric Documents
Trang 19 Là các loại tài liệu sử dụng XML để lưu dữ liệu
Được thiết kế cho việc sử dụng của con người
Đặc tính: ít hoặc không theo qui tắc, dữ liệu thô, có sự trộn lẫn giữa các nội dung
Thường được viết thủ công hay một vài các chuẩn khác như: RTF, PDF, hoặc SGML và rồi được chuyển sang XML
Ví dụ: Sách, email, quảng cáo, và hầu hết các tài liệu được viết bằng XHTML
Document – Centric Documents
Trang 2021/10/14 Cơ sở dữ liệu XML 20
=> Trong thực tế khó có thể phân biệt được giữa data và document – centric documents.
- Cần lưu dữ liệu dạng dữ liệu bình thường -> CSDL truyền thống: CSDL quan hệ, CSDL hướng đối tượng, CSDL phân cấp
- Cần lưu trữ dữ liệu dạng tài liệu -> CSDL thuần XML hoặc một hệ thống quản lý văn bản
Trang 21 Sử dụng hệ thống file:
- Không hỗ trợ cho việc liên kết các thành phần của cấu trúc cây => việc lưu trữ những liên kết về cấu trúc và ngữ nghĩa của nó rất phức tạp
- Không thể thực thi được những yêu cầu rút trích dữ liệu phức tạp
=> Việc lưu trữ dữ liệu trên XML là không hiệu quả.
Sử dụng CSDL quan hệ:
- Csdl quan hệ xây dựng dựa trên cấu trúc bảng -> không phù hợp cho cấu trúc phân cấp và kết nối tự nhiên trong nội dung của XML
Đánh giá các kiểu cơ sơ dữ liệu
lưu trữ dữ liệu XML
Trang 2221/10/14 Cơ sở dữ liệu XML 22
Đánh giá các kiểu cơ sở dữ liệu lưu trữ dữ liệu XML
- Cố gắng lưu trữ trong CSDL quan hệ cho phù hợp bằng các bảng dữ liệu và các mối quan hệ => phá vỡ cấu trúc đối tượng và ngữ nghĩa của XML, phải chịu sự trùng lắp trong thiết kế dữ liệu,…
- Không hỗ trợ lock ở mức lược đồ, đối tượng chỉ hỗ trợ lock ở mức dòng => truy xuất đồng thời và theo bậc thang sẽ gặp khó khăn.
Trang 23Đánh giá các kiểu cơ sở dữ liệu lưu
trữ dữ liệu XML
cầu phức tạp của cấu trúc XML đưa ra.
=> CSDL quan hệ là lựa chọn thông minh trong nhiều ứng dụng khác, nhưng nó không phù hợp và không hiệu quả cho việc lưu trữ dữ liệu phân cấp của XML.
Trang 2421/10/14 Cơ sở dữ liệu XML 24
Đánh giá các kiểu cơ sở dữ liệu lưu trữ dữ liệu XML
CSDL hướng đối tượng
- Được thiết kế bằng các chuẩn riêng của chúng
- Các đối tượng chứa dữ liệu, phương thức, mối liên hệ
và các ngữ cảnh riêng của chúng => lý tưởng cho việc tạo và quản lý các cây phân cấp của XML.
Trang 25Đánh giá các kiểu cơ sở dữ liệu lưu trữ dữ liệu XML
- Mô hình csdl đối tượng có định hướng phân cấp và có chứa các liên kết theo chiều ngang => giảm sự tính toán
và tăng khả năng thực hiện
- Được thiết kế một cách mềm dẻo, quản lý lock tốt => giải quyết đụng độ khi có nhiều người sử dụng truy cập tốt.
=> CSDL đối tượng phù hợp trong việc lưu trữ dữ liệu XML
Trang 2621/10/14 Cơ sở dữ liệu XML 26
Đánh giá các kiểu cơ sở dữ liệu lưu trữ dữ liệu XML
Một Kho lưu trữ dữ liệu XML lý tưởng phải đáp ứng:
- Các yêu cầu của XML cũng như các yêu cầu của ứng dụng kết hợp với nó
- Tích hợp vừa vẹn với cấu trúc cây của XML, quản lý các đường liên kết bên trong, import/export dữ liệu, đưa nội dung lên web.
- Hỗ trợ cho NNLT Hướng đối tượng cũng như các ngôn ngữ kịch bản khác.
Trang 27XML DTD
DTD là gì?
Cách khai báo một DTD
Cách khai báo DTD elements
Cách khai báo DTD attributes
Cách khai báo DTD entities
Kiểm tra một DTD hợp lệ
Một số ví dụ về DTD
Trang 2821/10/14 Cơ sở dữ liệu XML 28
DTD là gì?
DTD – Document Type Defination
DTD tập hợp các qui tắc định nghĩa cho các elements và attributes trong tài liệu XML.
DTD định nghĩa một chuẩn riêng cho tài liệu XML phục vụ cho việc trao đổi dữ liệu
Dùng DTD để kiểm tra lại dữ liệu được lấy từ bên ngoài có hơp lệ hay không
DTD có thể được khai báo bên trong hoặc bên ngoài tài liệu XML
Trang 29Khai báo DTD bên trong tài liệu XML
<!DOCTYPE root-element [element-declarations]>
<?xml version="1.0"?>
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
Trang 3021/10/14 Cơ sở dữ liệu XML 30
Khai báo DTD bên ngoài tài liệu XML
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Trang 31DTD Elements
<!ELEMENT element-name category> hoặc
<!ELEMENT element-name (element-content)>
<!ELEMENT element-name EMPTY>
Trang 3221/10/14 Cơ sở dữ liệu XML 32
<!ELEMENT element-name ANY>Ví dụ:
<!ELEMENT note ANY>
DTD Elements (tt)
<!ELEMENT element-name (child-element-name)> hoặc
<!ELEMENT element-name (child-element-name,child-element-name, )>
Ví dụ:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Trang 33 Khai báo element con xuất hiện một lần duy nhất trong element cha
Khai báo element con không xuất hiện hoặc xuất hiện nhiều lần trong element cha.
<!ELEMENT element-name (child-name)>
Ví dụ:
<!ELEMENT note (message)>
DTD Element(tt)
<!ELEMENT element-name (child-name+)>
Ví dụ:<!ELEMENT note (message+)>
<!ELEMENT element-name (child-name*)>
Ví dụ:<!ELEMENT note (message*)>
Trang 3421/10/14 Cơ sở dữ liệu XML 34
Khai báo element con không xuất hiện hoặc xuất hiện một lần trong element cha
Khai báo sự lựa chọn hoặc element này hoặc element khác
Cách khai báo nội dung trộn lẫn
<!ELEMENT element-name (child-name?)>Ví dụ:
<!ELEMENT note (message?)>
Trang 35 Cách khai báo
<!ATTLIST element-name attribute-name attribute-type default-value>
ENTITIES Giá trị là một danh sách của các entity NOTATION Giá trị là tên của một chú thích
Giá trị là một giá trị định nghĩa lại một tài liệu
Giá trị Diễn giải
CDATA Giá trị là loại dữ liệu ký tự
(en1|en2| ) Giá trị phải nhận một kiểu giá trị từ danh sách liệt kê
ID Giá trị là kiểu duy nhất
IDREF Giá trị là ID của một element khác
Trang 3621/10/14 Cơ sở dữ liệu XML 36
DTD Attributes(tt)
Giá trị Diễn giải
Value Giá trị mặc định của thuộc tính
#REQUIRED Giá trị thuộc tính phải nằm trong thành phần
#IMPLIED Giá trị thuộc tính không phải nằm trong thành phần
#FIXED value Giá trị thuộc tính không được chỉnh sửa.
Các giá trị default-value có thể nhận:
Cách khai báo giá trị mặc định của thuộc tính
+ Ví dụ DTD khai báo:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
+ Nội dung thể hiện trên file XML hợp lệ:
<square width="100" />
Trang 37DTD Attributes(tt)
Các khai báo với giá trị là #IMPLIED
Các khai báo với giá trị là #REQUIRED
<!ATTLIST contact fax CDATA #IMPLIED>
+ Nội dung file XML hợp lệ là:
<contact fax="555-667788" /> Hoặc:
<contact />
Trang 3821/10/14 Cơ sở dữ liệu XML 38
DTD Attributes (tt)
Các khai báo với giá trị là #FIXED
+ Cách khai báo:
<!ATTLIST element-name attribute-name
attribute-type #FIXED "value"> + Ví dụ DTD định nghĩa:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Trang 39<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">
+ File XML:
<author>&writer;©right;</author>
1 Cách khai báo các entities bên trong DTD
2 Cách khai báo các entities bên ngoài DTD
+Cú pháp: <!ENTITY entity-name SYSTEM "URI/URL">
Trang 4021/10/14 Cơ sở dữ liệu XML 40
Kiểm tra sự hợp lệ của DTD
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
Trang 41Ví dụ về DTD
<!DOCTYPE TVSCHEDULE [
<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>
<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
]>
Trang 4221/10/14 Cơ sở dữ liệu XML 42
Định nghĩa lược đồ XML
Tại sao chọn lược đồ XML
Các mô tả lược đồ
Cách khai báo các elements trên lược đồ
Cách khai báo các thuộc tính trên lược đồ
Trang 43Một lược đồ XML định nghĩa:
Định nghĩa các element có thể xuất hiện trong tài liệu
Định nghĩa các thuộc tính có thể xuất hiện trong tài liệu
Định nghĩa các element con của các element khác
Định nghĩa thứ tự của các element con
Định nghĩa số lượng của các element con.
Định nghĩa một element rỗng hoặc có chứa dữ liệu text
Định nghĩa kiểu dữ liệu cho các element và các thuộc tính
Định nghĩa các giá trị mặc định và giá trị không được chỉnh sửa cho các element và các thuộc tính.
Định nghĩa lược đồ XML
Trang 4421/10/14 Cơ sở dữ liệu XML 44
- Dễ dàng mô tả nội dung tài liệu
- Dễ dàng nhận biết tính đúng đắn của dữ liệu
- Dễ dàng làm việc với các dữ liệu từ một CSDL
- Dễ dàng đặt các ràng buộc cho dữ liệu
- Dễ dàng định nghĩa các dữ liệu mẫu
- Dễ dàng chuyển đổi giữa các kiểu dữ liệu với nhau
- Không phải học một ngôn ngữ mô tả khác
- Có thể sử dụng trình soạn thảo cho file XML để soạn cho các file lược đồ XML
- Có thể sử dụng bộ phân tích XML để phân tích file lược đồ
- Có thể xử lý lược đồ bằng XML DOM
- Có thể chuyển đổi lược đồ bằng XSLT
- Sử dụng lại lược đồ này cho lược đồ khác
- Xây dựng kiểu dữ liệu xuất phát từ kiểu dữ liệu chuẩn
- Tham chiếu phức tạp các lược đồ từ một tài liệu
Tại sao chọn lược đồ XML
Trang 45Khai báo lược đồ XML
<?xml version="1.0"?
><note><to>Tove</to><from>Jani</from><heading>Reminder</headi ng><body>Don't forget me this weekend!</body>
</note>
Giả sử có file note.xml
Một lược đồ XML đơn giản note.xsd mô tả cho note.xml
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>