Biều đồ 3.3 So sánh thời gian thực hiện truy vấn 3
1.5. Các phép toán đối tƣợng
Các phép toán đại số đối tƣợng đƣợc chia làm sáu loại: phép toán đối tƣợng, phép toán bộ, phép toán hợp, phép toán “ túi”, phép toán danh sách và phép toán mảng [4, 17, 26].
1.5.1. Phép toán đối tƣợng
Mỗi đối tƣợng đƣợc biểu diễn nhƣ một bộ ba (OID, Tên lớp, Giá trị), OID là định danh của đối tƣợng, Tên lớp là kiểu của đối tƣợng và Giá trị của đối tƣợng do ngƣời sử dụng định nghĩa thƣờng là kiểu bộ. Có ba phép toán đối tƣợng:
- Chiếu lấy định danh (πO): phép toán πO nhận vào một đối tƣợng và trả về định danh của đối tƣợng.
- Chiều lấy giá trị (πV): phép toán πV nhận vào một đối tƣợng và trả về giá trị của đối tƣợng.
- Chiếu lấy đối tƣợng (πD): phép toán πD nhận vào một định danh đối tƣợng và trả về đối tƣợng có định danh tƣơng ứng.
1.5.2. Phép toán bộ
Thiết lập bộ: tuple(a1 : v1, …, an : vn). Phép toán tuple nhận một số các thuộc tính và các cặp giá trị (ai : vi) và trả về một bộ (a1, …, an).
Chiếu bộ π(Attrs)(): phép toán này nhận một bộ và trả về một bộ con với tên các thuộc tính đƣợc mô tả trong tập Attrs.
Trích xuất giá trị thuộc tính ðAttrs(): nhận vào một bộ và trả về giá trị của thuộc tính mô tả Attrs.
Nối bộ tuple_cat(): nhận vào hai bộ và nối chúng vào một bộ mới. Phép toán này đƣợc dùng thay thế tích Đề các.
1.5.3. Phép toán tập hợp
- Thiết lập tập hợp set() hoặc {}: Phép toán thiết lập một tập khởi tạo một tập từ một số phần tử.
- Phép toán hợp: set_union. - Phép toán hiệu: set_diff. - Phép toán chọn trên tập hợp σs
s.f(): phép toán nhận vào một tập (thƣờng là một tập đối tƣợng) và trả về một tập (đối tƣợng) sao cho mỗi phần tử ở tập kết quả đều thoả mãn điều kiện mô tả trong công thức f.
Ví dụ: cho A = {2, 6, 4, 9}, s
s.s > 5 (A) = {6, 9}. Ký hiệu “” trong “s” đƣợc dùng nhƣ một biến đếm các phần tử trong tập đã cho. Với tập đã cho là một lớp, s là một biến thể hiện lớp.
- Phép toán làm phẳng tập set_flat(): phép toán set_flat nhận vào một tập các tập và trả về một tập chứa phần hợp của các tập lồng nhau. Ví dụ, set_flat({1, 2, 3}, {2, 3, 4}, {4, 5}) = {1, 2, 3, 4, 5}.
- Phép toán áp dụng hàm trên tập set_applys.e(): phép toán set_applys.e nhận vào một tập và áp dụng biểu thức đại số e cho mỗi phần tử trong tập. Ví dụ, cho A = {{1, 2, 3}, {2, 3, 4}, {4, 5}} là một tập các tập, thì set_applys.A set_diff{3}(A) = {{1, 2}, {2, 4}, {4, 5}}. Phép toán set_apply và chiếu bộ (hoặc trích xuất giá trị thuộc tính) thƣờng đƣợc sử dụng nhƣ phép chiếu trên một tập các bộ. Ví dụ xét truy vấn “Cho biết tên và tuổi của các nhân viên”, ta có:
) (
set_apply.(hoten,tuoi)(V(S)) NhanVien
1.5.4. Phép toán bag “túi”
Các phép toán trên kiểu dữ liệu bag gồm có: thiết lập bag, hợp, hiệu, chọn, làm phẳng, áp dụng hàm trên bag: bag(), bag_union(), bag_diff(), b
s.f(), bag_flat(), bag_applys.e() và bagtoset(): chuyển đổi một “túi” (bag) về tập hợp (set) bằng cách loại bỏ các trùng lặp trong “túi”.
1.5.5. Phép toán trên danh sách
Thiết lập danh sách, lấy phần tử đầu tiên, lấy phần tử cuối cùng, ghép danh sách, chọn, làm phẳng, áp dụng hàm: list(), first(), last(), list_cat(), l
s.f(), list_flat(), list_applys.e().
1.5.6. Phép toán trên mảng
- Thiết lập mảng, ghép mảng, áp dụng: array(), array_cat(), array_ applys.e().
- Trích xuất phần tử πi() : phép toán này trả về phần tử thứ i trong mảng đã cho. - Chiếu mảng πi,j(), j > i: phép toán trả về một mảng con chứa các phần tử có chỉ
số từ i đến j của mảng đã cho.