3.2 Xây dựng cơ sở dữ liệu 3.2.1. Tạo bảng cơ sở dữ liệu 3.2.1. Tạo bảng cơ sở dữ liệu Bảng Stations
TT Tên trƣờng Kiểu dữ liệu Ghi chú
1 ids integer
2 namestation Text
3 description text
4 p point
Bảng 3.1: Lƣu trữ các thuộc tính trạm xe buýt, chủ yếu là tọa độ trạm xe, 1 trạm có thể có nhiều điểm dừng tuyến của nhiều tuyến xe buýt.
Bảng Points
TT Tên trƣờng Kiểu dữ liệu Ghi chú
1 idp integer Mã điểm
2 idb Character(20) Mã tuyến
Quan ly he thong trang tin tuc
Admin
Quan ly thong tin tram, tuyen,điểm Dinh vi ban do Di chuyen ban do
Phong to/thu nho
Hien thi toan bo ban do
Tim duong di Tim tuyen xe buyt
user
Tim tram dung xe buyt
3 ids integer
4 namepoint text
5 Description text
6 timestart time without time
zone
Bảng 3.2: Lƣu trữ các điểm dừng của 1 tuyến xe buýt, vị trí là trạm đƣợc chỉ định và đánh dấu
Bảng Gobus
TT Tên trƣờng Kiểu dữ liệu Ghi chú
1 idb Character(20)
2 ids integer
3 timestart time without time
zone
4 timeend time without time
zone
Bảng 3.3: Tính toán truy vấn theo thời gian các tuyến hoạt động tại thời điểm hiện tại, đã kết thúc.
Bảng Bus
.
TT Tên trƣờng Kiểu dữ liệu Ghi chú
1 idb Character(20)
2 namebus text
3 description text
4 price integer
5 timestart time without time
zone
6 timeend time without time
zone
7 nub integer Số điểm dừng
8 timelong integer
điểm đầu và kết thúc
3.2.2 Tạo các Trigger, các hàm trong bài toán
+ Tạo Triger khi có một điểm xe buýt đƣợc thêm mới
CREATE TRIGGER point_add AFTER INSERT ON points FOR EACH ROW
EXECUTE PROCEDURE point_add();
+ Hàm thực hiện thêm 1 điểm dừng
CREATE OR REPLACE FUNCTION _0_points_add(idb character, ids integer, namepoint text, description text, timestart time without time zone)
RETURNS void AS $BODY$Begin
Insert into "points"(idb,ids,namepoint,description,timestart) values($1,$2,$3,$4,$5);
End$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
ALTER FUNCTION _0_points_add(character, integer, text, text, time without time zone)
OWNER TO postgres;
+ Một Function Trigger ràng buộc đếm số điểm dừng của một tuyến xe buýt khi thêm mới 1 điểm cho 1 tuyến xe buýt.
CREATE OR REPLACE FUNCTION point_add() RETURNS trigger AS
$BODY$
DECLARE tim INTEGER; begin
tim=0;
tim = 'select count(*) from points where idb=' || new.idb; update bus set nub=tim where idb=new.idb;
return new; end;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
ALTER FUNCTION point_add() OWNER TO postgres
+ Hàm thực hiện tính toán các dữ liệu thay đổi theo thời gian
Tính toán các dữ liệu thay đổi theo thời gian từ đầu tuyến đến cuối tuyến, đánh dấu các điểm với thời gian kết thúc điểm dừng tuyến trong ngày
create or replace function _0_gobus(timez time without time zone ) returns void as $$
DECLARE r record; k record;
tmp time without time zone; c integer;
s integer; e integer; m record;
h time without time zone; begin
FOR r IN SELECT * FROM points LOOP
for m in select * from bus where idb=r.idb
loop
tmp = m.timestart;
s= (SELECT EXTRACT(EPOCH FROM tmp ));
tmp = r.timestart;
e= (SELECT EXTRACT(EPOCH FROM tmp));
h= m.timeend;
end loop;
c= (SELECT EXTRACT(EPOCH FROM h)) + e- s;
RAISE NOTICE 'ND:%' , c;
/*c= (SELECT EXTRACT(EPOCH FROM timez));
if (c> (SELECT EXTRACT(EPOCH FROM timez))) then /* chua het time*/
if (EXISTS (select * from gobus where idb=r.idb and ids=r.ids )) then
for k in select * from gobus where idb=r.idb and ids=r.ids
LOOP
tmp = k.timeend;
c = (SELECT EXTRACT(EPOCH FROM tmp));
END LOOP;
else
Insert into "gobus"(idb,ids,timestart,timeend)
values(r.idb,r.ids,r.timestart ,'00:00:00'); /*Chua ket thuc*/
end if;
else
update gobus set timeend=(SELECT to_timestamp(c)) where
idb=r.idb and ids=r.ids; /*ket thuc*/
end if;
END LOOP; end;
$$ language plpgsql;
SELECT EXTRACT(EPOCH FROM time WITHout TIME ZONE '21:13:00'); SELECT _0_gobus( '21:05:00');
Một số hình ảnh của chƣơng trình.
Khách hàng có thể tìm hiểu thông tin cũng nhƣ tìm đƣờng đi hay các tuyến , các trạm xe buýt trong nội đô thành phố Hà Nội trên trang website xebuyt.org
Hình 3.2Trang chủ của website hệ thống quản lý xe buýt Hà Nội
Hình 3.3.Trang tin tức giao thông
Khi đăng nhập với tên của ngƣời quản trị website vào hệ thống, trang web sẽ hiển thị các chức năng quản lý thực hiện thêm, sửa, xóa các trạm, điểm, tuyến xe
buýt trong nội thành Hà Nội. Thay đổi hay cập nhật thêm những thông tin trong trang tin tức.
Hình 3.4: Cập nhật thông tin về các điểm xe buýt.
Hinh3.6: Cập nhật thông tin chi tiết về các tuyến xe buýt hoạt động
3.3. Thử nghiệm và đánh giá các thuật toán
Học viên đã tiến hành tích hợp thành công ba cơ sở sữ liệu mở rộng nhƣ cơ sở dữ liệu tích cực, cơ sở dữ liệu thời gian và cơ sở dữ liệu không gian vào bài toán. Thử nghiệm, so sánh và đánh giá thuật toán tìm đƣờng đi đã cài đặt trên hệ thống. trong bài toán tìm đƣờng đi xe buýt, với số lƣợng đỉnh và cung khá lớn việc tiến hành giải bài toán bằng các phƣơng pháp thông thƣờng nhƣ Dijkstra hay ma trận sẽ không hiệu quả về mặt tốc độ thực hiện, không gian bộ nhớ để lƣu trữ và kết quả của bài toán.
KẾT LUẬN
Luận văn đã thực hiện đƣợc những công việc sau:
- Nghiên cứu tổng quan về mô hình cơ sở dữ liệu mở rộng, mô hình cơ sở dữ liệu tích cực (Active database) mô hình cơ cơ sở dữ liệu thời gian (Temporal database) và mô hình cơ sở dữ liệu không gian (spatial databas).
- Nghiên cứu về hệ quản trị cơ sở dữ liệu PostgreSQL và PostGIS, thực hiện các hàm các phép toán truy vấn trong không gian với hệ quản trị PostgreSQL và PostGIS.
- Áp dụng: Chƣơng trình quản lý xe buýt thành phố Hà Nội.
- Đánh giá bài toán với các phép toán tích hợp của cơ sở dữ liệu mở rộng. Tuy nhiên, do bộ dữ liệu sử dụng để đánh giá chƣa đủ lớn để nên chƣa đánh giá hết đƣợc hiệu quả và các đặc trƣng của bài toán, tính ổn định của hệ thống thử nghiệm. trong tƣơng lai, cần phải thử nghiệm và đánh giá trên những bộ dữ liệu lớn hơn.
Hƣớng phát triển tiếp theo của luận văn:
- Tiếp tục nghiên cứu về các mô hình CSDL mở rộng khác cùng với các ứng dụng của chúng.
- Hoàn thiện bài toán vẽ bản đồ xe buýt để có thể đƣa vào ứng dụng thực tiễn nhằm giảm tải ùn tắc giao thông
- Phát triển hệ thống bản đồ thành dịch vụ tiện ích truy cập miễn phí trên các trang thông tin tìm kiếm trên máy tính và trên điện thoại di động.
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Nghiêm Thị Hƣơng, KLTN, Hệ quản trị CSDl PostgreSQL& Postgis.
[2] Lâm Vĩ Quốc-Trân Thị Bích Hạnh, luận văn- Hệ thống hỗ trợ tìm đƣờng đi xe buýt trên Web.2003
[3] Nguyễn Tuệ(2007). Nhập môn cơ sở dữ liệu, NXB Giáo Dục
Tiếng Anh
[4]
Active Database Sufiystems NORMAN W.PATON University of Manchester AND OSCAR DIAZ University of the Basque Country. Journal ACM Computing Surveys (CSUR) Surveys Homepage archive Volume 31 Issue 1, March 1999
[5]
Carlo Combi, Massimo Franceschet, Adriano Peron,
Representing and reasoning about temporal granularities,
1996
[6]
Christian S. Jensen, Senior Member, IEEE, and Richard T. Snodgrass, Senior Member, IEEE, Temporal Data
Management, 2001
[7]
Decker, H.(2002). Translating advanced integrity checking techonology to SQL.In J.Door&L Rivero(Eds).database integrity: challenges and solutions(pp.203-249). Hershey,PA: Idea Group Publishing.
[8] Elmasri, R., S. B. Navathe, Fundamentals of Database
Systems, InternationalEdition, 2000, pp 630 -652.
[9]
Ewald Geschwinde and Hans_Juergen Shoening, PHP PostGre SQL advanced web programming, 2002, Same Publishing
Model for Multimedia Database Systems, Research Report, 1997.
[11] Raghu Ramakrishnan, Database Management Systems,
McGraw –Hill, 1998
[12]
Korry Dougla and Susan Douglas. The comprechensive guide to building program and admimnistering, PostgreSQL database, 2nd , 2005, Same Publishing
[13] Postgis 1.5.0 Manual
[14]
X.Sean Wang, Claudio Bettini, Alexander Brodsky and Sushil Jajodia, Logical Design for Temporal Database with
Multiple Granularities, ACM Trans Database Systems, 1997.
Websites [15] http://www.codeproject.com [16] http://kdtqt.duytan.edu.vn [17] http://.sli.unimelb.edu.au/giweb/GISModule/GIST_Vector. [18]ss http://www.postgresql.org [19] http://www.postgis.refractions.net
[20] http://vi.wikipedia.org/wiki/So_sanh _he _quan _tri _csdl