4. Tổng quan luận văn
1.4. Cơ sở dữ liệu quan hệ
1.4.1. Hệ quản trị cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu. Các chương trình thuộc loại này hỗ trợ khả năng lưu trữ, sửa chữa, xóa và tìm kiếm thông tin trong một CSDL.
Tuy nhiên, đa số hệ quản trị CSDL đều có một đặc điểm chung là sử dụng ngôn ngữ truy vấn theo cấu trúc (SQL). Các hệ quản trị CSDL phổ biến được nhiều người biết đến là MySQL, Oracle, PostgreSQL, SQL Server, DB2, Infomix,... Phần lớn các hệ quản trị CSDL kể trên hoạt động tốt trên nhiều hệ điều hành khác nhau
như Linux, Unix và MacOS ngoại trừ SQL Server của Microsoft chỉ chạy trên hệ điều hành Windows [7].
* Ưu điểm của việc thiết kế hệ quản trị Cơ sở dữ liệu:
- Cho phép người sử dụng tạo ra và duy trì Cơ sở dữ liệu. - Cho phép định nghĩa, xây dựng và thao tác dữ liệu:
- Định nghĩa một cơ sở dữ liệu là đặc tả các kiểu dữ liệu, các cấu trúc, các ràng buộc cho các dữ liệu sẽ được lưu trữ.
- Xây dựng cơ sở dữ liệu là lưu trữ dữ liệu lên các phương tiện lưu trữ được hệ quản trị cơ sở dữ liệu kiểm soát.
- Thao tác trên một cơ sở dữ liêu là quá trình truy vấn cơ sở dữ liệu để lấy ra các dữ liệu cụ thể, cập nhật cơ sở dữ liệu, tạo ra các báo cáo từ dữ liệu.
1.4.2. Mô hình dữ liệu quan hệ 1.4.2.1. Định nghĩa quan hệ 1.4.2.1. Định nghĩa quan hệ
Gọi RA1,.....,An là tập hữu hạn của các thuộc tính, mỗi thuộc tính Ai với i = 1,...,n có miền giá trị tương ứng là Dom(Ai). Quan hệ trên tập thuộc tính là tập con của tích đề các: r Dom Ai .....Dom An . Khi đó ta ký hiệu
lRA1,.....,Anà: r(R) - quan hệ r trên tập thuộc tính R.
Ví dụ 1.16: Cho quan hệ DOC_GIA với các thuộc tính như sau:
DOC_GIA (Hoten Namsinh Gioitinh)
(t1) Lê Thị Ánh 1992 Nữ (t2) Vương Văn Dự 1992 Nam (t3) Nguyễn Thị Đào 1992 Nữ Mỗi cột là một thuộc tính: thuộc tính Hoten, Namsinh, Gioitinh. Mỗi hàng là một bộ : bộ t1, t2, t3.
1.4.2.2. Định nghĩa khoá của quan hệ
Khoá của một quan hệ r trên tập thuộc tính RA1,.....,An là tập con
R
Bất kỳ tập con thực sự K' K nào đều không có tính chất đó. Tập K là siêu khoá của quan hệ r nếu K là một khoá của quan hệ r.
1.4.3. Kiến 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ó 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 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 thuộc tính). 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à thuộc tính). 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) [4].
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 của CSDL quan hệ.
1.4.4. Ràng buộc toàn vẹn 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.4.4.1. Định nghĩa
Ràng buộc toàn vẹn là một điều kiện bất biến không được vi phạm trong một cơ sở dữ liệu.
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.
1.4.4.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 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 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 khóa.
Các khái niệm về khóa: khóa chính, khóa ngoại.
- 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.
Chuẩn hóa một cơ sở dữ liệu quan hệ là rất cần thiết trong thực tế vì nhờ bước chuẩn hóa này mà chúng ta có thể loại bỏ tối đa sự dư thừa dữ liệu - một trong những nguyên nhân dẫn đến sự không toàn vẹn dữ liệu.
Chuẩn hóa một CSDL có nghĩa là chúng ta sẽ đưa các lược đồ quan hệ về một trong các dạng chuẩn: 1NF, 2NF, 3NF, BCNF.
Chuẩn 1NF: một quan hệ ở dạng chuẩn 1 NF nếu tất cả các giá trị các thuộc tính của nó là sơ cấp. Tức nó chỉ chứa các giá trị nguyên tố - không phân chia nhỏ được nữa.
Chuẩn 2NF: một quan hệ là chuẩn 2NF nếu nó là chuẩn 1NF và mọi thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào khóa chính (tức là không có thuộc tính không khóa nào phụ thuộc hàm một phần vào khóa chính).
Chuẩn 3NF: một quan hệ ở dạng chuẩn 3NF nếu nó là 2NF và tất cả các phụ thuộc hàm giữa khóa chính và các thuộc tính khác của nó đều là trực tiếp.
1.5. Kết luận chƣơng 1
Chương 1 đã nêu những kiến thức cơ bản về cấu trúc một tài liệu XML, nhận biết được thế nào là một tài liệu XML hợp lệ, hợp khuôn dạng, cách tạo một tài liệu XML hợp khuôn dạng, mô hình DOM và cách phân tích tài liệu XML theo mô hình DOM cùng các trình phân ngữ trong XML như: kiểu tài liệu DTD, giản đồ XML, không gian tên gọi, bảng định kiểu CSS. Ngoài những kiến thức cơ bản về XML, trong chương 1 cũng trình bày những kiến thức cơ bản về cơ sở dữ liệu quan hệ, các khái niệm, cấu trúc, các ràng buộc toàn vẹn, các dạng chuẩn hóa CSDL quan hệ.
CHƢƠNG 2
CHUYỂN ĐỔI CÁC CƠ SỞ DỮ LIỆU QUAN HỆ VÀ XML 2.1. Phƣơng pháp luận
Nghiên cứu các thuật toán và đưa ra cách chuyển đổi một cơ sở dữ liệu quan hệ thành một tài liệu XML và ngược lại chuyển một tài liệu XML về một cơ sở dữ liệu quan hệ.
2.1.1. Cấu trúc, kiểu cơ chế của XML và lƣợc đồ CSDL quan hệ
Những cơ chế cơ bản được sử dụng để định rõ cấu trúc của những tài liệu XML và lược đồ quan hệ là những kiểu phần tử và những thuộc tính đối với XML giống như những quan hệ và những thuộc tính đối với CSDL quan hệ. Về kiểu phần tử, nó hữu dụng cho việc mô tả hai mảng phạm trù: Đầu tiên, nó mô tả kiểu phần tử có bao gồm một miền nguyên tử hay không. Thứ hai, biểu thị kiểu phần tử có một miền hợp hay không. Những kết quả này phân biệt trong bốn kiểu phần tử khác nhau. Điều đó nhấn mạnh sự phân loại này thì thích hợp tới cả hai lược đồ DTD và XML. Tuy nhiên, CSDL quan hệ không cho phép tới những miền quan hệ đặc biệt, nhưng với những thuộc tính, hãy xem xét với mỗi loại kiểu phần tử như những thuộc tính XML và CSDL quan hệ với nhiều chi tiết.
Bảng 2.1: Các kiểu phần tử
Kiểu phần tử (Element Type) Miền nguyên tử Miền hợp
Kiểu phần tử nguyên tử True False
Kiểu phần tử hợp thành với nội dung phần tử False True
Kiểu phần tử rỗng False False Các kiểu phần tử chỉ bao gồm miền nguyên tử được gọi là những kiểu phần tử nguyên tử. Những kiểu phần tử DTD chỉ có một miền nguyên tử có thể là #PCDATA (những miền nguyên tử được xác định trước cho những thuộc tính DTD so sánh một kiểu chuỗi được gọi là CDATA), kiểu liệt kê và một vài kiểu đặc biệt, chẳng hạn như: ID, IDREF(s).
Ngược lại DTD, lược đồ XML cung cấp một phạm vi rộng lớn của những nguyên tử được xác định bởi những kiểu phần tử và những thuộc tính. Những miền nguyên tử được xác định trước là phù hợp để biểu diễn trong CSDL quan hệ. Lược đồ XML cho phép những miền nguyên tử được sử dụng như là cơ sở bắt nguồn từ những miền được định nghĩa bởi người dùng. Điều này thì tương tự với nội dung hướng đối tượng của lớp con bằng việc định rõ những mở rộng thích hợp hoặc những ràng buộc.
Với mỗi tài liệu XML, nó được yêu cầu là tất cả các kiểu phần tử hợp được tạo thành từ một hay nhiều kiểu phần tử đơn. Đây là một trong những ràng buộc CSDL quan hệ, nơi mà một phần của những sự phân cấp không thể thực hiện bởi những trung gian ẩn bên trong mà chỉ khi những quan hệ gồm những thuộc tính chỉ có giá trị nguyên thủy. Khi những kiểu phần tử hợp thành có thể có một miền nguyên tử để thêm vào miền hợp thành.
Hơn nữa, bên trong những kiểu phần tử hợp thành với nội dung hỗn hợp và những kiểu phần tử hợp thành với nội dung phần tử. Đặc biệt khi những kiểu phần tử hợp thành xuất hiện trong một chuỗi nối tiếp hoặc như là một sự lựa chọn.
Bảng 2.2: Minh họa định nghĩa kiểu phần tử hợp thành Độc giả
XML Document <Docgia> <Madg> B001 </Madg> <Tendg>
Lê Thị Ánh </Tendg> <GioiTinh> Nữ </GioiTinh> <NamSinh> 1992 </NamSinh> <DiaChi> Thái Bình </DiaChi> <Nghenghiep> Sinh viên </Nghenghiep> <Khoa> Kinh tế </Khoa> <Lop> CĐ51KT1 </Lop> <DienThoai> 0123660672 </DienThoai> </Docgia> DTD
<!ELEMENT Docgia(Madg, Tendg, GioiTinh, Namsinh, Diachi, Nghenghiep,Khoa,Lop,DienThoai>
<! ELEMENT Madg(#PCDATA)> <! ELEMENT Tendg(#PCDATA)>
<! ELEMENT GioiTinh(#PCDATA)> <! ELEMENT Namsinh(#PCDATA)> <! ELEMENT DiaChi(#PCDATA)> <! ELEMENT Nghenghiep(#PCDATA)> <! ELEMENT Khoa(#PCDATA)> <! ELEMENT Lop(#PCDATA)> <! ELEMENT Dienthoai(#PCDATA)> XML Schema
<complexType name = "DanhSach_Dg" <sequence>
<element name = "Madg" type = "string" minOccurs = "1" maxOccurs = "1" />
<element name = "Tendg" type = "string" minOccurs = "1" maxOccurs = "1" />
<element name = "Gioitinh" type = "string" minOccurs = "1" maxOccurs = "1" />
<element name = "Namsinh" type = "integer" minOccurs = "1" maxOccurs = "1" />
<element name = "Diachi" type = "String" minOccurs = "1" maxOccurs = "1" />
<element name = "Nghenghiep" type = "string" minOccurs = "1" maxOccurs = "1" />
<element name = "DiaChi" type = "string" minOccurs = "1" maxOccurs = "1" />
<element name = "Khoa" type = "string" minOccurs = "1" maxOccurs = "1" />
<element name = "Lop" type = "integer" minOccurs = "1" maxOccurs = "1" />
<element name = "Dienthoai" type = "integer" minOccurs = "0" maxOccurs = "unbounded" />
</complexType>
Theo định nghĩa kiểu phần tử hợp thành, chúng ta có một sự khác nhau đáng kể giữa DTD và lược đồ XML. Trong sự ràng buộc với DTD, lược đồ XML tách rời định nghĩa của những kiểu phần tử hợp thành từ sự công bố của những miền hợp thành của nó đặc biệt là những kiểu phần tử hợp thành.
2.1.2. Mối quan hệ giữa một CSDL quan hệ và một tài liệu XML
Để tìm hiểu mối quan hệ giữa nội dung một CSDL quan hệ và một tài liệu XML, chúng ta cần phải so sánh sự thể hiện của một CSDL quan hệ và một tài liệu XML qua các mức: mô hình dữ liệu, lược đồ và minh họa (Hình 2.1):
Mức mô hình dữ
liệu
Nội dung quan hệ Nội dung XML
Relation Attribute Element Type Attribute
Mức lƣợc đồ Lƣợc đồ quan hệ Lƣợc đồ DTD hay XML Relation A Attribute X Relation B Attribute Y ………
Element Type a Attribute x Element Type b Attribute y …………..
Mức minh họa
Cơ sở dữ liệu quan hệ Tài liệu XML
Tuple Value Element Type ---> Attribute
Element Value Attribute Value
Hình 2. 1: Các mức so sánh giữa mô hình quan hệ và XML
2.1.3. Tên kiểu phần tử
Trong lược đồ quan hệ, tên của quan hệ được yêu cầu là duy nhất trong phạm vi toàn bộ lược đồ quan hệ. Tương tự đối với tên của một kiểu phần tử XML là duy nhất trong DTD. Tuy nhiên, XML cho phép những kiểu phần tử có tên trùng nhau bằng việc sử dụng không gian tên gọi khác nhau. Vì vậy, tên giống nhau có thể xuất
hiện trong những kiểu phần tử hợp được định nghĩa trên cơ sở của những miền hợp thành khác nhau mà không có sự xung đột.
2.1.4. Giá trị rỗng và giá trị mặc định
Tương tự như CSDL quan hệ, XML cho phép biểu diễn những giá trị rỗng cũng như những giá trị mặc định. Trong CSDL quan hệ, nội dung của những giá trị rỗng chỉ được định nghĩa cho những thuộc tính. Tuy nhiên, XML xác nhận giá trị cho cả các thuộc tính và cả các phần tử. Trong DTD, những giá trị mặc định có thể được cập nhật chỉ tới những thuộc tính XML, trong khi lược đồ XML xác nhận những giá trị mặc định cho các kiểu phần tử.
Về các thuộc tính XML, được gọi là sự công bố mặc định trong một DTD yêu cầu định rõ cho mỗi thuộc tính với một trong những ràng buộc dưới đây:
#REQUIRED: một giá trị được yêu cầu là không rỗng (NOT NULL) trong CSDL quan hệ.
#IMPLIED: biểu diễn giá trị tùy ý của thuộc tính, biểu diễn bằng cách bỏ đi giá trị NOT NULL của CSDL quan hệ. Trong trường hợp không có giá trị được cung cấp cho mỗi thuộc tính XML tại mức minh họa, tên của thuộc tính cũng bị bỏ qua trong tài liệu XML.
#FIXED<ConstValue>: định nghĩa một hệ số giá trị, điều này không thể trong CSDL quan hệ.