1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tích hợp các hệ thống cơ sở dữ liệu quan hệ và xml

73 21 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 73
Dung lượng 1,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trên thực tế, công nghệ XML đã và đang được người sử dụng ưa thích bởi sự tích hợp dễ dàng của nó với các cơ sở dữ liệu quan hệ – Chúng ta không những có thể phát triển một tài liệu XML

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRẦN THỊ XUÂN

TÍCH HỢP CÁC HỆ THỐNG

CƠ SỞ DỮ LIỆU QUAN HỆ VÀ XML

Trang 2

MỞ ĐẦU 1

Chương 1: TỔNG QUAN VỀ XML VÀ CƠ SỞ DỮ LIỆU QUAN HỆ 3

1.1 Tổng quan về XML 3

1.1.1 Giới thiệu công nghệ XML 3

1.1.2 Cấu trúc 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 hợp khuôn dạng 10

1.1.5 Định nghĩa kiểu tư liệu DTD 11

1.1.6 Lược đồ XML 13

1.1.7 Bảng định kiểu CSS 18

1.1.8 Mô hình DOM 20

1.1.9 Phân tích tài liệu XML theo mô hình DOM 22

1.1.10 XPATH 25

1.1.11 XLINK và XPOINTER 27

1.1.11.1 XLINK 27

1.1.11.2 XPOINTER 28

1.2 Cơ sở dữ liệu quan hệ 29

1.2.1 Cấu trúc cơ sở dữ liệu quan hệ 29

1.2.2 Ràng buộc toàn vẹn trên một CSDL quan hệ 31

1.2.2.1 Định nghĩa 31

1.2.2.2 Các yếu tố của ràng buộc toàn vẹn 32

1.2.3 Chuẩn hoá một CSDL quan hệ 33

1.3 Kết luận 34

Chương 2: TÍCH HỢP CÁC HỆ THỐNG CSDL QUAN HỆ VÀ XML 35

2.1 Phương pháp luận 36

2.1.1 Đối sánh nội dung của một CSDL quan hệ và một tài liệu XML 36

2.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ệ 38

2.1.3 Tên duy nhất 41

Trang 3

2.1.5 Quan hệ 43

2.1.6 Thứ tự 44

2.2 Chuyển một tài liệu XML sang một CSDL quan hệ 46

2.3 Chuyển một CSDL quan hệ sang một tài liệu XML 48

2.3.1 Phi chuẩn các lược đồ quan hệ 48

2.3.2 Kết nối các CSDL đã phi chuẩn 52

2.3.3 Ánh xạ CSDL quan hệ đã kết nối thành một DOM chính để chuyển thành tài liệu XML 54

2.4 Kết luận 57

Chương 3: CÀI ĐẶT THUẬT TOÁN TÍCH HỢP CÁC HỆ THỐNG CSDL QUAN HỆ -VÀ XML 58

3.1 Thuật toán 58

3.1.1 Đọc tài liệu XML dưới dạng sơ đồ hình cây 58

3.1.2 Hiển thị tài liệu XML dưới dạng bảng 59

3.1.3 Chuyển một CSDL quan hệ sang một tài liệu XML 60

3.2 Cài đặt thuật toán 61

3.3 Kết quả - đánh giá 68

KẾT LUẬN 69

TÀI LIỆU THAM KHẢO 70

Trang 4

MỞ ĐẦU

Ngày nay cùng với việc bùng nổ thông tin, các thông tin trên Internet cũng ngày càng nhiều (số lượng các trang Web trên Internet khoảng gần 2 tỷ), mà như chúng ta biết thì các Cơ sở dữ liệu quan hệ ngày càng chiếm nhiều ưu thế trong việc lưu trữ nội dung của các web site Cùng lúc đó, ngôn ngữ định dạng mở rộng (Extensible Markup Language –XML) nhanh chóng chiếm ưu thế trong những web site sử dụng văn bản siêu liên kết Vì vậy, sự tích hợp các hệ thống

Cơ sở dữ liệu quan hệ và XML là chủ đề chính của luận văn này với mục đích là mong muốn tất cả các dữ liệu cùng với các chương trình trong tương lai sẽ tích hợp và hiểu nhau hơn thông qua XML

Trong giai đoạn đầu, hầu hết các trang Web đều được viết bằng ngôn ngữ định dạng dữ liệu thông qua các cặp thẻ đặc biệt trong tệp tin văn bản HTML

Do tính đơn giản, dễ hiểu và dễ sử dụng của HTML mà nó đã trở thành ngôn ngữ được ưa chuộng để xây dựng các trang Web trong thời gian đó Tuy vậy, với lượng thông tin khổng lồ và không ngừng tăng của Web, cùng với thị hiếu và nhu cầu sử dụng của người dùng ngày càng cao thì HTML không đủ để đáp ứng những yêu cầu đó – nó chỉ có thể tạo trang Web chuẩn Chính vì vậy mà ngôn ngữ XML đã ra đời, với những tính năng nổi trội của mình, XML đã giúp cho việc quản lý, trình bày và tổ chức thông tin trên Web thông qua các hệ cơ sở dữ liệu được dễ dàng và đặc biệt là đáp ứng được những mong mỏi từ phía người dùng

Trên thực tế, công nghệ XML đã và đang được người sử dụng ưa thích bởi

sự tích hợp dễ dàng của nó với các cơ sở dữ liệu quan hệ – 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 quan hệ đang tồ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 Để giải quyết vấn đề này, chúng ta cần tìm hiểu rõ về XML và mô hình DOM cũng như 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ệu XML và ngược lại Và đây cũng chính là nội dung

Trang 5

được đưa ra trong luận văn thông qua những nghiên cứu của một số bài báo, các báo cáo chuyên ngành ở các hội nghị quốc tế được phổ biến trên mạng cùng với các giáo trình về XML và các giáo trình liên quan khác

Luận văn được trình bày gồm ba chương:

 Chương 1: “Tổng quan về XML và Cơ sở dữ liệu quan hệ”- Trình

bày tổng quan về cấu trúc của một tài liệu XML, định nghĩa kiểu tư liệu DTD, lượ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ới

thiệ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 CSDL quan hệ và XML và cài đặt thuật toán bằng ngôn ngữ lập trình Java

và phần Kết luận

Hà Nội, tháng 05 năm 2007

Trang 6

Chươ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 về công nghệ XML

Ngôn ngữ định dạng (markup language) là tất cả những gì dùng để mô tả nội dung một tài liệu – Đó là cách nội dung tài liệu được diễn dịch Ngôn ngữ định dạng mà mọi người đều rất quen thuộc hiện nay chính là ngôn ngữ HTML

(Hyper Text Markup Language) HTML cho phép ta tạo nội dung của các trang

Web rất đẹp Theo thời gian, với các phiên bản khác nhau của HTML, số các cặp thẻ được định nghĩa ngày càng tăng Ví dụ, với phiên bản HTML 4.01 gần đây

đã định nghĩa số các cặp thẻ là 120 (kể cả các cặp thẻ mở rộng) Tuy nhiên để xử

lý các ứng dụng trên Web với sự phát triển của ứng dụng mạng thì rõ ràng số các cặp thẻ đó vẫn chưa đủ (thực sự thì ta không thể có đủ các cặp thẻ để sử dụng cho những mục đích riêng của mình) Vậy câu hỏi đặt ra là làm thế nào để giải quyết được vấn đề đó?

Sự ra đời của ngôn ngữ XML (Extensible Markup Language) như một giải

pháp cho vấn đề trên XML là ngôn ngữ được định nghĩa bởi tổ chức mạng toàn cầu (World Wide Web Consortium- W3C) HTML và XML có quan hệ rất gần gũi với nhau - cả XML và HTML đều dựa trên chuẩn ngôn ngữ định dạng tổng

quát SGML (Standard Generalized Markup Language) và cả hai ngôn ngữ đều

sử dụng các cặp thẻ Tuy vậy trong ngôn ngữ XML, các cặp thẻ được sử dụng để định nghĩa và khai báo cấu trúc dữ liệu và được định nghĩa bởi người dùng thông qua một số quy tắc của nó trong khi các cặp thẻ của HTML chỉ sử dụng để định dạng và được định nghĩa, quy định trước Nhờ khả năng tự định nghĩa các thẻ cũng như khả năng cho phép định nghĩa và khai báo cấu trúc dữ liệu mà ngôn ngữ XML trở thành ngôn ngữ rất cần cho công nghệ Internet và các ứng dụng mạng ngày nay Nhưng có lẽ lý do quan trọng nhất để XML trở lên phổ biến đó

là XML cho phép dễ dàng xử lý, chuyển tải và trao đổi dữ liệu giữa rất nhiều

Trang 7

ứng dụng và tài liệu người dùng với các định dạng khác nhau Trong XML dữ liệu được định dạng và lưu ở dạng text, do vậy 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ông thường hoặc bằng các trình soạn thảo chuyên nghiệp của XML (XML Notepad, XML Writer, XML Spy hay eNotepad) Sự kết hợp giữa XML với định dạng CSS (Cascade Style Sheet) hay XSL (Extensible Style Language) giúp cho việc định dạng dữ liệu hiệu quả hơn rất nhiều so với định dạng nhị phân (định dạng được coi là hiệu quả vì nó chứa

dữ liệu ở dạng nén)[1] Ngoài ra, khả năng được coi là mạnh nhất của XML đó là khả năng có thể tạo ra các ngôn ngữ định dạng tuỳ biến – nó cho phép ta có thể tuỳ biến vào trình duyệt hoặc ứng dụng để xử lý theo ngôn ngữ định dạng phù hợp theo một tập thẻ quy ước Một thế mạnh khác của XML đó là nó không chỉ cho phép ta lưu dữ liệu vào file XML mà còn có thể tổ chức dữ liệu theo cấu trúc XML cho phép các phần tử thẻ tích hợp với nhau tạo nên một cấu trúc dữ liệu phân cấp hoàn chỉnh Điều này thật quan trọng khi chúng ta cần đến khả năng định nghĩa dữ liệu có cấu trúc

XML là một ngôn ngữ đòi hỏi tính chính xác cú pháp của ngôn ngữ rất cao Trình duyệt không chấp nhận một tài liệu XML viết sai cú pháp và nó sẽ không phân tích tiếp tài liệu XML cho đến khi nào tài liệu XML hoàn toàn đúng khuôn dạng và cú pháp

1.1.2 Cấu trúc của tài liệu XML

1.1.2.1 Tài liệu XML

Các thẻ trong XML được tự định nghĩa và xác định mục đích sử dụng thẻ

Do vậy vấn đề đặt ra ở đây là cần xác định cho mình cú pháp để các thẻ tuân theo Có hai cách để xác định cú pháp mà tài liệu XML có thể tuân theo, đó là:

 Mô hình định nghĩa kiểu tư liệu XML (DTD – Definition Type Document)

 Mô hình lược đồ XML (schema)

Nội dung của một tài liệu XML bị ràng buộc bởi hai tính chất:

 Tính hợp khuôn dạng (well – formed document)

Trang 8

 Tính hợp lệ (validity)

Tài liệu XML có thể được viết bằng các trình soạn thảo thông thường hoặc các trình soạn thảo chuyên dụng của XML

1.1.2.2 Cấu trúc của tài liệu XML

Một tài liệu XML có thể được chia thành 2 phần chính, mỗi phần có thể có các thành phần theo quy định khác nhau

a, Phần khởi đầ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ã hoá dữ liệu, chỉ thị xử lý, định nghĩa kiểu tư liệu cho tài liệu DTD, các chú thích, khoảng trắng Chuẩn XML không bắt buộc phải khai báo phần mở đầu của XML Tuy nhiên W3C khuyến khích 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

b, 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ột hay nhiều thành phần (phần này bắt buộc 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ử (element) Mỗi phần tử thường 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 gọi 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ếu chứ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

PROLOG

Khai báo

DTD- Định nghĩa kiểu tư liệu

Phần thân của tài liệu

Hình 1.1: Cấu trúc tài liệu XML

Trang 9

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ần khác nhau trong tài liệu XML hay các loại nút trong cây XML Định dạng bao gồm các cặp thẻ (thẻ bắt đầu và thẻ kết thúc), các phần tử thẻ rỗng, các tham chiếu thực thể, tham chiếu ký tự, chú thích, phân đoạn CDATA, khai báo kiểu tài liệu và chỉ thị xử lý Tất cả các tài liệu còn lại trong XML không phải là định dạng đều được xem là ký tự Các ký tự này được chuẩn hoá theo chuẩn ISO/ IEC 10646 XML hỗ trợ rất nhiều kiểu mã hoá dữ liệu như: UTF–8, UTF-16, ISO–8859-5, ISO-10646-UCS-4 Tất cả các trình xử lý XML đều được hỗ trợ mã hoá dữ liệu theo chuẩn Unicode UTF-8, UTF-16 Có những

ký tự mà chúng vừa được sử dụng để tạo các định dạng, vừa là dữ liệu ký tự nên rất dễ nhầm lẫn trong việc sử dụng Ví dụ như dấu &, >, <,…[1]

Các khai báo XML:

o Khai báo trong tài liệu XML được viết theo cấu trúc <?xml [các kiểu khai báo]?> Ví dụ có khai báo: <?xml version=”1.0” standalone=”yes” ?> Phần khai báo không bắt buộc phải có trong tài liệu, tuy nhiên nếu có khai báo thì bắt buộc phải đặt ở dòng đầu tiên của tài liệu

o Các khai báo trong XML[1]:

 Khai báo phiên bản (version): khia 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à tuỳ chọn nhưng W3C khuyến khích nên sử dụng phần khai báo này)

 Khai báo mã hoá (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 mã khác như: Unicode, UCS-2, UCS-4,…(khai báo này là tuỳ 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à tuỳ chọn)

Trang 10

Phần chú thích:

o Chú thích trong XML cũng tương tự như chú thích trong các ngôn ngữ khác – không ngoài mục đích làm chương trình được rõ ràng, mạch lạc hơn không chỉ đối với người xây dựng chương trình mà còn đối với các đọc giả khác Chú thích trong XML được đặt trong cặp chuỗi kí tự <! Nội dung chú thích >

và khi diễn dịch nội dung tài liệu các trình phân tích bỏ qua những dòng chú thích

o Một số quy tắc khi viết chú thích trong tài liệu XML:

 Không được đặt chú thích trước các khai báo

 Không đặt chú thích bên trong các định dạng

 Không dùng chuỗi bên trong chú thích

Chỉ thị xử lý:

o Chỉ thị xử lý được sử dụng để chỉ dẫn cho bộ phân tích cách xử lý tài liệu trong quá trình phân tích Chỉ thị xử lý được bắt đầu bằng <? và kết thúc bằng ?> và thường được đặt ở đầu tài liệu

o Ví dụ một chỉ thị xử lý: <?xml-stylesheet type=”text/ css” href=”greeting.css” ?> là một chỉ thị xử lý 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 (Cascade Style Sheet)

Thẻ, các phần tử (element), thực thể (entity) và thuộc tính (attribute):

o Thẻ và các phần tử:

 Cấu trúc tài liệu XML được tạo 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) và mỗi phần tử trong tài liệu XML bao gồm một cặp thẻ - thẻ bắt đầu và thẻ kết thúc (trong mỗi cặp thẻ có thể chứa các cặp thẻ khác hoặc chỉ chứa dữ liệu) Một phần

tử XML tuân theo cú pháp tổng quát sau: <TagName [attName=”attValue”]>Content</TagName> Trong đó, TagName là tên thẻ

(được đặt theo nguyên tắc: tên thẻ có thể bắt đầu bằng ký tự, gạch chân (_), hoặc

Trang 11

dấu hai chấm (:), tiếp theo có thể là ký tự, ký số, gạch nối, dấu hai chấm nhưng

không được chứa khoảng trắng), attName là tên thuộc tính (được đặt theo nguyên tắc đặt tên thẻ), attValue là giá trị được gán cho thuộc tính và Content là

nội dung của phần tử 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ài liệ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 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 < /> Ví dụ thẻ <DOCUMENT/> là một phần tử và là một phần tử rỗng [1]

 Phần tử gốc (root element): Là phần tử chứa 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 là duy nhất đối với một tài liệu XML được coi là hợp khuôn dạng

o Thực thể (entity):

 Một thực thể thường có nội dung là văn bản (text), tuy nhiên cũng có thể là dữ liệu nhị phân Một thực thể thực chất chính là cách mà XML tham chiếu đến một mục dữ liệu Có hai loại thực thể: thực thể tổng quát (general entity) và thực thể tham số (parameter entity) Trong tài liệu, thực thể

tổng quát được tham chiếu theo cú pháp: &entityName; và thực thể tham số được tham chiếu theo cú pháp: %entityName;

 Thực thể tổng quát có thể là các thực thể đã được định nghĩa trước trong XML như: &lt, &gt, &amp, &quot, &apos (đại diện cho các ký tự tương ứng: <, >, &, “, „) hoặc cũng có thể là các thực thể được người dùng định nghĩa trong DTD theo cú pháp: <!ENTITY NAME DEFINITION>, trong đó NAME là tên thực thể, được sử dụng để tham chiếu đến nội dung được định nghĩa của chúng DEFINITION là định nghĩa của thực thể (có nhiều dạng định nghĩa thực thể, định nghĩa đơn giản nhất là các văn bản mà ta muốn thay thế khi thực thể được tham chiếu đến

o Thuộc tính (attribute):

Trang 12

 Cho phép xác định thêm thông tin và ý nghĩa của thẻ Thuộc

tính được kết hợp theo cặp name=value và được đặt bên trong thẻ mở hoặc thẻ

rỗ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à dữ liệu dạng text)  giá trị gán cho thuộc tính được đặt trong cặp

“” hoặc cặp „‟

Phân đoạn CDATA:

o Phân đoạn CDATA cũng là một phần tử trong tài liệu XML nhưng bao gồm chỉ một thẻ Thẻ này bắt đầu bằng <![CDATA và kết thúc ] ]> Toàn bộ nội dung được đặt trong phân đoạn CDATA sẽ không được trình phân tích coi như cấu trúc XML mà chúng chỉ được xem như là dữ liệu thuần tuý (không được trình phân tích đụng đến) Do vậy phân đoạn CDATA thường được sử dụng để tránh sự xáo trộn các cặp thẻ khi chúng ta đặt nội dung của tài liệu XML ngoại vào tài liệu XML đích (tài liệu hiện hành)

Không gian tên (namespace):

o Việc kết hợp các tài liệu XML lại với nhau là một vấn đề cần phải xem xét vì khả năng cho phép tự do định nghĩa và đặt tên các thẻ trong XML Do vậy việc định ra phạm vi hay không gian tên cho các thẻ trong tài liệu XML là cần thiết

o Để định nghĩa một không gian tên cho các thẻ, ta đưa vào thuộc tính

xmlns:prefix vào phần tử gốc 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 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 đã định nghĩa, theo cú pháp:

<prefix:TagName> đối với thẻ mở và </prefix:TagName> đối với thẻ đóng

o Ví dụ: cho một tài liệu XML chưa được định nghĩa không gian tên như sau [2]:

Trang 13

1.1.4 Cấu trúc tài liệu 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 :

Trang 14

 Các khai báo XML cần được đặt ở dòng đầu tiên của tài liệu : như khai báo version hay các chỉ thị xử 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à phần tử con của phần tử gốc

 Mọi phần tử khác rỗng phải bao gồm đầy đủ thẻ đóng và thẻ mở

 Phần tử rỗng bắt buộc phải đóng bằng chuỗi />

 Các phần tử lồng nhau phải có thẻ đóng và thẻ mở hợp vị trí (thẻ mở theo thứ tự từ ngoài vào trong còn thẻ đóng theo thứ tự từ trong ra ngoài)

 Trong tài liệu XML, tên thuộc tính là duy nhất và giá trị của thuộc tính phải được đặt trong cặp nháy kép ( “ ”) hoặc nháy đơn („ „)

 Chỉ sử dụng 5 tham chiếu thực thể được định nghĩa trước trong XML

1.1.5 Định nghĩa kiểu tư liệu DTD (Document Type Definition)

Khi xây dựng các phần tử trong XML, chúng ta có thể tuỳ ý quyết định cách sử dụng chúng (có thể trong các thẻ chỉ chứa nội dung là dữ liệu text thuần tuý hoặc cũng có thể chứa các phần tử con khác) Tuy nhiên để tài liệu được rõ ràng chúng ta nên định nghĩa kiểu tư liệu mà mỗi phần tử sẽ biểu diễn

Một tài liệu XML không chỉ đòi hỏi phải hợp khuôn dạng (well-formed) mà còn đòi hỏi phải hợp lệ Một tài liệu XML được xem là hợp lệ và có giá trị khi

Trang 15

mà tất cả các phần tử trong tài liệu được định nghĩa kiểu mà nó sẽ chứa Việc định nghĩa kiểu dữ liệu cho các phần tử gọi là định nghĩa kiểu tư liệu DTD [1] Định nghĩa kiểu tư liệu DTD tuân theo cú pháp tổng quát được quy định bởi

tổ chức XML W3C như sau :

< !DOCTYPE root-name [DTD]>

Trong đó DTD là các định nghĩa cho phần tử trong tài liệu (có thể là các định nghĩa nội- internal hoặc ngoại- external) Mỗi phần tử được định nghĩa theo

cú pháp : < !ELEMENT name content_model>

Trong đó name là tên 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 (gồm dữ liệu có thể sử dụng để phân tích hoặc các phần tử con khác)

Khai báo và định nghĩa kiểu tư liệu được đặt ở phần khởi đầu (PROLOG) của tài liệu (đặt sau phần khai báo và chỉ thị xử lý)

Ví dụ về khai báo và định nghĩa DTD trong tài liệu XML:

<?xml version =”1.0” standalone=”yes”?>

<!DOCTYPE DANHSACH [

<!ELEMENT DANHSACH (SINHVEN)*>

<!ELEMENT SINHVIEN (HOTEN, NGAYSINH, TRUONG)>

<!ELEMENT HOTEN (HODEM, TEN)>

<!ELEMENT HODEM (#PCDATA)>

<!ELEMENT TEN (#PCDATA)>

<!ELEMENT NGAYSINH (#PCDATA)>

<!ELEMENT TRUONG (#PCDATA)>

Trang 16

tử gì, thứ tự ra sao, chứa thuộc tính gì và nội dung thế nào) nhưng nó tỏ ra mạnh

mẽ và chính xác hơn, với ưu điểm nổi bật là cho phép định nghĩa và khai báo kiểu dữ liệu thực sự mà chúng ta muốn sử dụng

Lược đồ là tài liệu XML có thể được cài đặt theo định nghĩa của Microsoft hoặc theo định nghĩa của tổ chức quốc tế W3C Về cơ bản thì cả hai cách cài đặt này đều phải sử dụng không gian tên cho tài liệu, song trong mỗi cách lại sử dụng không gian tên theo một phương cách khác nhau

Để kết hợp lược đồ XML vào trong tài liệu, Microsoft sử dụng không gian tên mặc định cho tài liệu bằng khai báo thuộc tính xmlsn tại phần tử gốc cùng với thông tin về file chứa lược đồ x-schema như sau:

<? xml version=”1.0” ?>

<rootElement xmlns=”x-schema: fileNameSchema”>

………

</rootElement>

Trang 17

Trong đó, rootElement là tên phần tử gốc, fileNameSchema là tên file chứa lược đồ đã được định nghĩa, fileNameSchema được đặt với tên và phần mở rộng

tuỳ ý Ví dụ như schema1.xml

Trong fileNameSchema, nội dung lược đồ được định nghĩa như sau:

- Lược đồ là một tài liệu XML bắt đầu bằng phần tử schema, được khai báo theo dạng thức:

- Để tạo lược đồ cho Internet Explorer, ta phải thiết lập không gian tên

mặc định cho tài liệu chứa lược đồ là urn:schema-microsoft-com:xml-data, cùng với không gian tên mang định danh urn: schema-microsoft-

com:datatypes với tiếp đầu ngữ dt cho phần khai báo kiểu dữ liệu (datatype)

Trang 18

Các kiểu dữ liệu cùng với không gian tên dt được định nghĩa sẵn như bảng sau [1]:

bin.base64 Kiểu đối tượng nhị phân mã hoá theo chuẩn base64

bin.hex Kiểu hex

boolean Nhận giá trị 0 hoặc 1

char Kiểu ký tự

date Kiểu ngày tháng

dateTime Kiểu ngày giờ

float Kiểu số thực với dấu chấm động

int Kiểu số nguyên

number Kiểu số tổng quát (có thẻ là số âm, dương, số mũ, ) I1 Số nguyên 1 byte

I2 Số nguyên 2 byte

I4 Số nguyên 4 byte

R4 Số thực với độ chính xác 7 ký số

R8 Số thực với độ chính xác 15 ký số

ui1 Số nguyên không dấu 1 byte

ui2 Số nguyên không dấu 2 byte

ui4 Số nguyên không dấu 4 byte

- Phần tử của tài liệu XML được định nghĩa trong lược đồ theo cấu trúc sau :

<?xml version=”1.0” ?>

<schema name=name_fileNameSchema

xmlns = ”urn:schema-microsoft-com:xml-data”

xmlns:dt = ”urn:schema-microsoft-com:datatypes”>

Trang 19

là closed hoặc open), dt :type (kiểu dữ liệu của phần tử) Ví dụ có định nghĩa các

phần tử như sau :

<ElementType name= ”HOTEN” content=”textOnly” model=”closed”>

<ElementType name = ”NGAYSINH” dt:type=”date”>

Các phần tử trong một lược đồ XML được nhìn nhận theo hai góc độ: phần

tử có kiểu phức hợp (là phần tử có chứa các phần tử con và thuộc tính) và phần

tử có kiểu đơn giản (là phần tử chỉ chứa dữ liệu đơn giản như: chuỗi, ngày tháng,

số nhưng không chứa các phần tử con và thuộc tính) Việc xác định kiểu các phần tử trong tài liệu XML có ảnh hưởng trực tiếp tới việc định nghĩa lược đồ XML theo chuẩn W3C

Để sử dụng một lược đồ đã định nghĩa, chuẩn W3C mở ra hướng rộng hơn

so với việc sử dụng theo Microsoft Thay vì phải sử dụng thuộc tính xmlns để tham chiếu đến file chứa lược đồ, W3C cho phép khai báo không gian tên cho tài liệu tham chiếu đến file lược đồ theo địa chỉ URL theo cách thức:

<?xml version =”1.0” ?>

<rootElement xmlns=”URL” >

</rootElement>

Nội dung của lược đồ XML theo dạng thức thuần văn bản Nó mở đầu bằng

khai báo chuẩn XML, tiếp theo W3C sử dụng tiếp đầu ngữ xsd: để tham chiếu

đến không gian tên của lược đồ, theo cú pháp sau:

Trang 20

<?xml version =”1.0” ?>

<xsd:schema xmlns:xsd = “http:// www w3.org./1999/XMLSchema" >

</xsd:schema>

Tiếp theo là khai báo các phần tử và kiểu dữ liệu: Đối với kiểu phần tử phức

hợp  sử dụng phần tử khai báo <xsd:complextType>, một phần tử phức hợp

thường chứa các khai báo phần tử con, tham chiếu đến các phần tử khác và khai

báo các thuộc tính Phần tử được khai báo bằng chỉ thị <xsd:element>, khai báo thuộc tính bằng chỉ thị <xsd:attribute> Đối với kiểu phần tử đơn giản được khai báo bằng chỉ thị <xsd:simpleType> Sau khi định nghĩa kiểu phần tử, ta

hoàn toàn có thể khai báo các phần tử sử dụng kiểu vừa tạo

Ví dụ: Ta có khai báo kiểu phức hợp cho phần tử address

<xsd:complexType name = ”address”>

<xsd:element name = ”name” type = “xsd:string” />

<xsd:element name = ”street” type = “xsd:string” />

<xsd:element name = ”city” type = “xsd:string” />

<xsd:element name = ”state” type = “xsd:string” />

<xsd:attribute name = ”phone” type = “xsd:string” use =”option”/>

</xsd:complexType>

Sau đó có thể sử dụng định nghĩa phần tử address cho phần tử <Lender> và

<Borrower> để lưu thông tin cá nhân trong tài liệu như sau:

<xsd:complexType name =”transactionType”>

<xsd:element name=”Lender” type =”address”/>

<xsd:element name=”Borrower” type =”address”/>

<xsd:element ref=”note” minOccurs =”0”/>

<xsd: attribute name =”borrowDate” type=”xsd:date”/>

<xsd:complexType>

Trang 21

Để khai báo kiểu dữ liệu cho các phần tử trong lược đồ ta sử dụng chỉ thị:

<xsd:dataType>, trong đó dataType là một trong các kiểu dữ liệu được cho

trong bảng sau [1]:

Binary Kiểu dữ liệu nhị phân

boolean Kiểu logic

byte Kiểu byte

century Kiểu thế kỷ (ví dụ 20)

date Kiểu ngày

decimal Kiểu thập phân

double Kiểu số thực 64 – bit

ENTITY Kiểu thực thể

ENTITIES Kiểu đa thực thể

ID Kiểu định danh

int, integer Kiểu số nguyên

IDREF Kiểu tham chiếu định danh

NOTATION Kiểu ghi chú

NMTOKEN Kiểu token đơn

NMTOKENS Kiểu đa token

month Kiểu tháng (ví dụ 4, 6)

string Kiểu chuỗi

1.1.7 Bảng định kiểu CSS (Cascading Stype Sheet)

Bảng định kiểu CSS (Cascading Style Sheet) giống như một tập mẫu (template) quy định các kiểu định dạng cho các phần tử trong XML như các định dạng về font chữ, màu sắc, mầu nền,

Trang 22

Bảng định kiểu CSS cũng đã đượ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ụng CSS vào XML là các thẻ trong HTML thì có sẵn thông tin định dạng còn 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ạng cho các phần tử trong XML (hay các thẻ trong HTML) trong một file tách biệt với tà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 chỉ thị

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 cho các phần

tử trong tài liệu, file này có phần mở rộng bắt buộc là css và có 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:

elementName {display:block; attName1: attValue1;…;attNamen:attValuen}

Trong đó elementName là tên phần tử cần định dạng, display:block hiển

thị thành phần theo cấp khối (bắt đầu ở đầu dòng và thành phần theo sau nó sẽ

bắt đầu ở dòng tiếp theo), hoặc display:line hiển thị thành phần theo nội dung

attName là tên thuộc tính, attValue là giá trị của thuộc tính Nếu muốn gom 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 <elementName CLASS=”className”>

Ví dụ: có tệp tin định dạng format.css sau:

TAILIEU{display:block; font-size:24pt; font-weight:bold;color:red}

TIEUDE {display: block; font-style:bold; color:blue}

.F1{font:12pt/20pt "Arial Black"; color:black; font- style:italic}

Và một tài liệu XML có nội dung sau:

<?xml version="1.0" standalone="yes"?>

Trang 23

<?xml-stylesheet type="text/css" href="format.css"?>

1.1.8 Mô hình DOM (Document Object Model)

Để xử lý một tài liệu XML, W3C định nghĩa tài liệu theo mô hình đối tượng tài liệu DOM (Document Object Model) Theo mô hình này thì một 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 DOM có các loại nút sau đây [1]:

Processing Instruction Chỉ thị xử lý

Trang 24

Mô hình DOM được W3C định nghĩa theo nhiều cấp độ khác nhau Cụ thể

là các cấp độ [10]:

 Level 0: Là đặc tả DOM không chính thức và được áp dụng cho các trình duyệt trước đây như Netscape navigator 3.0 và IE 3.0

 Level 1: Tập trung vào sự 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 (filtered views)

Trang 25

Theo mô hình DOM, tài liêu XML trên được tổ chức theo cấu trúc hình cây như sau:

Hình 1.2: Cấu trúc cây tài liệu XML 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 XML theo mô hình DOM (Document Object Model) Về cơ bản DOM là một giao diện trình ứng dụng API (Application Program Interface) không phụ thuộc 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 độ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 Studio.NET, C/C++, Song 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 [11]:

Chuc cac ban nghien cuu thanh cong linh vuc khoa hoc xa hoi

Sach khoa hoc xa hoi

Trang 26

Phương thức Ý nghĩa

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 cùng cấp đầu tiên

nextSibling Lấy nút cùng cấp kế tiếp

previousSibling Lấy nút cùng cấp trước đó

lastSibling Lấy nút cùng cấp cuối cùng

getElementsByTagName Lấy về danh sách các nút

Item(i) Truy cập nút thứ i trong danh sách (i=0,1, ) childNodes 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

Ví dụ: Phân tích tài liệu XML dựa vào mô hình DOM sử dụng Javascript

Trang 27

<SCRIPT LANGUAGE="JavaScript">

<TIEUDE> Sach khoa hoc </TIEUDE>

<NOIDUNG> Khoa hoc cong nghe </NOIDUNG>

</TAILIEU>

Trang 28

dữ liệu trong tài liệu XML thông qua đường dẫn, hay nó cung cấp một cơ chế tham chiếu đến các nút trong một tài liệu XML theo các dạng sau [1]

XPATH Ý nghĩa Ví dụ

Dấu chấm “.” Tham chiếu đến nút hiện hành <xsl:value-of

select=”.”/>

/rootName Là dạng đường dẫn tuyệt đối

(bắt đầu từ root), kết quả chọn là phần tử rootName

/AAA cho kết quả là phần tử được chọn AAA

/rootName[/elementName]n/eN

ame

Chọn tất cả các phần tử eName /AAA/BBB/CCC

cho kết quả là chọn tất cả các phần tử CCC là con của /AAA/BBB

//elementName Dạng đường dẫn tương đối (tổng

thể), cho kết quả là chọn tất cả các phần tử elementName trong tài liệu

//BBB Cho kết quả là chọn tất cả các phần tử BBB

//elementName/eName Chọn tất cả các phần tử eName

trong tài liệu là con của elementName

//BBB/CCC Cho kết quả là chọn tất cả các phần tử CCC là con của

Trang 29

BBB /rootName[/elementName]n/* Chọn tất cả các phần tử trong tài

liệu thoả đường dẫn chỉ định

/AAA/BBB/CCC/* Chọn tất cả các phần

tử thoả đường dẫn /AAA/BBB/CCC //* Chọn tất cả các phần tử trong tài

liệu /rootName[/elementName]n/eN

ame[i]

Chọn phần tử eName xuất hiện lần thứ i (i nguyên dương) trong tài liệu và thoả đường dẫn chỉ định

/AAA/BBB/CCC[1] Chọn phần tử CCC xuất hiện đầu tiên trong nhánh /AAA/BBB

//elementName[@attName=val

ue]

Chọn tất cả các phần tử trong tài liệu có thuộc tính attName=

value (có phân biệt khoảng trắng trong value)

//BBB[@name=‟b„ Chọn tất cả các phần

tử BBB có thuộc tính có giá trị b

//elementName[normalize-space(@attName)=value]

Chọn tất cả các phần tử trong tài liệu có thuộc tính attName=

value (không phân biệt khoảng trắng trong value)

space (@name)=‟b„ Chọn tất cả các phần

//BBB[normalize-tử BBB có thuộc tính có giá trị b

Trang 30

1.1.11 XLINK và XPOINTER

Như chúng ta biết, các trang Web viết bằng HTML trên Internet có thể kết hợp được với nhau là nhờ vào khả năng tạo siêu liên kết Tuy nhiên việc tạo siêu liên kết trong HTML thường rất hạn chế - chỉ thông qua một số thẻ quy định trước như <A>, <IMG> và các siêu liên kết trong HTML chỉ là đơn chiều

XLINK và XPOINTER là hai khái niệm giúp mở rộng và khắc phục những nhược điểm của siêu liên kết trong HTML XLINK cho phép tạo các liên kết đa chiều giữa các tài liệu XML và cho phép liên kết ứng xử tuỳ vào tình huống quy định cũng như tuỳ vào vị trí của tài nguyên XPOINTER được dùng để định vị trí của một vùng dữ liệu nào đó (dựa trên cơ sở đường dẫn XPATH) XLINK có thể trỏ và liên kết chính xác đến mục dữ liệu định nghĩa bởi XPOINTER

1.1.11.1 XLINK

Với XLINK, một liên kết trong tài liệu XML được tạo ra bởi việc định nghĩa thuộc tính liên kết của phần tử Xlink Các phần tử chứa thuộc tính Xlink được gọi là phần tử liên kết (lingking element) Không gian tên của các phần tử liên kết được định nghĩa thông qua địa chỉ URI http:// www W3 org/1999/xlink như sau:

<elementName

xmlns:xlink=” http:// www W3 org/1999/xlink” />

Trong đó, tiếp đầu ngữ sử dụng cho không gian tên XLINK có thể là xlink hoặc một tên khác Có 7 kiểu XLINK được định nghĩa thông qua giá trị của thuộc tính xlink:type như sau:

Simple Liên kết đơn giản Resource Tài nguyên liên kết Extended Liên kết mở rộng Title Tiêu đề liên kết Locator Định vị None Tuỳ biến

Arc Cung liên kết

Trang 31

Trong XML có hai kiểu liên kết đặc trưng đó là liên kết đơn giản (simple link) và liên kết mở rộng (extended link) Liên kết đơn giản trong XML tương tự

như siêu liên kết trong HTML, trong đó thuộc tính xlink:href được sử dụng để

trỏ đến vị trí của tài nguyên cần liên kết Việc tạo liên kết trong trường hợp simple link trong XML tuy giống như HTML nhưng nó không bị bó buộc như

HTML nhờ vào phần tử XLINK trong XML có thêm hai thuộc tính xlink:show

và xlink:actuate được thể hiện theo cấu trúc:

<elementName

xlink:show = “replace/ embed/ new/ undefined ”/>

<elementName

xlink:actuate = “onLoad/ onRequest/ undefined ”/>

Liên kết mở rộng (extended link) được sử dụng để liên kết đến nhiều tài liệu đích và từ nhiều nguồn khác nhau (dựa vào chiều liên kết) Có hai loại tài nguyên liên kết là tài nguyên cục bộ (tương ứng với xlink:type = “resource”, được định nghĩa trực tiếp trong liên kết) và tài nguyên ở xa (tương ứng với xlink:type= “locator”, được định nghĩa thông qua tham chiếu đến địa chỉ URI hoặc URL ) theo dạng thức:

<elementName xlink:type= “resource”> text </elementName>

Trang 32

định vị dữ liệu dựa trên các phần tử Điểm trỏ ký tự dùng để định vị dữ liệu đến từng ký tự cụ thể của nội dung tài liệu XPOINTER thường được sử dụng chung với các địa chỉ cơ sở URI hay URL với hàm trỏ xpointer() được sử dụng sau ký hiệu # của địa chỉ URL theo cú pháp:

Xlink:href = “URL #xpointer((start_expression)/ range-to(end_expression) )”

Trong đó, start_expression và end_expression là biểu thức viết bằng cú pháp XPATH cho biết đầu khoảng cách và cuối khoảng cách

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ủ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 dữ liệu, mỗi bộ

có cùng 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ơn bằng cụm từ “quan hệ” Một quan hệ bao gồm một 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 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ộ 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)

Ví dụ: Cho bảng dữ liệu hay quan hệ

Trang 33

KHÁCHHÀNG Mã số KH Họ tên KH Số ĐT Địa chỉ

KH001 Trần Mai Hương 0240556778 Bắc Giang KH002 Nguyễn Thu Hà 0241775432 Bắc Ninh KH003 Trần Anh Tuấn 0983800123 Hà Nội KH004 Vũ Đình Công 0983330169 Bắc Giang

Bảng 1.1: Bảng dữ liệu KHACHHANG

Trong 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

Đị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ị của thuộc tính trong bảng quan hệ

Note: 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 thành đơn trị (bằng cách thêm vào các quan hệ phụ)

Quan hệ có thể được 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ể 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 đối với người dùng Tất cả cá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 được gọi là “khung nhìn” Khung nhìn là quan hệ logic, tương ứng trực tiếp hay 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 liên kết hai hay nhiều quan

hệ một cách trực tiếp hoặc gián tiếp

Trang 34

Một khung nhìn có thể là một tập con đơn giản của một quan hệ cơ sở

Ví dụ: cho bảng quan hệ BANHANG

BANHÀNG Mã số KH Họ tên KH Địa chỉ Loại hàng Số lượng

KH001 Trần Mai Hà Bắc Giang Xe đạp 10 KH002 Nguyễn Thu Hà Bắc Ninh Xe máy 2 KH003 Trần Anh Tuấn Hà Nội Ô tô 12 KH004 Vũ Đình Công Bắc Giang Xe máy 10

Bảng 1.2: Bảng dữ liệu BANHANG

Và bảng quan hệ KHACHHANG

KH001 Trần Mai Hương Bắc Giang KH003 Trần Anh Tuấn Hà Nội KH004 Vũ Đình Công Bắc Giang

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ộ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

1.2.2.1 Định nghĩa [3]:

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

Trang 35

Trong thực tế, một CSDL luôn luôn tồn tại các 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 các quan hệ có liên quan trong CSDL đều phải thoả 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 (rules) được áp đặt trên các đối tượng của thế giới thự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 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 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 hưởng và hành động cần phải có khi tính ràng buộc toàn vẹn bị vi phạ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ác phụ thuộc hàm và cụ thể là dựa trên ràng buộc khoá, có các khái niệm: khoá chính (primary key), khoá ngoại lai (foreign key) và khoá duy nhất (unique key)

 Khoá 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ạng này

 Khoá 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ư giá trị null được đưa vào cột hoặc tập các cột được định nghĩa thoả mãn mệnh đề ràng buộc này

 Khoá 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 thoả mãn các ràng buộc toàn vẹn là khoá duy nhất hoặc khoá chính Ràng buộc này

Trang 36

đôi khi được gọi là ràng buộc tham chiếu Cột được khai báo loại ràng buộc này

có thể nhận giá trị null

1.2.3 Chuẩn hoá một cơ sở dữ liệu quan hệ [3]

Chuẩn hoá các cơ sở dữ liệu quan hệ là rất cần thiết trong thực tế vì nhờ bước chuẩn hoá 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 hoá một cơ sở dữ liệu 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

 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 chỉ chứa các giá trị nguyên tố - không phân chia nhỏ hơn được nữa)

Nếu một quan hệ chưa ở dạng 1NF thì ta tách các thuộc tính chưa ở dạng nguyên tố thành các thuộc tính nguyên tố

 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 khoá đều phụ thuộc hàm đầy đủ vào khoá chính (tức là không

có thuộc tính không khoá nào phụ thuộc hàm một phần vào khoá chính)

Nếu một quan hệ chưa ở dạng 2NF thì 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 khoá không phụ thuộc bộ phận vào khoá chính và các quan hệ trong đó mỗi quan hệ chứa các thuộc tính là thuộc tính bộ phận của khoá 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 khoá 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 khoá chính và các thuộc tính khác của nó đều là trực tiếp Nếu một quan hệ chưa ở dạng 3NF thì thực hiện theo các bước sau:

 Tìm các phụ thuộc hàm bắc cầu vào khoá chính có dạng: K->X,

X->Y, trong đó K là tập các thuộc tính khoá, X và Y là tập các thuộc tính không khoá

Ngày đăng: 16/03/2021, 12:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm