1 / 89

SEMINAR

BỘ MÔN: CƠ SỞ DỮ LIỆU NÂNG CAO. SEMINAR. SELECT Ten, MSSV, hinhAnh. FROM SINHVIEN sv JOIN PHANCONGSEMINAR pc ON sv.MSSV = pc.MSSV. WHERE pc.nhomTruong = ‘ 0912469 ’. CAD/CAM. Floats. Fixed collection. Complex kind of data. ?. Small. Integers. Relational Database. GIS.

ashlyn
Download Presentation

SEMINAR

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BỘ MÔN: CƠ SỞ DỮ LIỆU NÂNG CAO SEMINAR SELECT Ten, MSSV, hinhAnh FROM SINHVIEN sv JOIN PHANCONGSEMINAR pc ON sv.MSSV = pc.MSSV WHERE pc.nhomTruong = ‘0912469’

  2. CAD/CAM Floats Fixed collection Complex kind of data ? Small Integers Relational Database GIS Dates Boolean Document management Multimedia Repositories Strings

  3. Hỗ trợ nhiều loại dữ liệu phức tạp Với hai hướng phát triển chính • Object-Oriented Database Systems • Nơi mà các đối tượng phức tạp đóng vai trò là trung tâm • Bị ảnh hưởng nhiều bởi ngôn ngữ lập trình HĐT • Thêm các hàm vào DBMS như một môi trường lập trình • Object Data Model & Object Query Language được phát triển • Object-Relational Database Systems • Hỗ trợ một lớp rộng lớn của các ứng dụng Object-Database • Là cầu nối giữa mô hình quan hệ và hướng đối tượng • Các nhà cung cấp RDBMS đang thêm các chức năng ORDBMS Database Management System, Raghu Ramakrishnan & Johanes Gehrke

  4. Vituoso Universal Server FirstSQL/J SQL:1999 GibaBase Object-Database DB2 Oracle EnterpriseDB Daffodil DB Cache Nguồn: Wikipedia

  5. LOẠI NÀO TỐT HƠN? Không thể trả lời chính xác loại nào tốt hơn loại nào được Tùy vào trường hợp sử dụng

  6. Compare Extend New data ODL, OQL Object-Database Identity Challenge Inheritance Design

  7. Một số từ viết tắt • RDBMS: Relational Database Management System • OODBMS: Object-Oriented Database Management System • ORDBMS: Object-Relational Database Management System

  8. THIẾT KẾ CSDL? Hệ quản trị phải hỗ trợ các loại dữ liệu phong phú hơn những loại hiện có

  9. CÁC TÍNH NĂNG KHÔNG CÓ SẴN TRONG MÔ HÌNH QUAN HỆ RDBMS CÓ GIẢI QUYẾT ĐƯỢC? Binary Large Object (BLOB) Chỉ một dòng dài byte

  10. Do người dùng định nghĩa Dữ liệu của Dinky Entertainment Hình ảnh, giọng nói, video… Phải được lưu trữ trong cơ sở dữ liệu Phải có những phương thức đặc biệt

  11. Setof, listof, arrays, tuples…

  12. Một số kiểu phổ biến được hỗ trợ: • ROW(n­1 t1, …, nn tn): Là kiểu dữ liệu dùng để thể hiện cho một dòng, một bộ của n cột dữ liệu với n1,…,nn thuộc loại t1,…,tn tương ứng. • VD: SinhVien(mssv int, ten text, lop text) • ARRAY(base): Tương tự như mảng bên lập trình. • VD: DaySo(int) • VD: DSSV(ROW(mssv int, ten text, lop text)) • Listof(base): Là kiểu dữ liệu thể hiện các phẩn tử có thứ tự. Với 2 phần tử đặc biệt và head và tail. Và phương thức append, prepend. • Setof(base): Là kiểu thể hiện mà các phẩn tử nằm trong tập nằm không trùng nhau. Và có các phương thức của tập hợp: , , • Bagof(base): Là kiểu thể hiện mà các phần tử có thể là các Set hoặc multiset

  13. Tính kế thừa

  14. CREATE TABLE KhungHinh (soKhung integer,hinhAnh jpeg_image, theLoai integer) CREATE TABLE TheLoai (maTheLoai integer, tenTheLoai text, giaChoThue float , ghiChu text) CREATE TYPE kieu_RapPhim ROW(maRap integer, tenRap text, diaChi text, soDienThoai text) CREATE TABLE DanhSachRap OF kieu_RapPhim CREATE TABLE DangChieu (phim integer, rap ref(kieu_RapPhim) with scope DanhSachRap , batDau date, ketThuc date) CREATE TABLE DanhSachPhim (maPhim integer, tuaPhim text , nhanVat setof(text), daoDien text, chiPhi float) CREATE TABLE QuocGia (ten text, ranhGioi daGiac, danSo int, ngonNgutext)

  15. Thách thức đầu tiên: • Công ty sản xuất ngủ cốc Nestlé có chi nhánh ở Singapore • Thuê một hình ảnh Gấu Xanh ở phía trước mặt trời mọc • Thiết kế hợp ngủ cốc Alete SELECT K.soKhung, banThuNho(K.hinhAnh), T.giaChoThue FROM KhungHinh K, TheLoai T WHERE K.theLoai = T.maTheLoai AND co_MatTroi(K.hinhAnh) AND la_GauXanh(K.hinhAnh)

  16. Thách thức thứ hai: • Đến từ giám đốc điều hành Dinky • Biết rằng Alete rất phổ ở quốc gia Singapore • Muốn đảm bảo là có một số phim Gấu Xanh đang được chiếu ở Singapore khi mà Alete được trưng bày. SELECT D.rap->tenRap, N.rap->diaChi, P.tuaPhim SELECT K.soKhung, banThuNho(K.hinhAnh), T.giaChoThue FROM DangChieu D, Phim P, QuocGia Q FROM KhungHinh K, TheLoai T WHERE D.phim = P.maPhim AND namTren(Q.ranhGioi, banKinh(N.rap->diaChi, 100) AND Q.ten = ‘Singapore’ AND ‘Gấu Xanh’ ϵ F. nhatVat) WHERE K.theLoai = T.maTheLoai AND co_MatTroi(K.hinhAnh) AND la_GauXanh(K.hinhAnh)

  17. CREATE TABLE KhungAnh (soKhung integer,hinhAnh jpeg_image, theLoai integer) • Dùng để lưu trữ hình ảnh cho khung hình trong một bộ phim • Kiểu dữ liệu jpeg_image không nằm trong nhân DBMS • jpeg_image được xây dựng bởi người dùng để lưu trữ hình ảnh theo tiêu chuẩn JPEG. CREATE TABLE QuocGia (ten text, ranhGioi daGiac, danSo int, ngonNgu text)

  18. Định nghĩa kiểu dữ liệu mới tùy ý Là tính năng quan trọng của ORDBMS Cho phép lưu trữ và truy xuất đối tượng loại jpeg_images nhưng mọi đối tượng khác (ví dụ: kiểu int) Cần phải có các phương thức được định bởi người tạo ra chúng Ví dụ kiểu jpeg_images sẽ có các phương thức: nén, xoay, thuNhỏ, cắt… Sự kết hợp của kiểu dữ liệu (atomic) và các phương thức liên quan được gọi là Abtract Data Type (ADT) SQL truyền thống cũng đã xây dựng các ADTs, chẳng hạn như kiểu int và các toán tử liên quan (+, -, >, = …) hoặc string (LIKE). ORDBMS cũng cho phép người dùng định nghĩa kiểu riêng của mình

  19. Nhãn ‘abtract’ được áp cho các kiểu dữ liệu Bởi vì hệ thống CSDL không cần biết dữ liệu được lưu trữ cũng như phương thức của nó làm việc như thế vào. Đơn thuần chỉ cần biết input và output cho các phương thức Các phương thức được tích hợp vào ADT được gọi là tinh đóng gói. Ngay cả các kiểu int, string … cũng là ADT với tính đóng gói. CREATE ABTRACT DATA TYPE jpeg_image (internallength = VARIABLE,input jpeg_in, output jpeg_out) CREATE ABTRACT DATA TYPE polygon (internallength = VARIABLE,input poly_in, output poly_out)

  20. Đối với một kiểu dữ liệu mới được định nghĩa: • Xác định phương pháp cho phép các DBMS có thể đọc và xuất ra các đối tượng của kiểu dữ liệu này • Tính toán dung lượng cần thiết để lưu trữ đối tượng • Vậy người dùng phải khai báo tối thiếu các phương thức sau với DBMS: • Size • Import • Export

  21. Làm thế nào để khai báo cáo phương thức này? • Người dùng phải viết code cho các phương thức. • Thông báo cho DBMS biết về phương thức này. • Ngôn ngữ dùng để viết các phương thức này phụ thuộc vào ngôn ngữ được hỗ trợ bởi DBMS • Ví dự ORDBMS có thể xử lý ngôn ngữ Java chạy trên Linux CREATE FUNCTION coMatTroi(jpeg_image) RETURNS boolean AS EXTERNAL NAME ‘a/b/c/dinky.class’ LANGUAGE ‘java’ CREATE FUNCTION thuNho(jpeg_image) RETURNSjpeg_image AS EXTERNAL NAME ‘a/b/c/dinky.class’ LANGUAGE ‘java’ …

  22. Compare Extend New data ODL, OQL Object-Database objects Challenge Inheritance Design

  23. objects • Object identifier - oid • Kháiniêmvềđẳngthức • Dereferencing Reference Type

  24. Object identifier - oid • cácđốitượngđượcgán 1 giátrịoidtrong object-database systems. • cógiátrịduynhấttrongcsdlsuốtthờigiantồntại • DBMS chịutráchnhiệmtạo, vàtựđộngquảnlý • Thườnggiátrịkiểunguyên 32 hoặc 64 bit • oidcủa 1 đốitượngcóthểđượcdùngđểtrỏđếnđốitượngđódùvịtrịlưucủađốitượngđó ở bấtkỳđâu. Oid

  25. Object identifier - oid kiểu REF: làkiểumàgiátrịcủanólàcácđịnhdanhduynhấthoặciod Hàmdựng: REF(base) Vídụlệnhtrong sql:1999 CREATE TYPE kieu_RapPhim ROW(maRapinteger, tenRaptext, diaChitext, soDienThoaitext) CREATE TABLE DanhSachRap OF kieu_RapPhim CREATE TABLE DangChieu (phiminteger, rap ref(kieu_RapPhim) with scope DanhSachRap, batDaudate, ketThucdate)

  26. Sựkhácbiệtgiữaoidvà URL Oid URL

  27. Kháiniệmđẳngthức deep equal : đốitượngcócùngkiểuđượcxemlà deep equal khivàchỉkhi:

  28. Kháiniệmđẳngthức 2 đốitượngthoả shallow equal thìthoả deep equal. Trườnghợpngươclạikhôngthoả shallow equal : Nếucácđốitượnglànguyêntốhoặckiểucấutrúcthìkháiniêmgiống deep equal. Nếucácđốitượnglàkiểuthamchiếuthìgiá 2 đốitượngthamchiếuđóphảicùngtrỏđến 1 đốitượngduynhất.

  29. Kháiniệmđẳngthức Kieu_RapPhim BẢNG DanhSachRap1 ROW1 ( 13, ‘Galaxy’, ‘TânBình’, ‘01254747740’) BẢNG DanhSachRap2 ROW2 ( 13, ‘Galaxy’, ‘TânBình’, ‘01254747740’) BảngDangChieu ROW1( 1, 13, 12/12/2011, 21/03/2011) ROW2(1, 21, 12/12/2011, 21/03/2011) x Shallow equal Deep equal

  30. Dereferencing reference types Tạoragiátrịthamchiếu REF có type constructor REF(base). Lấygiátrịcủacácthuộctínhcủađốitượngmà REF thamchiếu?? deref()  Vídụ: DangChieu.deref(rap).tenRap HoặcDangChieu.raptenRap

  31. KẾ THỪA • Địnhnghĩakiểuvớikếthừa • Cơchế binding củaphươngthức • Tậpphâncấp, phạm vi kiểuvàtruyvấn Inheritance

  32. Địnhnghĩakiểuvớikếthừa Kieu_RapPhim tno integer Name text address text phone integer Kieu_rapPhimdichVu Menu text tno integer Name text address text phone integer supertype subtype CREATE TYPE Kieu_RapPhim UNDER Kieu_rapPhimDichVu(menu text) Minh hoạ:

  33. Cơchế binding củaphươngthức IMAGE_T Display() JPEG_IMAGE_T Display() supertype subtype CREATE FUNCTION display (jpeg_image) RETURNS jpeg_image AS EXTERNAL NAME ‘/a/jpeg.class’ LANGUAGE ‘java’; overloading

  34. Cơchế binding củaphươngthức Cơchế? binding • Early binding: quátrình binding đượcthựchiện • khikhiphântíchbiểuthức. • Late binding: quátrình binding thựchiêntronglúc • chaychuongtrinh

  35. Tậpphâncấp, phạm vi kiểuvàtruyvấn CREATE TYPEkieu_RapPhim ROW(maRapinteger, tenRaptext, diaChitext, soDienThoaitext) CREATE TYPE Kieu_RapPhimUNDER Kieu_rapPhimDichVu(menu text) CREATE TABLEDanhSachRap OF kieu_RapPhim CREATE TABLE ds_rapPhimDichVuOF TYPE kieu_rapPhimDichVu Thựchiên query trêncácbộcủabảngDanhSachRapcókiểuKieu_rapPhim???

  36. Tậpphâncấp, phạm vi kiểuvàtruyvấn CREATE TABLE ds_rapPhimDichVu OF TYPE Kieu_RapPhimDichVu UNDER DanhSachRap cáctruyvấntrênbảngDanhSachBangcũngsẽđượctruyvấntrênbảngds_rapPhimDichVu!!!

  37. Tậpphâncấp, phạm vi kiểuvàtruyvấn Tậpphâncấp: dựavàomệnhđề under đểtạoracácphâncấptrongcsdl, khiđócsdlsẽtạo 1 câycácbảngcóquanhệcấpbậcvớinhau. Miềnkiểu: bảngchứacácthamchiếuđếncácđốitượngcùngkiểu (cóthểnằm ở cácbảngkhácnhau) trongcsdl dễthựcthitruyvấntrêntổngthểcácđốitượngcùngloại ở vịtríkhácbảng.

  38. Compare Extend New data ODL, OQL Object-Database Identity Challenge Inheritance Design

  39. Probe

  40. Camera type

  41. Video stream

  42. Location (latitude, longitude) Time

  43. Location (latitude, longitude) Probe Time Video stream

  44. Probe (pid: integer, time: timestamp, latitude: real, longitude: real, camera: string, video: BLOB) Phụthuộchàm • PTLN  CV • P CV

  45. Probes_Loc(pid: integer, time: timestamp, latitude: real, longitude: real) Probes_Video(pid: integer, camera: string:, video: BLOB) • “Với probe 10, hiểnthịđoạn video đượcthutừ 1:10pm đến 1:15pm vàongày 10, 1996” • Thông tin liêntiếpbịphântán qua cácbộ • Thông tin video và location bịphântáchra

  46. Probes_AllInfo(pid: integer, locseq: location_seq, camera: string, video: mpeg_stream) SELECTdisplay (P.video, 1:10pm, May 10 1996, 1:15pm, May 10 1996) FROMProbes_Allinfo P WHERE P.id = 10

  47. Địnhdanh • đốitượng • (Oid) • Khóangoại • (Foreign key)

More Related