Dựa trên lƣợc đồ hƣớng đối tƣợng về mô hình quản lý nhân sự trong công ty đã đƣợc mô tả ở mục 3.2. Ta áp dụng các thuật toán tối ƣu hóa truy vấn vào trong các ví dụ cụ thể cho các truy vấn đối tƣợng OQL đƣợc viết trên cơ sở dữ liệu DB4O. Để qua đó ta thấy OQL có đƣợc tính năng của một ngôn ngữ truy vấn dữ liệu và tỏ ra có nhiều ƣu điểm so với SQL.
Bắt đầu đăng nhập vào hệ thống, ta có Form giao diện chính của luận văn, form bao gồm các thông tin về luận văn, thông tin về tác giả và cơ sở dữ liệu cho bài toán quản lý nhân sự, dữ liệu cho các đối tƣợng: nhân viên, quản lý, phòng ban, dự án.
Hình 3.2. Form luận văn
From chính của luận văn có chức năng, cập nhật dữ liệu cho hệ thống quản lý nhân sự nhƣ: cập nhật nhân sự, quản lý, phòng ban và dự án. Có các button xử lý các truy vấn 1, 2, 3. Từ form chính của chƣơng trình, chúng ta sẽ đi vào chi tiết các form xử lý cho các truy vấn cụ thể.
Truy vấn 1: Cho biết tất cả các nhân viên thuộc phòng “Truyền thông” quản lý.
Ta có câu lệnh truy vấn cho ví dụ 1 nhƣ sau:
var result = fromNhanVien nv in container
joinNhanSu nsu in container on nv.Nhan_Su equals nsu.MaNhanSu joinPhongBan pb in container on nv.Phong_Ban equals pb.MaPhongBan where pb.TenPhongBan == "Phong Truyen Thong"
selectnew { nsu.Manhansu, nsu.HoTen, nsu.LuongCB, nsu.SoDT, nsu.NgaySinh, nsu.HeSo, nsu.SoNCT };
Hình 3.3. Kết quả truy vấn 1
Trong hình 3.3. Ta thấy, thời gian thực hiện truy vấn tối ƣu giảm đi đáng kể so với thời gian thực hiện truy vấn thông thƣờng.
Dƣới đây là biểu đồ so sánh thời gian truy vấn thông thƣờng và thời gian truy vấn tối ƣu qua nhiều lần Test của truy vấn 1
Truy vấn 2: Tìm tất cả các nhân viên có lƣơng cao nhất thuộc phòng truyền thông có câu lệnh truy vấn là
var max_luong = (fromNhanSu shu in container
join NhanVien nv in container on shu.MaNhanSu equals nv.Nhan_Su join PhongBan pb in container on nv.Phong_Ban equals
pb.MaPhongBan
where pb.TenPhongBan == "Phong Truyen Thong"// dieu kien de lay ra
select new { shu.LuongCB }).Max(x => x.LuongCB); // dieu kien thu 2 var ketqua = fromNhanVien nv in container
join NhanSu nsu in container on nv.Nhan_Su equals nsu.MaNhanSu join PhongBan pb in container on nv.Phong_Ban equals pb.MaPhongBan where pb.TenPhongBan == "Phong Truyen Thong"
&& nsu.LuongCB == luong_phong_lonnhat
selectnew {
nsu.MaNhanSu, nsu.HoTen,nsu.GioiTinh, nsu.LuongCB, nsu.SoDT, nsu.SoNCT,nsu.NgaySinh
};
Kết quả chạy truy vấn 2
Biểu đồ so sánh thời gian truy vấn thông thƣờng và thời gian truy vấn tối ƣu qua nhiều lần Test của truy vấn 2.
Biều đồ 3.2. So sánh thời gian thực hiện truy vấn 2
Truy vấn 3: Cho biết tên các nhân viên có mức lƣơng thu nhập lớn hơn hoặc bằng 10 triệu và tham gia dự án có kinh phí lớn hơn hoặc bằng 200 triệu.
Ta có câu lệnh truy vấn:
var result_DA = fromDuAn da in container
where da.KinhPhi >= 200000000 select da;
var result = fromDuAn da in result_DA
joinNhanVien nv in container on da.MaDuAn equals nv.Du_An joinNhanSu nsu in container on nv.Nhan_Su equals nsu.MaNhanSu
join PhongBan pba in container on nv.Phong_Ban equals pba.MaPhongBan where nsu.LuongCB >= 10000000
selectnew
{ nsu.MaNhanSu, nsu.HoTen, nsu.GioiTinh, nsu.HeSo,
nsu.LuongCB, nsu.NgaySinh, nsu.SoDT, nsu.SoNCT, da.MaDuAn, da.KinhPhi, da.Phong_Ban,da.TenDuAn
};
Hình 3.5. Kết quả truy vấn 3
Biểu đồ so sánh thời gian truy vấn thông thƣờng và thời gian truy vấn tối ƣu qua nhiều lần Test của truy vấn 3.
3.5. Kết luận
Chƣơng 3 tập trung nghiên cứu cơ sở dữ liệu hƣớng đối tƣợng DB4O, cách tạo
lập và kết nối CSDL DB4O, cách truy vấn dữ liệu trong DB4O. Phát biểu tổng quan về bài toán quản lý nhân sự để xác định đƣợc các lớp đối tƣợng tham gia trong truy vấn. Tiến hành xây dựng thuật toán khởi tạo siêu đồ thị và ƣớc lƣợng siêu cạnh trong siêu đồ thị. Đƣa ra kết quả thực nghiệm chạy các ví dụ phân tích ở chƣơng 2 để so sánh kết quả chạy khi truy vấn tối ƣu và truy vấn thông thƣờng.
KẾT LUẬN
CSDL hƣớng đối tƣợng là lĩnh vực còn khá mới mẻ, mặc dù đã có nhiều kết quả của các tác giả về việc xây dựng mô hình chuẩn của mô hình CSDL hƣớng đối tƣợng và các dạng chuẩn của lƣợc đồ CSDL hƣớng đối tƣợng. Nhƣng với tính phức tạp về cấu trúc phi tuyến của mô hình CSDL hƣớng đối tƣợng, việc đặc tả các đối tƣợng phức, dẫn đến việc kết quả nghiên cứu các kỹ thuật tối ƣu hóa truy vấn đối tƣợng còn khá khiêm tốn. Vì vậy, trong phạm vi của luận văn, chúng ta chỉ nghiên cứu về mô hình tổng quát của CSDL hƣớng đối tƣợng, ngôn ngữ truy vấn đối tƣợng OQL và kỹ thuật tối ƣu hoá truy vấn đối tƣợng trên CSDL hƣớng đối tƣợng. Các kết quả chính của luận văn đạt đƣợc là:
- Giới thiệu mô hình đối tƣợng của ODMG, ngôn ngữ truy vấn đối tƣợng OQL và các phép toán đối tƣợng.
- Nghiên cứu lý thuyết siêu đồ thị kết nối, siêu đồ thị kết nối đối tƣợng. Từ lý thuyết đó, nghiên cứu thuật toán tối ƣu hóa truy vấn hƣớng đối tƣợng bằng siêu đồ thị kết nội đối tƣợng bằng phƣơng pháp ƣớc lƣợng siêu cạnh, và mở rộng thuật toán rút gọn siêu đồ thị kết nối.
- Cài đặt thuật toán khởi tạo siêu đồ thị và thuật toán ƣớc lƣợng các siêu cạnh trong siêu đồ thị.
Hƣớng phát triển của luận văn:
- Sử dụng mô hình ƣớc lƣợng chi phí của truy vấn và không gian tìm kiếm của truy vấn để xác định phƣơng án thực thi tối ƣu truy vấn.
- Nghiên cứu các kỹ thuật tối ƣu hóa truy vấn đối tƣợng bằng ƣớc lƣợng chi phí của các biểu thức đƣờng dẫn.
TÀI LIỆU THAM KHẢO
Tài liệu tiếng Việt
[1] Đoàn Văn Ban (1999), “Một số tính chất của quá trình thừa kế kiểu trong mô hình cơ sở dữ liệu hƣớng đối tƣợng”, Tạp chí Tin học và điều khiển học, 15(3), tr.1-7.
[2] Đoàn Văn Ban (2000), Tính đúng đắn của lƣợc đồ cơ sở dữ liệu hƣớng đối tƣợng,
Tạp chí Tin học và Điều khiển học, 16 (3), tr. 7– 15.
[3] Lê Mạnh Thạnh, Hoàng Bảo Hùng (2010), “ Siêu đồ thị kết nối đối tƣợng – một cách tiếp cận trong tối ƣu hóa câu truy vấn đối tƣợng lồng nhau”, Tạp chí khoa học, Đại học Huế, số 58.
[4] Đoàn Văn Ban, Lê Mạnh Thạnh và Hoàng Bảo Hùng (2004), “Sự tƣơng đƣơng trong biểu diễn giữa ngôn ngữ truy vấn OQL và đại số đối tƣợng”, Tạp chí Tin học và Điều khiển học, T.20. S.3, tr. 257–269.
[5] Lê Mạnh Thạnh, Hoàng Bảo Hùng (2009) “Phƣơng pháp tối ƣu hóa truy vấn đối tƣợng bằng các phép biến đổi biểu thức đại số đối tƣợng OQL”, Tạp chí khoa học, Đại học Huế, số 53.
[6] Hoàng Bảo Hùng (2007), Truy vấn và tối ưu hoá truy vấn trong cơ sở dữ liệu hướng đối tượng, Luận án Tiến sĩ Toán học, Viện Công nghệ Thông tin, Viện Khoa học và Công nghệ Việt Nam, Hà Nội.
[7] Hoàng Bảo Hùng (2001), Một vài vấn đề về tối ưu hoá truy vấn trong cơ sở dữ liệu hướng đối tượng, Luận văn tốt nghiệp Thạc Sĩ chuyên ngành Công nghệ thông tin, Đại học Bách khoa Hà Nội.
[8]Lê Mạnh Thạnh, Hoàng Bảo Hùng (2006), “Mô hình ƣớc lƣợng chi phí xử lý truy
vấn đối tƣợng trong cơ sở dữ liệu hƣớng đối tƣợng”, Kỷ yếu Hội thảo Quốc gia, lần thứ VIII, Một số vấn đề chọn lọc về CNTT và truyền thông, chủ đề “Mã nguồn mở, 25/8-27/8/2005, Hải Phòng, Nhà xuất bản Khoa học và Kỹ thuật, Hà nội, tr. 568-579.
[9] Lê Mạnh Thạnh, Đoàn Văn Ban, Hoàng Bảo Hùng (2005), “Phƣơng pháp ƣớc lƣợng các truy vấn lồng trong cơ sở dữ liệu hƣớng đối tƣợng bằng siêu đồ thị kết nối”, Chuyên san Tạp chí Bưu chính Viễn thông và Công nghệ thông tin, Các công trình nghiên cứu - Triển khai Viễn thông và Công nghệ thông tin, ISSN 0866-7039, 14, tr. 43–49.
[10] Lê Mạnh Thạnh, Hoàng Bảo Hùng (2001), “Ngôn ngữ truy vấn hƣớng đối tƣợng và tối ƣu hoá truy vấn trên cơ sở dữ liệu hƣớng đối tƣợng bằng phƣơng pháp biến đổi đại số”, Hội nghị khoa học kỷ niệm 25 năm thành lập Viện Công nghệ thông tin, Hà Nội.
[11] Đoàn Văn Ban, Nguyễn Thị Tĩnh, Giáo trình phân tích, thiết kế hệ thống hướngđối tượng bằng UML, Nhà xuất bản Đại học Sƣ Phạm 2011.
[12] Ullman, Jeffrey D. (1999), Nguyên lý các hệ cơ sở dữ liệu và cơ sở tri thức, Tập 1, 2, Trần Đức Quang biên dịch, Nhà xuất bản Thống kê.
Tài liệu tiếng Anh
[13] Caixue Lin, Object-Oriented Database Systems: A Survey, April 3, 2003,
http://users.soe.ucsc.edu/~lcx/courses/cmps277/cmps277-project.pdf
[14] Cattel R.G.G., Barry D.K. (2000), The Object Database Standard: ODMG 3.0,
Morrgan Kaufmann, San Francisco, CA.
[15] Francois Bancilhon, Guy Ferran (2007), ODMG-93: “The Odject Database Standard, O2 Technology”, 2685 Marine Way - Suite 1220, Mountain View, California 94043.
[16] Han, Jia Liang (1998), “Optimizing Relational Queries in Connection Hypergraph: Nested Queries, Views, and Binding Propagations”, The VLDB Journal, 7, pp.1-11.
[17] A.Trigoni and G.M.Bierman (2001), “Inferring the Principal Type and the Schema Requirements of and OQL Query”, In 18th British National Conference on
Databases(BNCOD), pages.185-201.
[18] Scott Lee Vanderberg (1993), Algebras for Object - Oriented Query Languages, A thesis submitted in partial fulfilment of the requirements for the degree of Doctor of Philosophy (Computer Sciences), at the University of Winconsin- Madison.
[19] G.M. Bierman and A.Trigoni (2000), “Towards A Formal Type System For ODMG OQL”, Technical Report 497, University of Cambridge, Computer Laboratory.
[20] A.Trigoni, Agathoniki (2002), Semantic Optimization of OQL Queries,
Technical Report, Number 547, University of Cambridge, Computer Laboratory, USCAM-CL-TR-547, ISSN 1476-2986.
[21] Won Kim (1991), Introduction to Object - Oriented Databases, Massachusetts Institute of Technology, 2th Ed.
[22] Michael L. Horowitz, An Introduction to Object-Oriented Databases and Database Systems, Carnegie Mellon University, 1991.
[23] Gardarin G., J.-R. Gruser and Z.-H. Tang (1995), “A Cost Model for Clustered Object-Oriented Databases”, Proceedings of the 21st VLDB Conference, Switzerland, pp. 323 – 334.
[24] Bierman G.M. and Trigoni A. (2000), Towards A Formal Type System For ODMG OQL, Technical Report 497, University of Cambridge, Computer Laboratory.
[25] Elmasri Navathe (2007). Fundamentals Database Systems. 5th Edition, the United States of America.
[26] Yu, T.Clement, Meg, Weiyi (1998), “Principles of Databases Query Processing for Advanced Applications”, Morgan Kaufmann Publishers, Inc. San Francisco, California.
[27] Cluet, Sophie and Moerkotte, Guido (1995). Nested Queries In Object Bases, In Fifth International Workshop on Database Programming Languages, Italy.
[28] Vanderberg, Scott Lee (1993), Algebras for Object - Oriented Query Languages, Ph.D. Dissertation, University of Winconsin-Madison.
[29] Jim Paterson, Stefan Edlich, Henrik Horning, and Reidar Horning (2006), “The Definitive Guide to db4o”.
MỤC LỤC
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT DANH MỤC CÁC THUẬT NGỮ
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ DANH MỤC CÁC BẢNG, BIỂU ĐỒ
LỜI MỞ ĐẦU ... 1
Chƣơng 1... 12
MÔ HÌNH CƠ SỞ DỮ LIỆU HƢỚNG ĐỐI TƢỢNG ... 12
1.1. Tổng quan về hệ thống dữ liệu hƣớng đối tƣợng ... 12
1.1.1. Mô hình dữ liệu ... 12
1.1.2. Những hạn chế của cơ sở dữ liệu quan hệ ... 12
1.2. Các khái niệm cơ sở ... 15
1.2.1. Đối tƣợng, Định danh đối tƣợng và Lớp đối tƣợng ... 15
1.2.2. Thuộc tính và phƣơng thức ... 17
1.2.3. Các kiểu dữ liệu ... 18
1.2.4. Hệ thống phân cấp và quan hệ kế thừa ... 21
1.3. Truy vấn hƣớng đối tƣợng ... 23
1.4. Chuẩn cơ sở dữ liệu hƣớng đối tƣợng ... 24
1.4.1. Mô hình đối tƣợng của ODMG ... 25
1.4.2. Ngôn ngữ định nghĩa đối tƣợng ODL ... 26
1.4.3. Ngôn ngữ truy vấn đối tƣợng OQL ... 27
1.5. Các phép toán đối tƣợng ... 32
1.5.1. Phép toán đối tƣợng ... 32
1.5.2. Phép toán bộ ... 32
1.5.3. Phép toán tập hợp ... 32
1.5.4. Phép toán bag “túi” ... 33
1.5.5. Phép toán trên danh sách ... 33
1.5.6. Phép toán trên mảng ... 33
1.6. Kết luận ... 33
Chƣơng 2... 35
TỐI ƢU HÓA TRUY VẤN CƠ SỞ DỮ LIỆU HƢỚNG ĐỐI TƢỢNG... 35
2.1. Giới thiệu ... 35
2.1.1. Siêu đồ thị kết nối ... 36
2.1.2. Siêu đồ thị kết nối đối tƣợng ... 36
2.2.1. Thuật toán khởi tạo siêu đồ thị ... 39
2.2.2. Ví dụ minh họa ... 40
2.2.3. Phƣơng pháp ƣớc lƣợng siêu đồ thị ... 44
2.2.3.1. Ƣớc lƣợng các siêu cạnh trong siêu đồ thị ... 44
2.2.3.2. Mở rộng thuật toán tối ƣu truy vấn hƣớng đối tƣợng trên siêu đồ thị . 47 2.3. Kết luận ... 55
Chƣơng 3... 56
CHƢƠNG TRÌNH CÀI ĐẶT THUẬT TOÁN TỐI ƢU HÓA TRUY VẤN ... 56
3.1. Giới thiệu về DB4O ... 56
3.1.1. Tạo lập và kết nối CSDL trong DB4O ... 56
3.1.2. Truy vấn dữ liệu trong DB4O ... 58
3.2. Bài toán quản lý nhân sự ... 59
3.3. Thiết kế và cài đặt chƣơng trình ... 62
3.4. Kết quả thực nghiệm ... 69
3.5. Kết luận ... 74
KẾT LUẬN ... 75