4. Tổng quan luận văn
2.5. Cài đặt thuật toán
Thuật toán được cài đặt bằng ngôn ngữ lập trình C#. Các CSDL quan hệ được sử dụng trong chương trình được tạo lập từ môi trường CSDL Microsoft Access hay Microsoft SQL Server. Các tài liệu XML có thể được tạo lập trong môi trường EditPlus, WordPad, NotePad, XML Editor,…
2.5.1. Đọc tài liệu XML dƣới dạng DOM
Một tài liệu XML được đọc vào chương trình được hiển thị dưới dạng một cấu trúc hình cây.
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("Docgia.xml")); TreeView1.Nodes.Clear();
TreeView1.Nodes.Add(new
TreeNode(xmlDoc.DocumentElement.Name)); TreeNode tNode = new TreeNode();
tNode = TreeView1.Nodes[0]; AddNode(xmlDoc.DocumentElement, tNode); TreeView1.ExpandAll(); XmlNode xNode; TreeNode tNode; XmlNodeList xNodeList; int i; if (xmlNode.HasChildNodes) { xNodeList = xmlNode.ChildNodes;
for (i = 0; i <= xNodeList.Count - 1; i++) { xNode = xmlNode.ChildNodes[i]; treeNode.ChildNodes.Add(new TreeNode(xNode.Name)); tNode = treeNode.ChildNodes[i]; AddNode(xNode, tNode); } } else {
cây TreeView
treeNode.Text = (xmlNode.OuterXml).Trim(); }
2.5.2. Chuyển đổi một tài liệu XML thành CSDL quan hệ
Một tài liệu XML được tạo lập theo đúng cấu trúc yêu cầu sẽ được chuyển đổi và hiển thị dưới dạng một bảng CSDL quan hệ.
XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(fileName);
XmlNodeList xmlNodeList =
xmlDocument.GetElementsByTagName(nodeName); Table table = new Table();
foreach (XmlNode xmlNode in xmlNodeList) {
TableRow tableRow = new TableRow(); TableCell tableCell = new TableCell(); tableCell.Text = "Madg";
tableCell = new TableCell(); tableCell.Wrap = false;
tableCell.BorderWidth = 1; tableCell.Text =
xmlNode.Attributes["Madg"].Value; tableRow.Cells.Add(tableCell);
foreach (XmlElement xmlElement in xmlNode.ChildNodes)
{
tableCell = new TableCell(); tableCell.Wrap = false;
tableCell.BorderWidth = 1;
tableCell.Text = xmlElement.InnerText; tableRow.Cells.Add(tableCell);
}
table.Rows.Add(tableRow); }
Kết quả thực hiện thuật toán chuyển đổi tài liệu XML sang cơ sở dữ liệu quan hệ như hình minh họa sau (Hình 2.17):
Hình 2.17: Chuyển tài liệu XML sang cơ sở dữ liệu quan hệ
2.5.3. Chuyển một CSDL quan hệ thành một tài liệu XML
Để chuyển một CSDL quan hệ được tạo lập từ môi trường Microsoft SQL Server, MySQL, Microsoft Access,... thành một tài liệu XML. Cụ thể, chúng ta thực hiện cài đặt thử nghiệm trong các môi trường như sau:
2.5.3.1. Cài đặt trên môi trƣờng Microsoft SQL Server:
Server sang tài liệu XML như sau:
protected void btnCSDLSQLSERVER_Click(object sender, EventArgs e) { String strConnection = "server=phonghuong;uid=sa;database=quanlytv;password=huo ng"; SqlConnection conn; SqlDataAdapter dad;
try {
conn = new SqlConnection(strConnection);
string sql = "SELECT tblLoaisach.Tenloai, tblMuonsach.Ngaymuon, tblSach.Tensach FROM tblLmuonsach INNER JOIN (tblloaisach.Masach INNER JOIN tblSach ON tblloaisach.Maloai = tblSach.Maloai) ON tblmuonsach.Mamuon = tblsach.Mamuon;
dad = new SqlDataAdapter(sql, conn); conn.Open();
DataSet ds = new DataSet(); dad.Fill(ds, "DS_Loaisach"); ds.WriteXml(Server.MapPath("DS_Loaisach.xml"); conn.Close(); } catch (Exception) { Page.Controls.Add(new LiteralControl("<script language='javascript'> window.alert(\"Lỗi kết nối CSDL Microsoft SQL Server!\"); <" + "/script>"));
}
}// Kết thúc btnCSDLSQLSERVER_Click()
2.5.3.2. Cài đặt trên môi trƣờng MySQL
protected void btnCSDLMYSQL_Click(object sender, EventArgs e)
string dsr = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=quanlytv; uid = root; pwd=;option=3";
string sql = "SELECT Madg, Tendg, GioiTinh, Namsinh, DiaChi, Nghenghiep, Khoa, Lop, DienThoai, FROM Docgia";
try {
OdbcConnection con = new OdbcConnection(dsr); OdbcDataAdapter dad = new
OdbcDataAdapter(sql, con); con.Open();
DataSet ds = new DataSet(); dad.Fill(ds, "DS_Docgia"); dg.DataSource = ds.Tables["DS_Docgia"].DefaultView; dg.DataBind(); ds.WriteXml(Server.MapPath("DS_Docgia.xml", XmlWriteMode.IgnoreSchema); TextBox1.Text = ds.GetXml(); con.Close(); } catch (Exception) { Page.Controls.Add(new LiteralControl("<script language='javascript'> window.alert(\"Lỗi kết nối CSDL MySQL!\"); <" + "/script>"));
}
2.5.3.3. Cài đặt trên môi trƣờng Microsoft Access 2003
protected void btnCSDLMSA_Click(object sender, EventArgs e)
{
string dsr = "Provider=Microsoft.Jet.OLEDB.4.0; data source=" + Server.MapPath("quanlytv.mdb");
string sql = "SELECT Madg, Tendg, Gioitinh, Namsinh, Diachi, Nghenghiep, Khoa,Lop, DienThoai, FROM Docgia"; try
{
OleDbConnection con = new OleDbConnection(dsr); con.Open();
OleDbDataAdapter dad = new OleDbDataAdapter(sql, con);
DataSet ds = new DataSet(); dad.Fill(ds, "DS_Docgia"); dg.DataSource = ds.Tables["DS_DocGia"].DefaultView; dg.DataBind(); ds.WriteXml(Server.MapPath("DS_Docgia.xml"), XmlWriteMode.IgnoreSchema); TextBox1.Text = ds.GetXml(); con.Close(); } catch (Exception) { Page.Controls.Add(newLiteralControl("<script
language='javascript'> window.alert(\"Lỗi kết nối CSDL Microsoft Access!\"); <" + "/script>")); }
Hiển thị nội dung tài liệu XML
void showXmlData(string fileName) {
DataSet dataSet = new DataSet(); dataSet.ReadXml(fileName); if (dataSet != null) { GridView1.DataSource = dataSet.Tables[0]; GridView1.DataBind(); } }}// Kết thúc showXmlData(string)
Kết quả thực hiện thuật toán chuyển đổi cơ sở dữ liệu quan hệ sang tài liệu XML như hình minh họa sau (Hình 2.18):
Hình 2.18: Chuyển một CSDL sang tài liệu XML
2.6. Kết luận chƣơng 2
Chương 2 trình bày những mối liên hệ về nội dung của một CSDL quan hệ với nội dung của một tài liệu XML, đồng thời giới thiệu phương pháp luận để chuyển một CSDL quan hệ thành một tài liệu XML và ngược lại. Sử dụng các câu lệnh truy vấn XML và dựa trên các quy tắc ánh xạ đơn giản, dễ hiểu và chính xác. Ngoài ra, chương này còn đưa ra cách cài đặt cụ thể cho các thuật toán chuyển đổi giữa CSDL quan hệ và XML, cách chuyển đổi một CSDL sang XML và ngược lại.
CHƢƠNG 3 THỰC NGHIỆM
Trong chương này, tôi sẽ trình bày cấu trúc của chương trình thực nghiệm và một số kết quả trên thuật toán sử dụng phương pháp ánh xạ đã đưa ra trong chương 2.
3.1. Mô tả bài toán và giả thuyết
Quản lý thư viện tại thư viện trường Cao đẳng công nghiệp Nam Định tập trung vào phân loại sách theo từng phân mục cụ thể để có thể dễ dàng thuận tiện cho việc sử dụng, quản lý theo dõi sách, nhận đặt sách, ghi nhận quá trình mượn - trả - đòi sách quá hạn và quản lý độc giả. Tại trường Cao đẳng Công Nghiệp Nam Định khi học sinh, sinh viên khóa mới có kế hoạch nhập học Phòng đào tạo có chức năng phân công lớp học, nhập danh sách học sinh, sinh viên các lớp theo các hệ và theo dõi tiến độ, điểm của các lớp bằng phần mềm quản lý đào tạo.
Trên cơ sở các lớp được phân công, lớp trưởng các lớp xuống Thư viện làm thẻ thư viện, mượn sách học đầu kỳ học. Để công tác quản lý dữ liệu được thuận tiện và đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau. Thư viện có thể lấy dữ liệu từ các phòng chức năng và có thể trao đổi dữ liệu với các thư viện khác kết nối dữ liệu.
Các cơ sở dữ liệu của các phòng ban, thư viện khác được lưu trữ ở rất nhiều định dạng file khác nhau gây khó khăn cho việc giao tiếp giữa các hệ thống thông tin. Do đó, việc chuyển đổi dữ liệu từ một cơ sở dữ liệu bất kỳ sang định dạng file XML và ngược lại là một việc làm rất cần thiết.
Thuật toán chuyển đổi giữa cơ sở dữ liệu quan hệ và XML sử dụng phương pháp ánh xạ là thuật toán phù hợp với tài liệu XML do XML tổ chức dữ liệu dưới dạng DOM sẽ dễ dàng ánh xạ sang bảng và ngược lại. Hơn thế phương pháp này có hỗ trợ về Internet.
Thuật toán sử dụng phương pháp băm nhỏ hay phân tách các tài liệu XML không hỗ trợ trên Internet và không có hỗ trợ giao diện người dùng cho việc thực thi các câu lệnh và các hàm cần thiết mà chỉ dừng lại ở mức giản đồ. Mặt khác nếu
sử dụng phương pháp băm nhỏ hay phân tách các tài liệu thì dữ liệu XML sẽ phức tạp, xếp chồng và khó cho việc bản đồ hóa thành một giản đồ quan hệ.
Hướng phát triển của Quản lý thư viện trong trường Cao đẳng Công nghiệp Nam Định đó là chia sẻ dữ liệu với nhiều máy tính khác nhau đặc biệt là hệ thống máy tính không tương thích. Do vậy tôi đã sử dụng phương pháp ánh xạ như đã trình bày ở chương 2 để ứng dụng kết quả nghiên cứu của tôi vào chương trình Quản lý thư viện tại trường Cao đẳng Công nghiệp Nam Định.
3.2. Yêu cầu hệ thống 3.2.1. Phần mềm 3.2.1. Phần mềm
- Công cụ lập trình: Microsoft Visual Studio 2008, Microsoft Framework 3.5 trở lên. - Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2005; MySQL 5.1.36; Microsoft Access 2003.
- Hệ điều hành: Microsoft Windows 2000 Service Pack 4; Microsoft Windows Server 2003 Service Pack 1; Microsoft Windows XP Service Pack 2.
- Trình duyệt web: Mozilla Firefox 3.0, Internet Explorer 7.0 trở lên.
3.2.2. Phần cứng
- Máy tính chip Pentium III trở lên.Tối thiểu 128 MB RAM, cấu hình đề nghị: 512 MB RAM.
- Ổ cứng còn trống tối thiểu 512 MB
3.3. Giao diện và một số chức năng của chƣơng trình 3.3.1. Màn hình chính của hệ thống
Là nơi bắt đầu cho mọi chức năng của hệ thống, nhằm cung cấp một cái nhìn tổng thể cho người sử dụng (Hình 3.1).
3.3.2. Chức năng đăng nhập hệ thống
Khi người quản trị đăng nhập đúng tên đăng nhập và mật khẩu thì hệ thống sẽ chuyển đến trang quản lý hệ thống. Tên đăng nhập và mật khẩu được lưu trữ trong cơ sở dữ liệu Microsoft SQL Server (Hình 3.2).
Hình 3.2: Màn hình đăng nhập vào quản lý hệ thống
3.3.3. Chức năng Nhập dữ liệu
Độc giả điền các thông tin vào Phiếu nhập độc giả và gửi thông tin đăng ký đến bộ phận thủ thư tiếp nhận phiếu nhập thông qua chức năng Nhập độc giả (Hình 3.3).
Hình 3.3: Màn hình nhập độc giả
3.3.3.1. Nhập độc giả
Cho phép tạo ra tập tin TT_Nhapdg.xml để chứa thông tin nhập độc giả nếu nó chưa tồn tại trên máy chủ.
<?xml version="1.0" standalone="yes"?> <DS_Nhapdg> <TT_Nhapdg> <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> </TT_Nhapdg> </DS_Docgia>
Ngược lại nếu tập tin TT_Nhapdg.xml đã tồn tại trên máy chủ thì thông tin về Nhập độc giả sẽ được ghi thêm vào.
3.3.3.2. Hủy
Khởi tạo các trường dữ liệu trên trang Nhập độc giả về giá trị mặc định để chuẩn bị cho việc nhập mới.
3.3.3.3. Thoát
Cho phép quay về trang chủ của hệ thống thông tin “Quản lý thư viện”.
3.3.4. Chức năng tìm kiếm thông tin
Tra cứu theo các tiêu chí: mã độc giả, tên độc giả, tên sách. Tiêu chí này được kết xuất từ nguồn dữ liệu trong tập tin DS_Docgia.xml như sau:
Chẳng hạn, ta chọn tiêu chí tìm kiếm “Tên độc giả”, kết quả tìm thấy và hiển thị màn hình sau (Hình 3.4).
Hình 3.4: Kết quả tra cứu thông tin độc giả
3.3.5. Chức năng Báo cáo thống kê
Sau mỗi đợt nhập độc giả, sách của độc giả, sách bộ phận lập báo cáo thống kê và gửi danh sách những độc giả đang mượn sách tại tthư viện theo từng đợt cho bộ phận tổng hợp để báo cáo với lãnh đạo.
3.4. Một số kết quả cài đặt thuật toán 3.4.1. Biểu diễn tài liệu XML theo dạng cây 3.4.1. Biểu diễn tài liệu XML theo dạng cây
Tạo tài liệu XML bằng cách đọc một trong các CSDL quan hệ như Microsoft SQL Server, MySQL, Microsoft Access thông qua các chức năng: Hiển thị XML từ SQL Server, Hiển thị XML từ MySQL, Hiển thị XML từ MS Access. Thuật toán chuyển đổi sử dụng phương pháp ánh xạ đã trình bày ở chương 2. Sau đó hiển thị tài liệu XML này dưới dạng cây bởi chức năng Biểu diễn theo DOM (Hình 3.5).
3.4.2. Biểu diễn tài liệu XML dạng bảng
Tạo tài liệu XML bằng cách đọc một trong các CSDL quan hệ như Microsoft SQL Server, MySQL, Microsoft Access thông qua các chức năng: Hiển thị XML từ SQL Server, Hiển thị XML từ MySQL, Hiển thị XML từ MS Access.Thuật toán chuyển đổi sử dụng phương pháp ánh xạ đã trình bày ở chương 2. Sau đó hiển thị tài liệu XML này dưới dạng bảng bởi chức năng Biểu diễn XML dạng bảng (Hình 3.6).
Hình 3.6: Kết quả biểu diễn tài liệu XML theo dạng bảng
3.4.3. Chuyển cơ sở dữ liệu sang tài liệu XML
Đọc các bảng trong CSDL quan hệ chẳng hạn như Microsoft SQL Server, MySQL, Microsoft Access thông qua các chức năng: Chuyển SQL Server sang XML, Chuyển MySQL sang XML, Chuyển MS Access sang XML. Thuật toán chuyển đổi sử dụng phương pháp ánh xạ đã trình bày ở chương 2. Sau đó chuyển thành tài liệu XML tương ứng (Hình 3.7).
3.4.4. Chuyển tài liệu XML sang cơ sở dữ liệu quan hệ
Đọc tài liệu XML, sau đó chuyển sang một trong các CSDL như Microsoft SQL Server, MySQL, Microsoft Access bởi các chức năng: Chuyển XML sang SQL Server, Chuyển XML sang MySQL, Chuyển XML sang Access. Thuật toán chuyển đổi sử dụng phương pháp ánh xạ đã trình bày ở chương 2 (Hình 3.8).
Hình 3.8: Kết quả chuyển đổi từ XML sang CSDL quan hệ
3.5. Kết luận chƣơng 3
Chương 3 mô tả bài toán quản lý thư viện và ứng dụng thuật toán chuyển đổi giữa cơ sở dữ liệu quan hệ và XML dùng phương pháp ánh xạ vào bài toán quản lý thư viện. Sử dụng ngôn ngữ lập trình C# trong môi trường ASP.NET xây dựng ứng dụng “Quản lý thư viện” tại thư viện trường Cao đẳng Công nghiệp Nam Định.
KẾT LUẬN
Việc chuyển đổi các CSDL quan hệ sang một tài liệu XML và ngược lại mà không cần quan tâm đến việc bảo toàn các ràng buộc dữ liệu hay việc nghiên cứu chuyển đổi có bảo toàn ràng buộc bằng việc xét các ràng buộc dữ liệu thông qua các ràng buộc khóa đã và đang được nghiên cứu.
Tuy nhiên, với phương pháp ánh xạ thì rõ ràng tính ứng dụng thực tiễn không cao, do CSDL tồn tại trong thế giới thực luôn luôn có sự ràng buộc lẫn nhau. Phương pháp băm nhỏ hay phân tách các tài liệu XML thì thực sự khó khăn, phức tạp để có thể xét được hầu hết tất cả các ràng buộc cũng như các phụ thuộc dữ liệu.
Các kết quả đạt đƣợc của luận văn:
Trình bày tổng quan về cấu trúc 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 CSDL quan hệ.
Giới thiệu các thuật toán chuyển một tài liệu XML sang một CSDL quan hệ và ngược lại.
Cài đặt được thuật toán bằng ngôn ngữ lập trình C# trong môi trường ASP.NET. Trên cơ sở xây dựng phần mềm ứng dụng “Quản lý thư viện” tại Thư viện trường Cao đẳng Công nghiệp Nam Định.
Một số hạn chế của luận văn:
Thuật toán chuyển đổi có độ phức tạp O(n2) còn chưa tối ưu.
Cơ sở dữ liệu sử dụng trong chương trình chưa hoàn thiện.
Hƣớng nghiên cứu tiếp theo:
Luận văn có thể được phát triển để hỗ trợ cho việc phục hồi các CSDL quan hệ gốc từ các tài liệu XML đã được chuyển đổi trong quá trình trao đổi dữ liệu
Hoàn thiện hệ thống thông tin “Quản lý thư viện” cũng là hướng phát triển của đề tài nhằm đáp ứng cao hơn nữa các yêu cầu sử dụng riêng của Thư viện Trường Cao đẳng Công nghiệp Nam Định.
Do thời gian và khả năng có hạn, luận văn có thể còn nhiều thiếu sót, em rất mong nhận được sự góp ý, chỉ dẫn thêm của các thầy, cô và các bạn đồng nghiệp để em có thể xây dựng được ứng dụng hoàn thiện hơn. Một lần nữa em xin chân thành cảm ơn thầy hướng dẫn PGS.TS. Đoàn Văn Ban và các thầy cô của Trường Đại học CNTT & TT đã tạo mọi điều kiện thuận lợi để luận văn này hoàn thành đúng thời hạn.
TÀI LIỆU THAM KHẢO Tiếng Việt
1. Nguyễn Tiến, Đặng Xuân Hường, Nguyễn Văn Hoài, Nguyễn Tuấn Ngọc (2001), “Nhập môn XML thực hành và ứng dụng”, NXB Thống kê.
2. Christopher Allen (2004), “Nhập môn về Cơ sở dữ liệu quan hệ và Lập trình SQL”, NXB Thống kê.
3. Lê Minh Hoàng (2006), “Các thủ thuật trong HTML và thiết kế Web”, NXB Lao động - Xã hội.
4.Lê Tiến Vương (2000), “Nhập môn cơ sở dữ liệu quan hệ”, NXB Thống kê. 5. Nguyễn Ngọc Bình Phương, Thái Kim Phụng, Lê Ngọc Sơn, Nguyễn Hoàng Thanh Nhàn (2007), “Các giải pháp lập trình ASP.NET 2.0”, Nhà sách Đất Việt.
6. Nguyễn Phương Lan (2003), “XML nền tảng và ứng dụng”, NXB Lao động - Xã hội.
7. Nguyễn Thị Ngọc Mai (2007), “Lý thuyết cơ sở dữ liệu - Tập1, 2”, NXB Lao động - Xã hội.
8. Nguyễn Thiên Bằng, Hoàng Đức Hải, Phương Lan (2005), “Giáo trình nhập môn XML”, NXB Lao động - Xã hội.
9. Phạm Hữu Khang (2005), “Lập trình ASP.Net 2.0”, NXB Lao động - Xã hội. 10. Phạm Hữu Khang (2007), “SQL Server 2005 - Lập Trình T-SQL”, NXB Lao động - Xã hội.
11. Phương Lan, Hoàng Đức Hải (2002), “Lập trình Windows với C#. Net”, NXB Lao động - Xã hội.
Tiếng Anh
12. Ash Rofail and R. Allen Wyke (2002), “XML Programming (Core Reference)” Published by Microsoft Corporation.
13. Bhavani Thuraisingham (2002), “XML Databases and the Semantic Web”,