1. Đường cú điểm đầu và cuối trựng nhau 2 Tập cỏc đường nếu vựng cú lỗ hổng
1.4.3. Truy vấn dữ liệu khụng gian
Người dựng truy vấn dữ liệu thụng qua một ngụn ngữ truy vấn chẳng hạn như SQL. DBMS phải thực hiện một cỏch tự động để truy vấn đú đạt hiệu quả.
Cỏc truy vấn cú thể được chia thành hai loại: đơn truy vấn và đa truy vấn. Trong đơn truy vấn, một bản ghi (bộ bản ghi) trong một bảng (quan hệ) được truy cập nhiều nhất một lần. Vỡ vậy, trong trường hợp xấu nhất, tất cả cỏc bản ghi trong bảng sẽ được truy cập và xử lý để kiểm tra tiờu chuẩn truy vấn [12]. Truy vấn “Tờn của tất cả cỏc hiệu sỏch trong bỏn kớnh 5km đối với trung tõm thương mại Tràng Tiền Plaza” là một vớ dụ về đơn truy vấn. Kết quả của truy vấn này sẽ là tất cả cỏc hiệu sỏch nằm trong vũng trũn bỏn kớnh 5km với tõm là Tràng Tiền Plaza. Truy vấn này cũng là một vớ dụ của một truy vấn vựng khụng gian. Ở đõy, vựng truy vấn là một vũng trũn bỏn kớnh 5km. Nếu vựng truy vấn là một hỡnh chữ nhật thỡ truy vấn vựng khụng gian này thường được gọi là truy vấn cửa sổ.
Một truy vấn nối là một vớ dụ về đa truy vấn. Để trả lời một truy vấn nối, DBMS phải phục hồi và liờn kết hai bảng vào trong cơ sở dữ liệu. Nếu cú nhiều hơn hai bảng để xử lý truy vấn thỡ cỏc bảng này được xử lý theo từng cặp. Hai bảng được nối với nhau bằng một thuộc tớnh chung. Do một bản ghi trong một bảng cú thể được kết hợp với nhiều hơn một bản ghi trong bảng kia, vỡ vậy, cỏc bản ghi cú thể phải truy cập nhiều lần để hoàn thành kết nối. Đối với cơ sở dữ liệu khụng gian, khi cỏc thuộc tớnh nối là khụng gian tự nhiờn, truy vấn này được gọi là truy vấn nối
khụng gian. Sau đõy chỳng tụi đưa ra một vớ dụ để minh hoạ sự khỏc nhau giữa phộp nối phi khụng gian và phộp nối khụng gian.
Xột hai bảng CONGDAN và CONGTY như trong hỡnh 1.14.
Hỡnh 1.14. Sự khỏc nhau giữa phộp nối phi khụng gian và phộp nối khụng gian
Bảng CONGDAN bao gồm cỏc thuộc tớnh: Tờn (NAME), số chứng minh thư nhõn dõn (ID_CARD), giới tớnh (GENDER) và nơi ở (DISTRICT). DISTRICT là một thuộc tớnh khụng gian và được thể hiện bằng một đa giỏc (polygon). Bảng CONGTY là danh sỏch thụng tin về tất cả cỏc cụng ty: Tờn cụng ty (CT-NAME), tờn giỏm đốc cụng ty (OWNER), số chứng minh thư nhõn dõn của giỏm đốc (ID_CARD), và địa điểm của cụng ty (LOCATION). LOCATION là một thuộc tớnh khụng gian được biểu diễn bằng một điểm (point). Xột truy vấn: “Tỡm tờn của tất cả nữ giới là giỏm đốc của một cụng ty”. Vớ dụ này bao gồm một phộp nối phi khụng gian, kết nối cỏc thuộc tớnh ID_CARD của hai bảng với nhau. Trong SQL, truy vấn này sẽ được viết như sau:
SELECT CD.name
FROM CONGDAN CD, CONGTY CT WHERE CD.id_card = CT.id_card
CD.gender = „Female‟;
Xột truy vấn: “Tỡm tất cả những người sống ở một quận cú diện tớch lớn hơn 30km2 và là giỏm đốc một cụng ty trong quận đú”. Truy vấn này bao gồm một toỏn tử kết nối khụng gian giữa cỏc thuộc tớnh LOCATION và DISTRICT. Như vậy, đối với một phộp nối phi khụng gian, cỏc thuộc tớnh nối phải cựng kiểu, cũn
trong phộp nối khụng gian cỏc thuộc tớnh cú thể cú kiểu khỏc nhau, trong trường hợp này là point và polygon. Đõy là truy vấn sẽ được diễn đạt trong SQL:
SELECT CD.name
FROM CONGDAN CD, CONGTY CT WHERE CD.district.Area() > 30
Within (CT.location, CD.district);
SDBMS xử lý cỏc truy vấn vựng sử dụng mụ hỡnh lọc-tinh chế. Mụ hỡnh này là một tiến trỡnh gồm hai bước. Trong bước thứ nhất, lựa chọn cỏc đối tượng mà cỏc hỡnh chữ nhật bao nhỏ nhất của chỳng (MBR - Minimum Bounding Rectangle) thoả món điều kiện khụng gian. Việc sử dụng hỡnh chữ nhật bao nhằm đơn giản tớnh toỏn hơn so với một vựng cú hỡnh dạng tuỳ ý. Nếu truy vấn vựng là một hỡnh chữ nhật, thỡ chỉ cần tớnh nhiều nhất bốn phộp giao. Đõy gọi là bước lọc. Kết quả của bước lọc chứa cỏc thành phần thoả món truy vấn ban đầu. Tuy nhiờn, một MBR cú thể thoả món yờu cầu truy vấn nhưng hỡnh dỏng thật sự của nú lại khụng thoả món (vỡ MBR bao toàn bộ đối tượng). Vỡ vậy, cỏc đối tượng trong tập kết quả của bước lọc cần được tiếp tục xột trong bước thứ hai, đú là xử lý kết quả của bước lọc. Mụ hỡnh thực hiện theo hai bước này sẽ giảm được thời gian tớnh toỏn của truy vấn. Hỡnh 1.15 thể hiện một vớ dụ của phương phỏp lọc-tinh chế.
Hỡnh 1.15. Phương phỏp Lọc - Tinh chế
Tối ưu truy vấn
Một trong những sức mạnh chớnh của cơ sở dữ liệu quan hệ là nú thực hiện hiệu quả một truy vấn bằng cỏch tỏch cỏc truy vấn phức tạp. Xột truy vấn “Tỡm tờn của tất cả nữ giới là giỏm đốc của một cụng ty”. Truy vấn này thực tế bao gồm hai truy vấn con: truy vấn chọn và truy vấn nối. “Tờn của tất cả nữ giới” là một truy vấn chọn do phải chọn tất cả cỏc nữ giới từ danh sỏch cỏc cụng dõn. Truy vấn “Tỡm tất cả cỏc cụng dõn làm giỏm đốc một cụng ty” là một truy vấn nối, bởi vỡ phải kết nối hai bảng để xử lý truy vấn. Như vậy, nờn thực hiện truy vấn chọn trước hay truy vấn nối trước? Do truy vấn nối là một đa truy vấn, và truy vấn chọn là một đơn truy vấn, vỡ vậy toỏn tử nối cần làm việc với kớch thước của bảng nhỏ hơn so với toỏn tử chọn. Rừ ràng trong trường hợp này cần thực hiện truy vấn chọn trước truy vấn nối.
Xột truy vấn khụng gian: “Tỡm tất cả cỏc cụng dõn sống trong một quận cú diện tớch lớn hơn 30km2 và làm giỏm đốc một cụng ty trong quận đú”. Truy vấn này cũng bao gồm hai truy vấn con: truy vấn vựng và truy vấn nối khụng gian. Truy vấn vựng là: “Tờn của tất cả cỏc cụng dõn sống trong một quận cú diện tớch lớn hơn 30km2”. Truy vấn nối khụng gian là: “Tỡm tất cả cỏc cụng dõn làm giỏm đốc một
Vựng truy vấn A C B C B C Lọc Tinh chế MBR Đối tượng
cụng ty trong quận mà họ đang sinh sống”. Mặc dự truy vấn vựng là đơn truy vấn nhưng do việc tớnh diện tớch cỏc vựng khú hơn nờn trường hợp này cần thực hiện truy vấn nối khụng gian trước truy vấn vựng.[12]