1. Trang chủ
  2. » Công Nghệ Thông Tin

Quản trị cơ sở dữ liệu Oracle 06 object relational

53 231 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 53
Dung lượng 189,74 KB

Nội dung

Object-Relational Database sở liệu hướng đối tượng Tổng quan • • • object-relational database (ORD) DBMS dựa mô hình sở liệu hướng đối tượng: object, class inheritance (thừa kế) Ưu điểm: – Ưu điểm tái sử dụng(reuse) chia sẻ (sharing) Nhược điểm: – – Tăng dung lượng lưu trữ Chi phí thiết lập bảo trì hệ thống cao Oracle object type • • Oracle object type kiểu liệu người dùng định nghĩa (class) giúp mô hình hóa đối tượng giới thực như: khách hàng, hóa đơn… Mô hình object type oracle tương tự class C++ Java Oracle Object Type • Gồm phần: attribute method Object Type person_type Attribute Method name get_areacode phone Tạo Object type: CREATE TYPE person_type AS OBJECT ( name VARCHAR2(30), phone VARCHAR2(20), MEMBER FUNCTION get_areacode RETURN VARCHAR2 ); Xóa Object type: DROP TYPE person_type; Object Instance • • Là thể (instance) object type Thường gọi object Object Type person_type Attribute Method name get_areacode phone Object instance Name: Verna Phone: 650-555-0125 Object instance Name: John Phone: 680-555-0135 Oracle Method • • Là function hay procedure khai báo object type nhằm thực thi hành vi object Method type: – Member method • Là method truy xuất đến liệu object instance • Được gọi (invoke) object type (không phải instance) – Static method – Constructor method Member Method • Member method sử dụng để truy xuất đến giá trị object instance CREATE OR REPLACE TYPE BODY person_type AS MEMBER FUNCTION get_areacode RETURN VARCHAR2 IS BEGIN RETURN SUBSTR(phone, 1, 3); END get_areacode; END; Object instance SELECT c.contact.get_areacode() FROM contacts c; C.CONTACT.GET_AREACODE() Name: Verna Phone: 213-555-0125 Object instance -213 Name: John 680 Phone: 680-555-0135 Constructor Method • • System-Defined Constructor User-Defined Constructor Constructor Method System-Defined Constructor • • • Mọi object type constructor method tạo tiềm ẩn hệ thống Trả thể (instance) object type thiết lập giá trị cho attribute object instance Tên constructor method giống tên object type p = person_type(‘Scott Tiger’, ‘321-123-1234’); INSERT INTO contacts VALUES ( person_type(‘Scott Tiger’, ‘321-123-1234’), ’10 Feb 2004’)); Constructor Method User-Defined Constructor • Ta tự định nghĩa hàm constructor để khởi tạo giá trị ban đầu cho object Object Type person_type CONSTRUCTOR FUNCTION person_type ( name VARCHAR2) RETURN SELF AS RESULT IS Attribute Method SELF.name := name; name person_type (name) SELF phone := '333-333-333'; phone BEGIN SELF address:= 'New York'; address RETURN; END; INSERT INTO contacts VALUES (person_type(‘Scott Tiger’), ’10 Feb 2004’)); Ví dụ 1: chuyển từ mô hình quan hệ sang mô hình hướng đối tượng • • Giả sử cần lưu trữ thông tin nhân viên, nhân viên từ đến số điện thoại NHANVIEN (manv, hoten, sdt1, sdt2, sdt3) manv hoten SDT1 SDT2 SDT3 NHANVIEN Ví dụ class diagram: NHANVIEN SODIENTHOAI manv sodt hoten NHANVIEN SODIENTHOAI manv sodt hoten CREATE TYPE PhoneList_vartyp AS VARRAY(3) OF VARCHAR2(20); CREATE TYPE nhanvien_type AS OBJECT ( manv VARCHAR2(5), hoten VARCHAR2(30), sdt PhoneList_vartyp ); CREATE TABLE nhanvien_table OF nhanvien_type ; INSERT INTO nhanvien_table VALUES (nhanvien_type('nv1', 'Le van Minh', PhoneList_vartyp('213-740-1212')) ); INSERT INTO nhanvien_table VALUES (nhanvien_type('nv2', 'Nguyen Vinh Anh', PhoneList_vartyp('650-555-0125', '650-222-9807'))); Ví dụ • • • Cho lược đồ CSDL: NXB (maNXB, tenNXB, diachi) SACH (masach, tensach, maNXB) maNXB tenNXB masach diachi NXB co tensach SACH N Ví dụ NXB (maNXB, tenNXB, diachi) SACH (masach, tensach, maNXB) Chuyển sang CSDL hướng đối tượng: CREATE TYPE nxb_type AS OBJECT ( CREATE TYPE sach_type AS OBJECT ( manxb VARCHAR2(5), masach VARCHAR2(5), tennxb VARCHAR2(30), tensach VARCHAR2(30), diachi VARCHAR2(30)); nxb CREATE TABLE nxb OF nxb_type ; REF nxb_type ); CREATE TABLE sach OF sach_type; Ví dụ INSERT INTO nxb VALUES (nxb_type ('NXB1', 'KIM DONG', 'HA NOI')); INSERT INTO nxb VALUES (nxb_type ('NXB2', 'MANG NON', 'DA NANG')); INSERT INTO sach VALUES (sach_type('sach1', 'doremon', (SELECT REF(n) FROM nxb n WHERE n.maNXB = 'NXB2'))); INSERT INTO sach VALUES (sach_type('sach2', '7 vien ngoc rong', (SELECT REF(n) FROM nxb n WHERE n.maNXB = 'NXB2'))); INSERT INTO sach VALUES (sach_type('sach3', 'co be lo lem', (SELECT REF(n) FROM nxb n WHERE n.maNXB = 'NXB1'))); MANXB TENNXB DIACHI MASACH TENSACH NXB NXB1 KIM DONG HA NOI sach1 doremon NXB_TYPE('NXB2','MANG NON','DA NANG') NXB2 MANG NON DA NANG sach2 vien ngoc rong NXB_TYPE('NXB2','MANG NON','DA NANG') sach3 co be lo lem NXB_TYPE('NXB1','KIM DONG','HA NOI') Ví dụ MANXB TENNXB DIACHI MASACH TENSACH NXB NXB1 KIM DONG HA NOI sach1 doremon NXB_TYPE('NXB2','MANG NON','DA NANG') NXB2 MANG NON DA NANG sach2 vien ngoc rong NXB_TYPE('NXB2','MANG NON','DA NANG') sach3 co be lo lem NXB_TYPE('NXB1','KIM DONG','HA NOI') Hiển thị tên sách, tên NXB sách SELECT tensach, s.nxb.tennxb FROM SACH s TENSACH NXB.TENNXB doremon MANG NON vien ngoc rong MANG NON co be lo lem KIM DONG Ví dụ NXB (maNXB, tenNXB, diachi) SACH (masach, tensach, maNXB) Chuyển sang CSDL hướng đối tượng (Cách khác): CREATE TYPE nxb_type AS OBJECT ( manxb VARCHAR2(5), tennxb VARCHAR2(30), diachi VARCHAR2(30)); CREATE TABLE nxb OF nxb_type ; CREATE TABLE sach ( masach VARCHAR2(5), tensach VARCHAR2(30), manxb REF nxb_type ); Ví dụ (varray) Cho lược đồ quan hệ sau: Sanpham (masp, tensp, giaTK) Hoadon (sohd, nghd) CTHD (sohd, masp, soluong, giaban) Chuyển mô hình sang hướng đối tượng (yêu cầu: CTHD không nằm riêng lẻ, mà phần Hoadon, hóa đơn nhiều 100 cthd) Sanpham (masp, tensp, giaTK) Hoadon (sohd, nghd, cthd_varray (masp, soluong, giaban)) CREATE TYPE sanpham_typ AS OBJECT (masp VARCHAR2(4), tensp VARCHAR2(50), giaTK NUMBER); CREATE TYPE cthd_type AS OBJECT (sanpham REF sanpham_typ, soluong INT, giaban NUMBER); CREATE TYPE cthd_varray IS VARRAY (100) OF cthd_type CREATE TABLE sanphamTbl OF sanpham_typ; CREATE TABLE hoadonTbl (sohd VARCHAR2(4), nghd DATE, cthd cthd_varray) Ví dụ (nested table) Cho lược đồ quan hệ sau: Sanpham (masp, tensp, giaTK) Hoadon (sohd, nghd) CTHD (sohd, masp, sl, giaban) Chuyển mô hình sang hướng đối tượng (yêu cầu: CTHD không nằm riêng lẻ, mà phần Hoadon, sử dụng nested table) CREATE TYPE sanpham_typ AS OBJECT ( masp VARCHAR2(4), tensp VARCHAR2(50), giaTK NUMBER); CREATE TYPE cthd_type AS OBJECT ( sanpham REF sanpham_typ, soluong INT, giaban NUMBER); CREATE TYPE cthd_tab AS TABLE OF cthd_type CREATE TABLE sanphamTbl OF sanpham_typ; CREATE TABLE hoadonTbl ( sohd VARCHAR2(4), nghd DATE, cthd cthd_tab) NESTED TABLE cthd STORE AS cthd_col_tab; Ví dụ (nested table) Insert liệu INSERT INTO sanphamTbl VALUES ('SP01', 'BUT BI', 20); INSERT INTO sanphamTbl VALUES ('SP02', 'BUT CHI', 60); INSERT INTO sanphamTbl VALUES ('SP03', 'TAP 20 TRANG', 35); INSERT INTO hoadonTbl VALUES ('HD01', '25-JAN-2009', cthd_tab( cthd_type((SELECT REF(s) FROM sanphamTbl s WHERE masp = 'SP01'), 7, 25), cthd_type((SELECT REF(s) FROM sanphamTbl s WHERE masp = 'SP02'), 6, 75) ) ); Bài tập • • Thiết kế object type point thuộc tính x, y Thiết kế object type circle gồm center (tâm), radius (bán kính), hàm getArea tính diện tích hình tròn (center kiểu liệu point) • Tạo bảng lưu trữ liệu hình tròn (circle) Bài tập • Chuyển mô hình sau sang hướng đối tượng: – student (studentId, name) – course (courseId, courseName) – enrollment (studentId, courseId) ... trữ object table • Object lưu trữ loại table: – Object table: lưu trữ object • Trong object table, row biểu diễn object • Object lưu trữ column relational table – Relational table: lưu trữ object. .. hệ thống cao Oracle object type • • Oracle object type kiểu liệu người dùng định nghĩa (class) giúp mô hình hóa đối tượng giới thực như: khách hàng, hóa đơn… Mô hình object type oracle tương... object với liệu khác table Object table Object Type person_type Attribute name Object Object Name: Verna Name: John Phone: 650-555-0125 Phone: 680-555-0135 phone Tạo object table: Lưu trữ liệu: CREATE

Ngày đăng: 29/08/2017, 10:16

TỪ KHÓA LIÊN QUAN