Từ đây dẫn đến nhu cầu cần trao đổi thông tin dữ liệu bên trong các hệ thống con, nội bộ hệ thống tin học này cũng xuất hiện những vấn đề là dữ liệu với các thành phần khác nhau, việc tr
Trang 1Tôi xin trân trọng cảm ơn quý thầy, cô đã giảng dạy, truyền đạt những kiến thức và kinh nghiệm quý báu cho tôi trong suốt thời gian học tập, nghiên cứu chuyên ngành cao học Khoa học Máy tính tại Trường Đại học Công nghệ Thông tin và Truyền thông, Đại học Thái Nguyên khóa 2014-2016
Đặc biệt, tôi xin được bày tỏ lòng biết ơn sâu sắc đến PGS.TS Đoàn Văn Ban, người đã trực tiếp hướng dẫn, tận tình giúp đỡ tôi trong suốt thời gian thực hiện luận văn tốt nghiệp
Cuối cùng tôi xin được gửi lời cảm ơn thân thiết nhất đến các bạn bè, đồng nghiệp và gia đình là những người luôn gần gũi để động viên, chia sẻ trong
suốt thời gian học tập chương trình cao học
Thái Nguyên, tháng 06 năm 2016
Đỗ Trung Thành
Trang 2PHẦN MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Đối tượng và phạm vi nghiên cứu 2
3 Hướng nghiên cứu của đề tài 3
4 Phương pháp nghiên cứu 4
5 Ý nghĩa khoa học của đề tài 4
6 Bố cục của luận văn 6
CHƯƠNG 1 TỔNG QUAN VỀ CSDL VÀ XML 7
1.1 CSDL quan hệ 7
1.1.1 Khái niệm về CSDL và hệ quản trị CSDL 7
1.1.2 Kiến trúc CSDL quan hệ 8
1.1.3 Ràng buộc toàn vẹn CSDL quan hệ 10
1.1.4 Chuẩn hóa một CSDL quan hệ 11
1.2 XML (eXtensible Markup Language) 13
1.2.1 Các thành phần cơ bản của XML 16
1.2.2 Đặc tả cấu trúc dữ liệu XML 17
1.2.3 Phân tích tài liệu XML theo mô hình DOM 25
1.2.4 Tiếp cận, lưu trữ và xử lý dữ liệu XML 28
1.3 Kết luận chương 1 33
CHƯƠNG 2 TÍCH HỢP CSDL QUAN HỆ VÀ XML 35
2.1 Mối quan hệ giữa CSDL quan hệ và XML 35
2.1.1 Phi chuẩn các lược đồ quan hệ 36
Trang 32.2 Thuật toán đặc tả XML theo mô hình DOM và DataTabe 46
2.2.1 Đặc tả XML theo mô hình DataTable 47
2.2.2 Đặc tả XML theo mô hình DOM 49
2.2.2.1 Thuật toán đệ quy 49
2.2.2.2 Thuật toán sử dụng vòng lặp 51
2.2.2.3 Thuật toán sử dụng Dataset 54
2.3 Chuyển đổi CSDL quan hệ sang XML 55
2.4 Chuyển đổi XML sang CSDL quan hệ 57
2.5 Kết luận chương 2 58
CHƯƠNG 3 ỨNG DỤNG TÍCH HỢP CSDL VÀ XML 59
3.1 Cài đặt đặc tả dữ liệu XML theo mô hình DOM và DataTable 61
3.2 Cài đặt thuật toán chuyển đổi CSDL quan hệ sang dữ liệu XML 62 3.3 Cài đặt thuật toán chuyển đổi dữ liệu XML sang CSDL quan hệ 66 3.4 Cài đặt ứng dụng quản lý điểm với dữ liệu XML và một số hệ quản trị CSDL phổ biến 69
3.5 Cài đặt Website tin tức với dữ liệu XML, Sql Server và MySql 70
3.6 Kết luận chương 3 71
KẾT LUẬN 72
Trang 4Bảng kiểu xếp chồng: Cascading Style Sheets
Địa chỉ định vị tài nguyên toàn cầu: Universal Resource Locator
Định danh tài nguyên trên Internet: Uniform Resource Identifier
Định nghĩa kiểu tài liệu: Document Type Definition
Mô hình đối tượng tài liệu: Document Object Model
Ngôn ngữ định dạng mở rộng: eXtensible Markup Language
Ngôn ngữ định dạng siêu văn bản: HyperText Markup Language
Ngôn ngữ định dạng siêu văn bản động: Dynamic HTML
Ngôn ngữ truy vấn có cấu trúc: Structured Query Language
Trang 61NF: First Normal Form
2NF: Second Normal Form
3NF: Third Normal Form
API: Application Program Interface
ASP: Active Server Pages
BCNF: Boyce Codd Normal Form
CSDL: Cơ sở dữ liệu
CSS: Cascading Style Sheets
DHTML: Dynamic HyperText Markup Language
DOM: Document Object Model
DTD: Document Type Definition
GML: Geography Markup Language
HTML: HyperText Markup Language
LAN: Local Area Network
ODBC: Open Database Connectivity
PHP: Personal Home Page
RDF: Resource Description Framework
RSS: Really Simple Syndication
SGML: Standard Generalized Markup Language
SQL: Structured Query Language
Trang 7W3C: World Wide Web Consortium
WAN: Wide Area Network
XHTML: Extensible HyperText Markup Language
XML: eXtensible Markup Language
MS: Microsoft
LinQ Language-Integrated Query
Trang 8Hình 1.1 Sơ đồ quan hệ giữa các dạng chuẩn 13
Hình 1.2 Cấu trúc tài liệu XML 18
Hình 1.3 Các kiểu dữ liệu trong Schema (Schema Datatypes) 22
Hình 1.4 Tài liệu XML được biểu diễn theo cấu trúc cây 27
Hình 2.1: Các mức so sánh giữa mô hình quan hệ và XML 35
Hình 2.2 Sơ đồ thực thể liên kết 1-1 36
Hình 2.3 Chuẩn hóa các lược đồ quan hệ 1-1 37
Hình 2.4 Phi chuẩn quan hệ 1-1 37
Hình 2.5 Sơ đồ thực thể liên kết N-N 38
Hình 2.6 Chuẩn hóa các lược đồ quan hệ N-N 38
Hình 2.7 Phi chuẩn lược đồ quan hệ N-N 38
Hình 2.8 Sơ đồ thực thể liên kết 1-N 39
Hình 2.9 Chuẩn hóa các lược đồ quan hệ 1-N 39
Hình 2.10 Phi chuẩn các lược đồ quan hệ 1-N 40
Hình 2.11 Các bảng của CSDL quan hệ 41
Hình 2.12 Kết quả sau khi thực hiện câu lệnh Sql 41
Hình 2.13 Những ánh xạ cơ bản từ CSDL quan hệ thành tài liệu XML 42 Hình 2.14 Ánh xạ một CSDL quan hệ thành tài liệu XML 43
Hình 2.15 Sơ đồ ánh xạ một CSDL quan hệ thành tài liệu XML 44
Hình 2.16 Sơ đồ ánh xạ từ tài liệu XML thành CSDL quan hệ 45
Hình 2.17 Ánh xạ tài liệu XML sang CSDL quan hệ 46
Hình 2.18 Mô hình XML ở dạng bảng và dạng cây 46
Trang 9Hình 3.4 Đặc tả dữ liệu XML theo 3 thuật toán đã trình bày 62
Hình 3.5 Chuyển đổi dữ liệu Sql Server sang XML 63
Hình 3.6 Chuyển đổi dữ liệu MySql sang XML 64
Hình 3.7 Chuyển đổi dữ liệu MS Access sang XML 65
Hình 3.8 Chuyển đổi dữ liệu VS Foxpro sang XML 65
Hình 3.9 Chuyển đổi XML sang Sql Server 66
Hình 3.10 Chuyển đổi XML sang MySql 67
Hình 3.11 Chuyển đổi XML sang MS Access 68
Hình 3.12 Chuyển đổi XML sang VS Foxpro 69
Trang 10Bảng 1.1 Dữ liệu về sinh viên 8
Bảng 1.2 Tham chiếu thực thể trong XML 19
Bảng 1.3: Các loại nút trong mô hình XML 26
Bảng 1.4: Các phương thức trong mô hình DOM 28
Trang 11PHẦN MỞ ĐẦU
1 Lý do chọn đề tài
Ngày nay, công nghệ thông tin đã và đang được ứng dụng rộng rãi trong mọi lĩnh vực của đời sống xã hội Cùng với sự phát triển đó nhu cầu trao đổi thông tin là một nhu cầu không thể thiếu trong nội bộ các hệ thống tin học cũng như giữa các hệ thống tin học với nhau
Các hệ thống tin học ngày nay có sự phát triển vượt bậc về quy mô, độ phức tạp cao, phạm vi sử dụng ngày càng lớn dẫn đến nhu cầu cần phải phân rã
hệ thống, việc xử lý dữ liệu cần được phân cấp thành nhiều tầng, mỗi hệ thống tin học cần được xây dựng thành các hệ thống con Từ đây dẫn đến nhu cầu cần trao đổi thông tin dữ liệu bên trong các hệ thống con, nội bộ hệ thống tin học này cũng xuất hiện những vấn đề là dữ liệu với các thành phần khác nhau, việc trao đổi dữ liệu giữa các hệ thống con cũng gặp phải không ít khó khăn
Xuất phát từ thực tiễn, các hệ thống tin học ngày càng có yêu cầu cao về chất lượng, khả năng đáp ứng nhanh,… dẫn đến nhu cầu cần phải nâng cấp hệ thống cũ lên hệ thống mới Khi đó, một lượng lớn dữ liệu cần được chuyển đổi sang hệ thống mới Trong quá trình chuyển đổi, dữ liệu không tương thích thường bị mất mát thông tin
Sự phát triển mạnh mẽ, sôi động của Internet và các ứng dụng trên Web, đặc biệt là các ứng dụng trong thương mại điện tử Nhu cầu về trao đổi thông tin giữa các ứng dụng trong lĩnh vực này là rất lớn
Cơ sở dữ liệu (CSDL) trong ngành công nghệ thông tin ngày nay rất đa dạng với nhiều kiểu định dạng khác nhau, chẳng hạn như MySql, Oracle, PostgreSql, Sql Server, DB2, Infomix, Microsoft Access, Visual Foxpro,… các loại dữ liệu này đều có sự khác nhau về định dạng, lưu trữ, truy xuất và xử lý
Do đó, việc trao đổi dữ liệu giữa các hệ thống như vậy sẽ tiêu tốn rất nhiều thời
Trang 12gian của các nhà phát triển, hạn chế đến tốc độ xử lý của ứng dụng,…
Nhu cầu cần xây dựng một hệ thống thông tin được tích hợp từ nhiều CSDL khác nhau ngày càng trở nên phổ biến Dữ liệu được truy xuất từ những CSDL này được tích hợp lại để xử lý và cung cấp thông tin cho người dùng, sau
đó lại được lưu vào những CSDL tương ứng theo yêu cầu Những dữ liệu cần tích hợp với nhau không phải là toàn bộ các bảng dữ liệu mà là những dữ liệu cần trích xuất theo yêu cầu Để thực hiện việc điều này thì các dữ liệu từ nhiều
mô hình khác nhau phải được chuyển về cùng một mô hình và sau khi xử lý, chúng lại phải chuyển về mô hình của dữ liệu gốc Do vậy, việc chuyển đổi các CSDL quan hệ sang XML và ngược lại đóng vai trò quan trọng trong các mô hình tích hợp này
Ngoài việc làm trung gian trong chuyển đổi dữ liệu, XML còn có ứng dụng trong việc lưu trữ thông tin, việc sử dụng tập tin XML cũng mang lại giá trị cao trong thực tiễn vì những ứng dụng sử dụng XML không cần sự hỗ trợ của các hệ quản trị CSDL Vì vậy, việc xây dựng ứng dụng với dữ liệu XML đã và đang được các nhà phát triển quan tâm và triển khai xây dựng khá rộng rãi, đặc biệt nó đã và đang được sử dụng làm dữ liệu không chỉ trên môi trường Desktop hay môi trường Web mà dữ liệu XML đã và đang là dữ liệu được sử dụng rất nhiều trên môi trường cảm ứng của điện thoại di động và máy tính bảng
2 Đối tượng và phạm vi nghiên cứu
a) Đối tượng nghiên cứu
- Một số hệ quản trị CSDL quan hệ phổ biến trong thực tế Cụ thể là MySql, MS Access, Sql Server, VS Foxpro
- Cách đặc tả, tiếp cận, xử lý dữ liệu XML
- Các thuật toán chuyển đổi CSDL quan hệ sang XML và ngược lại
Trang 13- Các dữ liệu dạng Text, và số, logic, datetime, Không nghiên cứu về dữ
liệu đa phương tiện khác như hình ảnh, âm thanh, video,…
- Lý thuyết về CSDL quan hệ; các thuật toán chuyển đổi CSDL quan hệ
và XML với công nghệ Net 4.0 trở lên, ngôn ngữ lập trình C#
- Phân tích, đặc tả, tiếp cận và xử lý dữ liệu XML và một số hệ quản trị CSDL như Sql Server, Access, MySqlbằng ngôn ngữ C#
3 Hướng nghiên cứu của đề tài
a) Về lý thuyết:
- Lý thuyết về CSDL quan hệ, một số hệ quản trị CSDL phổ biến, cụ thể
là Sql Server, MySql, MS Access và Visual Foxpro
- Các phương pháp phân tích, đặc tả, tiếp cận và xử lý dữ liệu XML
- Các thuật toán chuyển đổi giữa CSDL quan hệ và XML
b) Về thực nghiệm:
- Nghiên cứu công cụ lập trình Visual Studio với công nghệ Net 4.0 trở lên và ngôn ngữ lập trình C#
- Xây dựng ứng dụng phân tích, đặc tả dữ liệu XML dưới dạng DataTable
và mô hình DOM (Cụ thể là hiển thị dữ liệu XML lên DataGridView và TreeView)
- Xây dựng công cụ chuyển đổi một số CSDL quan hệ sang XML và ngược lại từ XML sang một số CSDL quan hệ phổ biến này
- Xây dựng Demo ứng dụng trên Windows Form và Asp.Net với việc sử dụng dữ liệu XML
Trang 144 Phương pháp nghiên cứu
- Nghiên cứu các vấn đề cơ sở các nội dung nêu trên thông qua các tài liệu, sách, các bài báo, thông tin trên Internet 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 phân tích, đặc
tả tài liệu XML; các thuật toán chuyển đổi CSDL quan hệ sang XML và ngược lại trên môi trường Asp.Net và môi trường Windows Form với ngôn ngữ C#
- Nghiên cứu ứng dụng ngôn ngữ C# trong môi trường ASP.NET và Windows Form để triển khai xây dựng ứng dụng demo quản lý điểm trên một số CSDL quan hệ phổ biến cũng như trên tài liệu XML
5 Ý nghĩa khoa học của đề tài
Chuyển đổi CSDL quan hệ sang XML và ngược lại giữ một vai trò quan trọng Việc nghiên cứu, xây dựng thuật toán chuyển đổi CSDL quan hệ sang XML và ngược lại là việc làm cần thiết, thực hiện tốt các thuật toán này sẽ mang lại giá trị cao trong thực tiễn ngành Công nghệ Thông tin trong giai đoạn hiện nay
XML đã và đang được sử dụng rộng rãi trong thực tế, đặc biệt với sự phát triển sôi động, mạnh mẽ của công nghệ cảm ứng trên điện thoại di động và máy tính bảng (dữ liệu XML được ứng dụng nhiều trong lĩnh vực này do lợi thế việc
sử dụng, tiếp cận, xử lý và lưu trữ dữ liệu XML không cần đến các hệ quản trị CSDL) Chính vì vậy, việc xây dựng và phát triển các ứng dụng với dữ liệu XML đã và đang giữ một vai trò quan trọng Việc khai thác các phương pháp tiếp cận, lưu trữ, xử lý tốt dữ liệu XML cũng sẽ mang lại nhiều lợi ích cho các
hệ thống thông tin trong bối cảnh ngành Công nghệ Thông tin trong giai đoạn hiện nay
Mô hình tích hợp nhiều hệ quản trị CSDL quan hệ khác nhau cùng hoạt
Trang 15lại giữa các CSDL quan hệ thông qua XML hoặc trích xuất dữ liệu theo yêu cầu của người sử dụng dưới dạng XML sẽ giữ một vai trò quan trọng của hệ thống này
Trang 166 Bố cục của luận văn
Đề tài “Tích hợp CSDL quan hệ và XML” gồm các nội dung nghiên cứu chính với bố cục như sau:
CHƯƠNG 3 ỨNG DỤNG TÍCH HỢP CSDL VÀ XML
Cài đặt các thuật toán, phương pháp xử lý dữ liệu XML trên cơ sở chương
1 và chương 2 đã trình bày; cài đặt ứng dụng quản lý điểm (trên môi trường Windows Form và Asp.Net), Website tin tức (trên môi trường Asp.Net và PHP) với dữ liệu XML và một số hệ quản trị CSDL phổ biến như Sql Server, MySql,
MS Access
Trang 17CHƯƠNG 1 TỔNG QUAN VỀ CSDL VÀ XML 1.1 CSDL quan hệ
1.1.1 Khái niệm về CSDL và hệ quản trị CSDL
a) Cơ sở dữ liệu (CSDL)
Cơ sở dữ liệu được xác định như là một bộ sưu tập các dữ liệu có liên quan logic với nhau; nó được tổ chức, sắp xếp theo một cách nào đó và được các
hệ ứng dụng của một đơn vị/cơ quan cụ thể nào đó sử dụng[5]
Ví dụ: một CSDL quản lý điểm của một trường có thể chứa các dữ liệu về sinh viên(bao gồm các khoản dữ liệu như tên sinh viên, ngày sinh, giới tính, dân tộc, quê quán,…), các dữ liệu về điểm của sinh viên (bao gồm các khoản dữ liệu như điểm thi lần 1, điểm thi lần 2, …)
CSDL thường được sử dụng với những ứng dụng cài đặt riêng lẻ trong máy tính cá nhân, hoặc dưới dạng một CSDL tập trung trên mạng LAN, hoặc dưới dạng một CSDL phân tán trên mạng WAN
Các thành phần của môi trường sử dụng CSDL bao gồm:
Trang 18Hiện nay, chúng ta thường gặp các hệ quản trị CSDL cỡ vừa và nhỏ như Foxpro, Access, cỡ lớn như Sql Server, Oracle
1.1.2 Kiến trúc CSDL 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ủa kiể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, 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 là các “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ồn tạ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ên duy nhất (gọi là tên trường) Mỗi dòng trong bảng tương ứng với một bộ trong quan hệ, được đặt tên duy nhất (gọi là trường) Mỗi dòng trong bộ ứng với một bảng tương ứng với một bộ của quan hệ, một 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) [5]
Ví dụ 1.1.Cho bảng dữ liệu về sinh viên
Trang 19Trong bảng dữ liệu, mỗi thuộc tính nhận giá trị nằm trong một miền nà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
a) Khái niệm 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ính trong
quan hệ
Miền giá trị phải đơn giản, chỉ có giá trị đơn trị Nếu miền giá trị nhận giá trị là đa trị 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ều miề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 CSDL quan hệ sẽ được lưu trữ theo tập các “quan hệ cơ sở” Dữ liệu có thể được truy cập và xử lý theo cách nhìn nhận riêng, đặc biệt gọi là “khung nhìn”
b) Khung nhìn
Khung nhìn là một bảng tạm thời, có cấu trúc như một bảng, khung nhìn không lưu trữ dữ liệu mà nó được tạo ra khi sử dụng, khung nhìn là đối tượng thuộc CSDL
Khung nhìn được tạo ra từ câu lệnh truy vấn dữ liệu (lệnh SELECT), truy vấn từ một hoặc nhiều bảng dữ liệu Khung nhìn được sử dụng khai thác dữ liệu như một bảng dữ liệu, chia sẻ nhiều người dùng, an toàn trong khai thác, không ảnh hưởng dữ liệu gốc
Trang 20Có thể thực hiện truy vấn dữ liệu dựa trên cấu trúc của khung nhìn Như vậy, một khung nhìn trông giống như một bảng với một tên khung nhìn và là một tập bao gồm các dòng và các cột Điểm khác biệt giữa khung nhìn và bảng
là khung nhìn không được xem là một cấu trúc lưu trữ dữ liệu tồn tại trong cơ sở
dữ liệu Thực chất dữ liệu quan sát được trong khung nhìn được lấy từ các bảng thông qua câu lệnh truy vấn dữ liệu Ví dụ như trong CSDL Sql Server ta có thể thấy các Views là sự thể hiện các khung nhìn rõ ràng nhất về vấn đề này
1.1.3 Ràng buộc toàn vẹn CSDL 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ột trong những vấn đề quan trọng trong quá trình phân tích, thiết kế và khai thác các hệ thống cơ sở dữ liệu
Ràng buộc toàn vẹn là một điều kiện bất biến không được vi phạm trong một cơ sở dữ liệu [1]
Trong thực tế, một CSDL luôn luôn tồn tại những mối liên hệ qua lại lẫ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ặc trong 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 trong CSDL đề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 được áp đặt trên các đối tượng của thế giới thực
Khi xác định một ràng buộc toàn vẹn cần nêu rõ các yếu tố sau:
- Đ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 ta cá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ị ảnh
Trang 21Như vậy tính ràng buộc toàn vẹn dữ liệu được biểu diễn thông qua các phụ thuộc hàm và cụ thể là dựa trên ràng buộc khóa
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 chính (primary key): ràng buộc không cho phép có hai giá trị giống 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
- Khóa ngoại (foreign key): ràng buộc đòi hỏi mỗi giá trị trong cột hoặc tậ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ải thỏ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àng buộc này đôi khi còn gọi là ràng buộc tham chiếu Cột được khai báo ràng buộc này có thể nhận giá trị null
Khóa duy nhất (unique key): Ràng buộc không cho phép có hai giá trị giống hệt trên cột hoặc tập các cột được định nghĩa bởi mệnh đề dạng này
1.1.4 Chuẩn hóa một CSDL quan hệ
Chuẩn hóa một cơ sở dữ liệu quan hệ là một công việc rất cần thiết trong thực tế vì nhờ việc chuẩn hóa này mà chúng ta có thể loại bỏ được tối đa sự dư thừa thông tin, dữ liệu dư thừa không cần thiết là 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à phải biến đổi, đưa các lược đồ quan hệ
về một trong các dạng chuẩn: 1NF, 2NF, 3NF, BCNF [1]
Chuẩn 1NF: Một lược đồ quan hệ ở dạng chuẩn 1NF nếu toàn bộ các
thuộc tính của mọi bộ đều mang giá trị đơn Tức nó chỉ chứa các giá trị nguyên
tố không phân chia nhỏ được nữa
Trang 22Chuẩn 2NF:Một lược đồ quan hệ ở dạng chuẩn 2NF thì nó phải đạt
chuẩn 1NF và mọi thuộc tính không khóa của lược đồ quan hệ đều phụ thuộc đầ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óa chính)
Nếu một quan hệ chưa ở dạng 2NF thì ta tách quan hệ ban đầu thành cá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ác thuộ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 lược đồ 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ực tiếp Nếu một lược đồ quan hệ chưa ở dạng chuẩn 3NF thì phải 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ộc tính không khóa
+ Nếu tìm thấy phụ thuộc hàm bắc cầu trong quan hệ thì tiến hành tách quan hệ hiện đó thành hai quan hệ, quan hệ thứ nhất bao gồm các thuộc tính X,
Y và quan hệ thứ 2 bao gồm các thuộc tính trong quan hệ ban đầu trừ thuộc tính
Y
Kiểm tra các quan hệ con xem đã ở dạng chuẩn 3NF hay chưa, nếu chưa thì lặp lại hai bước trên cho đến khi nó là 3NF
Chuẩn BCNF: Một lược đồ quan hệ ở dạng chuẩn BCNF nếu mọi phụ
thuộc hàm X→A F+ với A X đều có X là siêu khóa
Trang 23Nhận xét: Các lớp dạng chuẩn của một lược đồ quan hệ có quan hệ lồng
vào nhau Nghĩa là, lớp sau nằm gọn trong lớp trước: BCNF 3NF 2NF 1NF
Hình 1.1 Sơ đồ quan hệ giữa các dạng chuẩn
1.2 XML (eXtensible Markup Language)
XML là một tập con của SGML (Standard Generalized Markup Language) [10], trong đó, SGML là một hệ thống tổ chức và gắn thẻ yếu tố của một tài liệu SGML được phát triển và tiêu chuẩn hóa bởi Tổ chức Tiêu chuẩn quốc tế (ISO) vào năm 1986 SGML chính nó không chỉ định bất kỳ đặc biệt là định dạng mà nó quy định cụ thể các quy tắc cho các yếu tố gắn thẻ Các thẻ sau
đó có thể được giải thích để các yếu tố định dạng theo nhiều cách khác nhau SGML được sử dụng rộng rãi để quản lý các văn bản lớn mà có thể bản sửa đổi thường xuyên và cần phải được in trong các định dạng khác nhau Bởi vì nó là một hệ thống lớn và phức tạp, đó là chưa sử dụng rộng rãi trên máy tính cá nhân.Tuy nhiên, sự phát triển của Internet, và đặc biệt là World Wide Web, đang tạo ra đổi mới quan tâm đến SGML vì World Wide Web sử dụng HTML, mà là một cách để xác định và thông dịch thẻ theo các quy tắc SGML
Vào giữa những năm 90 của thế kỷ XX, các chuyên gia SGML đã có kinh nghiệm với World Wide Web (vẫn còn khá mới vào thời đó) tin tưởng rằng SGML có thể cung cấp giải pháp cho vấn đề mà Web đang gặp phải Jon Bosak
B
Trang 24đưa ra ý kiến W3C nên tài trợ cho một chương trình mang tên “SGML trên Web” Sau thời gian này một tập con của SGML ra đời mang tên XML
XLM (viết tắt từ tiếng Anh eXtensible Markup Language, “Ngôn ngữ đánh dấu mở rộng”) là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị
để tạo ra các ngôn ngữ đánh dấu khác Đây là một tập con đơn giản của SGML,
có khả năng mô tả nhiều loại dữ liệu khác nhau Mục đích chí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ác nhau, đặc biệt là các hệ thống được kết nối với Internet Các ngôn ngữ dựa trên XML (chẳng hạn như: 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
XML cung cấp một phương tiện dùng văn bản (text) để mô tả thông tin và
áp dụng một cấu trúc kiểu cây cho thông tin đó Tại mức văn bản, mọi thông tin đều thể hiện dưới dạng text, chen giữa là các thẻ đánh dấu (markup) với nhiệm
vụ ký hiệu sự phân chia thông tin thành một cấu trúc có thứ bậc của các dữ liệu
ký tự, các phần tử dùng để chứa dữ liệu và các thuộc tính của phần tử đó
Đơn vị cơ sở của XML là các ký tự theo định nghĩa của Universal Character Set (Bộ ký tự toàn cầu) Các ký tự được kết hợp theo các tổ hợp chuỗi hợp lệ để tạo thành một tài liệu XML Tài liệu này bao gồm nhiều thực thể (Entity), mỗi thực thể thường là một phần tử nào đó của các ký tự thuộc tài liệu, được mã hóa dưới dạng một chuỗi các bit và lưu trữ trong một tệp văn bản (text file)
Trước XML, có rất ít ngôn ngữ mô tả dữ liệu với các đặc điểm đa năng, thân thiện với giao thức Internet, dễ học và dễ tạo Thực tế, đa số các định dạng trao đổi dữ liệu trước đó đều chuyên dụng, có tính độc quyền và có định dạng nhị phân (chuỗi bit thay vì chuỗi ký tự), khó dùng chung giữa các ứng dụng
Trang 25phần mềm khác nhau hay giữa các hệ nền (platform) khác nhau Việc tạo ra và bảo trì trên các trình soạn thảo thông dụng lại càng khó khăn
Bằng cách cho phép các tên dữ liệu, cấu trúc thứ bậc được phép và ý nghĩa của các phần tử cùng cuộc tính của chúng XML có tính chất mở và có thể được định nghĩa bởi một giản đồ có thể tùy biến được
Giống như HTML, XML cũng dùng các thẻ (Tags) để encodes data (mã hóa dữ liệu) Điểm khác biệt chính giữa HTML và XML là trong khi các thẻ của HTML chứa ý nghĩa về cách trình bày dữ liệu thì các thẻ của XML chứa ý nghĩa
về cấu trúc của các dữ liệu Chính vì vậy, một tài liệu HTML có thể tồn tại một
số thẻ không đúng quy định thì trình biên dịch sẽ bỏ qua những thẻ này, với 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 phải tuân thủ theo một số quy luật nhất định
XML thuộc loại công nghệ biểu diễn thông tin Công nghệ biểu diễn thông tin là ngành khoa học nghiên cứu về các mô hình, phương pháp, kỹ thuật biểu diễn thông tin Các mô hình chính trong công nghệ biểu diễn thông tin bao gồm:
- Tập tin (File) : Thông tin lưu trữ trên bộ nhớ phụ
- Cơ sở dữ liệu (Database) : Thông tin lưu trữ trên bộ nhớ phụ
- Cấu trúc dữ liệu (Data Structure) : Thông tin xử lý trong bộ nhớ chính
- Trang Web (WebPage) : Thông tin thể hiện
- Luồng dữ liệu (Data Stream) : Thông tin trao đổi nội bộ bên trong một
hệ thống tin học hay giửa các cáchệ thống tin học
Chính vì vậy mà phạm vi ứng dụng của các tài liệu XML không chỉ dừng
ở việc trao đổi thông tin mà bao hàm cả các vần đề biểu diễn thông tin khác như lưu trữ thông tin , cấu trúc dữ liệu , thể hiện thông tin , [2]
Trang 261.2.1 Các thành phần cơ bản của XML
a) Định dạng và 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ần khác nhau trong tài liệu XML hay các nút khác nhau trong cây XML Định dạng bao gồm các thẻ bắt đầu, thẻ kết thúc, các phần tử thẻ rỗng,…Tất cả các dữ liệu còn lại trong tài liệu XML không phải là định dạng đều được xem là dữ liệu kí tự
b) Các khai báo trong thẻ XML
Khai báo thẻ XML là không bắt buộc trong tài liệu XML, nếu sử dụng khai báo thẻ XML thì khai báo này bắt buộc phải được đặt ở dòng đầu tiên của tài liệu XML theo cú pháp sau:<?xml [các thuộc tính của thẻ XML]?>
Trong đó [các thuộc tính của thẻ XML] gồm:
- Khai 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)
c) Phần chú thích
Chú thích trong tài liệu XML được đặt trong cặp kí tự <! Nội dung chú thích trong XML >
d) Chỉ thị xử lý
Trang 27Các chỉ thị xử lý được dùng để chỉ dẫn cho bộ phân tích cách xử lý tài liệu XML trong qua trình phân tích Những chỉ thị này thường bắt đầu bằng dấu <? kết thúc cũng bằng dấu ?> Chẳng hạn, khi 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 thì ta phải khai báo như sau: stylesheet?>
f) Thuộc tính
Thuộc tính luôn được gán giá trị là kiểu text, giá trị của thuộc tính phải đặt trong cặp dấu nháy kép “” Tuy nhiên, nếu giá trị chuỗi truyền cho thuộc tính có dấu nháy kép ta có thể sử dụng nháy đơn để thay thế
g) Không gian tên gọi
XML cho phép tự định nghĩa và đặt tên cho các thẻ Nếu tài liệu XML chỉ
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ài liệu XML khác thì điều này không cần thiết Nhưng một khi các ứng dụng phát triển, tập định nghĩa các thẻ XML cần chia sẻ và kết hợp với nhau thì đó là một vấn
đề cần phải quan tâm
1.2.2 Đặc tả cấu trúc dữ liệu XML
Một tài liệu XML có thể được chia thành 2 thành phần chính, mỗi thành phần có các quy định khác nhau
Trang 28- Phần khởi đầu bao gồm các khai báo như: 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ư liệu cho tài liệu XML, các chú thích, các khoảng trắng,… XML không bắt buộc phải khai báo phần mở đầu của tài liệu XML Tuy nhiên W3C khuyến khích chúng ta nên sử dụng phần khai báo này, ít nhất cũng phải có phần khai báo phiên bản sử dụng của XML
- Phần thân của tài liệu chứa nội dung của dữ liệu tối thiểu phải có ít nhất một thành phần, những thành phần này bao gồm các phần tử Mỗi phần tử bao gồm một cặp thẻ gồm 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, nó chứa tất cả các phần tử và các cặp thẻ khác
Hình 1.2 Cấu trúc tài liệu XML
a) 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ân theo các quy tắc sau:
- Các khai báo XML phải đượ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 đặt chúng ở ngay dòng đầu tiên của tài liệu Nếu không theo yêu cầu này thì tài liệu XML được xem là không hợp lệ
- Một tài liệu XML chỉ có duy nhất một phần tử gốc, các phần tử khác nếu có phải là con củ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ở
Phần mở đầu
Khai báo
Mô tả cấu trúc tài liệu XML
Phần nội dung
Trang 29- Phần tử rỗng trong tài liệu XML là phần tử chỉ có một thẻ 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 đều phải nằm giữa cặp thẻ gốc
- Các phần tử lồng nhau phải có thẻ đóng, thẻ mở tương ứng đúng vị trí
- Trong tài liệu XML, chỉ nên sử dụng 5 tham chiếu thực thể được định nghĩa trước Ở đây, một số kí tự nhận dạng đặc biệt như <, >, ‘, “, và & không thể sử dụng trong tài liệu theo cách thể hiện dữ liệu thông thường Muốn sử những kí hiệu này phải dùng tham chiếu thực thể đã được XML định nghĩa trước như bảng cho dưới đây:
Tham chiếu thực thể Ý nghĩa tương ứng
Bảng 1.2 Tham chiếu thực thể trong XML
- Sử dụng tên thuộc tính là duy nhất Các thẻ trong thuộc tính không được đặt cùng tên
- Tất cả các giá trị của thuộc tính đều phải nằm trong cặp dấu 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ể
b) Đặc tả cấu trúc XML với DTD (Document Type Definition)
DTD là một tập hợp các khai báo để mô tả ràng buộc các tài liệu được viết bằng ngôn ngữ đánh dấu như SGML, XML, HTML.DTD có thể được khai báo bên trong một tài liệu XML hoặc trong một tập tin bên ngoài.Với DTD, các
Trang 30nhóm xây dựng hệ thống thông tin có thể thỏa thuận sử dụng một DTD tiêu chuẩn cho việc trao đổi dữ liệu.Các ứng dụng với XML có thể sử dụng một DTD tiêu chuẩn để xác định các kiểu dữ liệu được nhận từ bên ngoài vào là hợp lệ.Chúng ta có thể sử dụng DTD để kiểm tra dữ liệu XML của hệ thống
Ví dụ 1.2 Dữ liệu XML được tham chiếu bởi một file DTD từ bên ngoài như sau:
<?xmlversion="1.0"?>
<!DOCTYPEnote SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Nội dung file node.dtd:
<!ELEMENTnote(to,from,heading,body)>
<!ELEMENTto(#PCDATA)>
<!ELEMENTfrom(#PCDATA)>
<!ELEMENTheading(#PCDATA)>
<!ELEMENTbody(#PCDATA)>
- Nếu DTD được khai báo trong tập tin XML, nó phải được bao bọc bên trong thẻ<DOCTYPE!>:
Trang 31<!DOCTYPEnote [
<!ELEMENTnote(to,from,heading,body)>
<!ELEMENTto(#PCDATA)>
<!ELEMENTfrom(#PCDATA)>
<!ELEMENTheading(#PCDATA)>
<!ELEMENTbody(#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
Trong đó,các DTD ở trên được giải thích như sau:
! DOCTYPE xác định rằng các phần tử gốc của tài liệu này là node
! ELEMENT xác định rằng các phần tử của node phải có bốn yếu tố: "to, from, heading, body”
! ELEMENT xác định các yếu tố để trở thành loại "#PCDATA"
! ELEMENT từ định nghĩa các từ yếu tố để có kiểu "#PCDATA"
! ELEMENT đề xác định các yếu tố tiêu đề là các loại "#PCDATA"
! ELEMENT cơ thể xác định các yếu tố cơ thể là kiểu "#PCDATA"
c) Đặc tả cấu trúc XML với Schemma
Trang 32Để mô tả dữ liệu trong một tài liệu XML, DTD được sử dụng rất phổ biến
vì tính đơn giản của nó Tuy nhiên đối với các tài liệu XML lớn và phức tạp, DTD bắt đầu bộc lộ nhiều hạn chế như: không hỗ trợ nhiều kiểu dữ liệu, không quy định được khoảng giá trị,… Để khắc phục những hạn chế đó của DTD, XML schema được tạo ra Cùng một mục đích với DTD là kiểm tra cấu trúc và tính đúng đắn của một tài liệu XML, vì ra đời sau XML Schema được kế thừa những thành công của DTD và mở rộng thêm một số tính năng để khắc phục những hạn chế của DTD XML Schema được phát triển trên nền tảng của DTD
và nổi trội hơn ở một số đặc điểm:
- Schema cũng là một dạng tài liệu theo chuẩn XML, do đó để mô tả cấu trúc của dữ liệu người dùng schema không cần phải làm quen với cấu trúc mới
- Schema có thể mở rộng, người dùng có thể định nghĩa thêm các kiểu dữ liệu riêng từ các kiểu dữ liệu chuẩn
Hình 1.3 Các kiểu dữ liệu trong Schema(Schema Datatypes)
Các kiểu dữ liệu có sẵn trong Schema bao gồm:
XML
Trang 33- time: thời gian
Ví dụ 1.3 Chomột tài liệu XML như sau:
<?xmlversion="1.0"encoding="utf-8"standalone="yes"?>
<QuanLyDiem>
<xs:schemaid="QuanLyDiem"xmlns="http://www.w3school.com"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:elementname="QuanLyDiem"msdata:IsDataSet="true"msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choiceminOccurs="0"maxOccurs="unbounded">
<xs:elementname="ThongTin">
<xs:complexType>
<xs:sequence>
<xs:elementname="tinh"type="xs:string"minOccurs=" " />
<xs:elementname="donViChuQuan"type="xs:string"minOccurs="0
" />
Trang 34<xs:elementname="khoaHoc"type="xs:string"minOccurs="0" />
<xs:elementname="nganhHoc"type="xs:string"minOccurs="0" />
<xs:elementname="chuyenNganh"type="xs:string"minOccurs="0"/>
<tinh>Yên Bái</tinh>
<donViChuQuan>SỞ GD&ĐT YÊN BÁI</donViChuQuan>
<tenTruong>TRƯỜNG C.Đ.S.P YÊN BÁI</tenTruong>
<khoaHoc>2013-2016</khoaHoc>
<nganhHoc>Cao đẳng Tin học</nganhHoc>
<chuyenNganh>Tin ứng dụng</chuyenNganh>
</ThongTin>
</QuanLyDiem>
Trong đó, Một số nội dung cơ bản được giải thích như sau:
xmlns:xs=http://www.w3.org/2001/XMLSchema:Kiểu dữ liệu dùng trong schema được khai báo trong namespace trên với tiền tố xsd
xmlns="http://www.w3school.com":thể hiện rằngnamespace mặc định
là http://www.w3school.com
Trang 351.2.3 Phân tích tài liệu XML theo mô hình DOM
a) Mô hình đối tượng tài liệu XML
Để 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) Theo mô hình này tài liệ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ội dung của mỗi nút (note), 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:
Attribute Thuộc tính XML
CDATA section Phân đoạn CDATA
Entity reference Tham chiếu thực thể
Processing Instruction Chỉ thị xử lý
Document Type Kiểu tư liệu
Document fragment Đoạn tài liệu
Trang 36Notation Ghi chú
Bảng 1.3: Các loại nút trong mô hình XML
Mô hình DOM được W3C định nghĩa theo nhiều mức khác nhau, cụ thể là các mức sau:
Mức 0: đặc tả XML không chính thức và được áp dụng cho các trình
duyệt trước đây như Nestcape Navigator 3.0 và IE 3.0
Mức 1: Tập trung vào kết hợp giữa tài liệu XML và HTML
Mức 2: Hỗ trợ không gian tên gọi XML, khung nhìn có lọc (filtered
views) và các sự kiện DOM
Mức 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 như sau:
<?xmlversion="1.0"encoding= utf-8"standalone="yes"?>
<SinhVien>
<maSV>131C14</maSV>
<hoTen>Trần Tuấn Anh</hoTen>
<ngaySinh>18/4/1994</ngaySinh>
<gioiTinh>Nam</gioiTinh>
<noiSinh>Văn Yên</noiSinh>
<danToc>Kinh</danToc>
<maLop>tin13a</maLop>
</SinhVien>
Theo mô hình DOM, tài liệu XML ở ví dụ trên được tổ chức lại theo cấu trúc cây, cụ thể như sau:
Trang 37Hình 1.4 Tài liệu XML được biểu diễn theo cấu trúc cây
b) Phân tích tài liệu XML theo mô hình DOM
Theo W3C, định nghĩa tài liệu theo mô hình DOM cơ bản là giao diện trình ứng dụng API không phụ thuộc vào ngôn ngữ và chương trình, cho phép các chương trình và các kịch bản truy cậ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ũng như 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 Stdio.NET, C/C++,… Cho 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 dưới đây:
documentElement Lấy 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
Trang 38firstSibling 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
childeNodes Trả về danh sách các nút trong tài liệu
docType Trả về kiểu của nút gốc
Length Trả về các nút trong danh sách các nút
nodeName Trả về tên của một 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ệu
createTextNode() Khởi tạo dữ liệu text cho một nút
Bảng 1.4: Các phương thức trong mô hình DOM
1.2.4 Tiếp cận, lưu trữ và xử lý dữ liệu XML
Trong khuôn khổ của đề tài, chúng ta tập trung đi sâu vào việc xử lý dữ liệu XML bằng ngôn ngữ lập trình chứ không nghiên cứu về cách hiển thị dữ liệu XML bằng CSS hay XSLT lên trình duyệt Website
XML ra đời từ năm 1996 và đã được W3C phê chuẩn XML trở thành một phần không thể thiếu trong các bộ công cụ lập trình hiện đại
XML có ba chức năng chính :
- Lưu trữ dữ liệu như là một phần bổ sung cho CSDL quan hệ
- Trao đổi thông tin trong một ứng dụng, giữa các ứng dụng và nhất là
trao đổi thông tin trên nền web
Trang 39- Làm cầu nối trung gian để chuyển đổi dữ liệu giữa các hệ quản trị
CSDL
Đã có rất nhiều mô hình truy cập dữ liệu và truy vấn XML W3C đưa ra
mô hình DOM và ngôn ngữ truy vấn Xquery IBM đưa ra giải pháp hybrid database DB2 với hai ngôn ngữ truy vấn dữ liệu: Xquery cho dữ liệu dạng XML
và Sql cho dữ liệu quan hệ Xquery và ngôn ngữ lập trình Java là thế mạnh của lập trình cho CSDL DB2 và dữ liệu XML nói chung
Năm 2005 được xem như một mốc quan trọng của Microsoft khi xây dựng NET framework 3.5 và ngôn ngữ truy vấn tích hợp LINQ Đặc điểm quan trọng của LINQ là truy vấn dữ liệu dạng IEnumberable, dữ liệu quan hệ và dữ liệu XML Cách tiếp cận này được Oracle ủng hộ
Từ NET framework 3.5, LinQ được gắn liền với class XDocument LinQ gồm có 3 bộ phận:
- LinQ to object, truy vấn trên dữ liệu có thể triển khai dạng IEnumberable
- LinQ to SQL, truy vấn trên CSDL quan hệ, đặc biệt là Sql Server
- LinQ to XML, truy vấn trên CSDL phi quan hệ XML
Tuy ba bộ phận khác nhau, nhưng có cùng cú pháp và kiểu dữ liệu trả về Mỗi bộ phận được cài đặt trong cácName Space khác nhau
LinQ là từ viết tắt của Language-Integrated Query, do Anders Hejlsberg xây dựng Thường được gọi Microsoft Linq Với Linq, việc lập trình trên các kiểu dữ liệu Ienumerable, Sql Server, XML trở nên dễ dàng, trực quan, giải phóng các lao động cấp thấp của lập trình viên, tăng hiệu quả của quy trình xây dựng phần mềm.LinQ To XML có cấu trúc truy vấn tương tự SQL Nhà phát triển trung bình có thể viết các truy vấn ngắn gọn, mạnh mẽ, viết mã ít hơn
Trang 40nhưng có ý nghĩa nhiều hơn,họ có thể sử dụng các biểu thức truy vấn từ nhiều
dữ liệu các lĩnh vực tại một thời điểm
LinQ to XML cũng giống như Document Object Model (DOM) ở chỗ có thể chuyển các tài liệu XML vào bộ nhớ, có thể truy vấn và sửa đổi các tài liệu Sau khi chỉnh sửa nó, có thể lưu vào một tập tin hoặc xuất nó ra Tuy nhiên, LinQ to XML khác DOM ở chỗ: cung cấp mô hình đối tượng mới đơn giản hơn
và dễ thao tác hơn để làm việc, đó là tận dụng các cải tiến ngôn ngữ trong Visual C#
Trong ví dụ dưới đây, chúng ta sẽ xem xét việc sử dụng LinQ To XML để thực hiện các thao tác truy vấn và xử lý dữ liệu Ở đây, ta sử dụng một tập tin XML đơn giản Dữ liệu có nút gốc là QuanLyDiem và trong nội dung bảng Lops có hai Elements là maLop và tenLop
<xs:elementname="QuanLyDiem"msdata:IsDataSet="true"msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choiceminOccurs="0"maxOccurs="unbounded">
<xs:elementname="Lops">
<xs:complexType>
<xs:sequence>
<xs:elementname="maLop"type="xs:string"minOccurs= 0" />