ĐẠI SỐ ĐỐI TƯỢNG VÀ CÁC PHÉP BIẾN ĐỔI ĐẠI SỐ

Một phần của tài liệu Bài giảng cơ sở dữ liệu nâng cao (Trang 95 - 97)

- Các khái niệm về Lịch biểu trong giao dịch phân tán (Schedule)

6. Quan hệ hiện thực hoá

5.2. ĐẠI SỐ ĐỐI TƯỢNG VÀ CÁC PHÉP BIẾN ĐỔI ĐẠI SỐ

5.2.1. Đối tượng và các giá trị

Tập Domcác giá trị nguyên thuỷ là hợp của tất cả các miền giá trị cơ sở của ngôn ngữ lập trình L. Các phần tử của Dom được gọi là hằng, trong đó nil là một hằng đặc biệt biểu diễn giá trị không xác định.

Ta ký hiệu Obj = {o1, o2, ...} là tập vô hạn các định danh đối tượng (OID) và Class là tập các tên lớp, Attlà tập các tên thuộc tính.

Với một tập Oid là tập con các định danh đối tượng, OidObj, họ các giá trị trên Oid, ký hiệu

Val(Oid), được xác định như sau: (i) Hằng nilVal(Oid)

(ii) Nếu vDom thì vVal(Oid) (iii) Nếu oOid thì oVal(Oid)

(iv) Tập {vi | viVal(Oid), (i = 1, ..., n)} Val(Oid) và

(v) Cho tập các giá trị {vi | viVal(Oid), (i = 1, ..., n)} và tập các tên thuộc tính khác nhau {Ai | Ai, AjAtt, (i jAiAj), (i, j = 1, ..., n)} thì bộ [A1 : v1, ..., An : vn]  Val(Oid).

Một đối tượng trong hệ thống thường được mô tả bởi một cặp (o, v), trong đó olà định danh đối tượng và vlà trạng thái hay giá trị hiện thờicủa đối tượng. Trong hệ thống hướng đối tượng, mỗi đối tượng đều tồn tại ở một trạng thái xác định.

Các đối tượng có cùng tính chất và hành vi được nhóm lại để tạo thành một lớp. Mỗi lớp c có một kiểu xác định, ký hiệu là (c), là kiểu của các đối tượng trong lớp. Tức là, mỗi đối tượng (o,

v) của lớp c, thì trạng thái hiện thời v của nó là (c).

Với tập tên lớp C đã cho, CClass, họ các kiểu của tất cả các lớp trong C, ký hiệu Types(C), được xác định như sau:

(i) Tất cả các kiểu nguyên thuỷ: byte, int, long, float, double, char, string, và boolean Types(C); kể cả kiểu rỗng (void) cũng thuộc Types(C).

(ii) Nếu c C thì (c) Types(C);

(iii) Nếu  Types(C), thì tập {} Types(C);

<<interface>> ChoiceBlock setDefault() getChoice(): Choice PopUpMenu setDefault() getChoice(): Button

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 95

(iv) Cho một tập các kiểu {i | i  Types(C), (i = 1, ..., n)} và tập các tên thuộc tính khác nhau {Ai | Ai, AjAtt, (i j Ai Aj), (i, j = 1, ..., n)} thì bộ [A1 : 1, ..., An : n]  Types(C) và mỗi lớp c có một kiểu với dạng bộ tương ứng, tức là (c) = [A1 : 1, ..., An : n].

Nếu lớp c1 có thuộc tính Ai với kiểu i và i = c2, mà c2là một lớp, thì giữa lớp c1c2có một

mối quan hệ kết nhập–các đối tượng của lớp c1được hợp thành từ các đối tượng của lớp c2 . Thuật ngữ classđược sử dụng để mô tả một định nghĩa kiểu của lớp các đối tương, cùng với các định nghĩa các tác vụ cho kiểu đó.

Thí dụ 6.3.Cho các lớp đối tượng được định nghĩa như sau:

defineclass GiaoVien:

typetuple(hoTen: string, gioiTinh: boolean, hocVi: string, khoa: Khoa));

end GiaoVien;

defineclass Khoa:

typetuple(tenKhoa: string, truongKhoa: GiaoVien, giaoVien: set(GiaoVien)); end Khoa;

Hệ thống có các đối tượng sau:

Ob1 = (o1, [hoTen: “Lê Văn Ba”, gioiTinh: false, hocVi: “Tiến sĩ”, khoa: o99]) Ob2 = (o2, [hoTen: “Nguyên Minh”, gioiTinh: true; hocVi: “Thạcsĩ”, khoa: o99]) Ob3= (o3, [hoTen: “Trần Văn Hùng”, gioiTinh: false, hocVi: “Kỹ sư”, khoa: o99]) Ob4 = (o4, [hoTen: “Ngũ Thiện Huy”, gioiTinh: false, hocVi: “Tiến sĩ”, khoa: o99]) Ob5 = (o99, [tenKhoa: “Công nghệ thông tin”, truongKhoa: o1, giaoVien: {o1, o2, o3, o4}])

Đối tượng Ob1 theo định nghĩa trong lược đồ trên sẽ gồm định danh o1 và một bộ (tuple) các giá trị: [hoTen: “Lê Văn Ba”, gioiTinh: false, hocVi: “Tiến sĩ”, khoa: o99]. Đối tượng Ob99 có định danh là o99 và một giá trị bộ: [tenKhoa: “Công nghệ thông tin”, truongKhoa: o1, giaoVien: {o1, o2, o3, o4}], trong đó, thuộc tính tenKhoa có giá trị nguyên thủy, thuộc tính truongKhoa tham chiếu đến đối tượng có định danh đối tượng là o1, thuộc tính giaoVien có giá trị tập (set) tham chiếuđến các đối tượng với các định danh đối tượng o1, o2, o3, o4.

Kiểu của lớp GiaoVien là:

(GiaoVien) = [hoTen: string, gioiTinh: boolean, hocVi: string, khoa: Khoa] = 1 Tương tự kiểu của lớp Khoa:

(Khoa) = [tenKhoa: string, truongKhoa: GiaoVien, giaoVien: {GiaoVien}] = 2 Hệ thống có C = {GiaoVien, Khoa}, và

Types(C) = {string, boolean, 1, 2}

Trong mô hình dữ liệu quan hệ, hai bộ (thực thể) bằng nhau nếu tất cả các thuộc tính khoá của hai bộ có cùng giá trị. Tuy nhiên, trong CSDL hướng đối tượng, cần phân biệt hai khái niệm “đồng nhất” với “bằng nhau” của các đối tượng như trong thực tế. Hai quan hệ này được định nghĩa như sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 96

Định nghĩa 6.1.Cho hai đối tượng Ob1(o1, v1) và Ob2(o2, v2).

(i) Đối tượng đồng nhất: Hai đối tượng Ob1 và Ob2 được gọi là đối tượng đồng nhất, ký hiệu Ob1 =oid Ob2 nếu chúng có cùng định danh đối tượng, tức là Ob1.o1 = Ob2.o2, thực chất là cùng một đối tượng.

(ii) Đối tượng bằng nhau: Hai đối tượng Ob1 và Ob2 được gọi là bằng nhau về giá trị, ký hiệu Ob1 =v Ob2:

- Nếu kiểu của đối tượng là nguyên thuỷ thì chúng phải có cùng giá trị.

- Nếu kiểu của đối tượng là kiểu tham chiếu (không nguyên thuỷ) thì chúng phải có cùng số các thuộc tính và với mọi thuộc tính pi của Ob1 đều tồn tại thuộc tính pi′của Ob2 có giá trị bằng nhau.

Một phần của tài liệu Bài giảng cơ sở dữ liệu nâng cao (Trang 95 - 97)