GiớiThiệu Tổng Quan

201
Giới Thiệu Tổng Quan Môn: Cơ Sở Dữ Liệu Nâng Cao Trình bày: Lương Trần Hy Hiến Tham khảo và chỉnh sửa từ Slide CSDL NC của thầy Nguyễn Đặng Kim Khánh

Transcript of GiớiThiệu Tổng Quan

Page 1: GiớiThiệu Tổng Quan

Giới Thiệu Tổng QuanMôn: Cơ Sở Dữ Liệu Nâng Cao

Trình bày: Lương Trần Hy Hiến

Tham khảo và chỉnh sửa từ Slide CSDL NC của thầy Nguyễn Đặng Kim Khánh

Page 2: GiớiThiệu Tổng Quan

Ôn lại kiến thức cũ

2

Page 3: GiớiThiệu Tổng Quan

Quá trình phát triển của cơ sở dữ liệu

• Các thế hệ CSDL đã được cải tiến dần nhằm vượt qua những giới hạn của những thế hệ trước đó.

• Có 4 mục tiêu chính giúp thúc đẩy sự phát triển của CSDL:▫ Nhu cầu cần tách biệt 2 thành phần dữ liệu và xử lý trong các

ứng dụng, từ đó giảm chi phí nâng cấp, bảo trì

▫ Nhu cầu muốn quản lý những kiểu dữ liệu, những cấu trúc dữ liệu phức tạp

▫ Nhu cầu cần đơn giản hóa và tối ưu hóa việc truy xuất dữ liệu của người dùng

▫ Nhu cầu cần cung cấp nền tảng tốt hơn cho các ứng dụng hỗ trợ ra quyết định

3

Page 4: GiớiThiệu Tổng Quan

Quá trình phát triển của Cơ Sở Dữ Liệu (tt)

• Flat files database: ra đời vào thập niên 60

• Hierachical DB và Network DB được giới thiệu vào thập niên 70. Tuy nhiên vẫn còn 1 số hạn chế: phức tạp trong truy xuất dữ liệu, khó khăn trong việc chuyển kiểu dữ liệu, 1 số khái niệm về CSDL chưa được hỗ trợ

4

20001970 1980 19901960

Flat files

Hierarchical

Network

Relational

• Relational DB: được phát triển bởi E. F. Codd vào thập niên 70 và được phát triển rộng rãi từ đầu thập niên 80.

Evolution of database technologies [1]

[1] Jeffrey A. Hoffer, R. Venkataraman, H. Topi (2010), Modern Database Management, 10th ED, Pearson Education

Page 5: GiớiThiệu Tổng Quan

Trao đổi & thảo luận

5

Hiện nay, loại CSDL nào thường được dùng?

Những ứng dụng nào cần dùng đến CSDL? Mô tả những ứng dụng mà bạn đã từng tham gia xây dựng.

Page 6: GiớiThiệu Tổng Quan

Những bài toán – vấn đề “mới”

6

Page 7: GiớiThiệu Tổng Quan

Bài toán 1

• Cần lưu trữ thông tin các máy ATM cùng vị trí kinh độ, vĩ độ của nó

7

ATM_ID Bank_ID Longitude Latitude

1 1 106.5760 15.3649

2 1 106.6760 15.2549

3 2 106.5860 15.4549

Bank_ID Bank_Name

1 Asia Comercial Bank

2 Dong A Bank

Đang ở vị trí (106.51;15.15), làm sao để biết

ATM nào gần nhất?

Ở TP.HCM, có khoảng 2000

máy ATM

Ở các thành phố lớn, có khoảng

200.000 máy ATM

Page 8: GiớiThiệu Tổng Quan

Bài toán 2

• Cần quản lý thông tin lương và người quản lý của nhân viên theo thời gian.

8

Empno Salary Manager Start End

52 18K Smith 1990 1995

52 20K Smith 1996 1998

52 25K Smith 1999 2002

52 25K Jones 2003 2005

52 31K Jones 2006 2007

52 31K Smith 2008 2009

52 38K Smith 2010 Now

97 30K Bradford 2002 2006

97 35K Bradford 2007 Now

Cho biết các nhân viên có lương bao nhiêu vào năm

2004?

Cho biết Smith quản lý nhân viên 52 trong bao

nhiêu năm?

Trường hợp muốn chỉnh sửa: vào năm 1997, nhân

viên 52 được tăng lương là 23K thì phải làm sao?

Page 9: GiớiThiệu Tổng Quan

Bài toán 3

• Ta có 1 lượng lớn các tấm hình, làm sao để tìm những tấm hình gần giống với tấm hình người dùng cần tìm.

9

Google Image hiện thực chức năng này

như thế nào?

Page 10: GiớiThiệu Tổng Quan

Phân loại các cơ sở dữ liệu hiện nay

10

Page 11: GiớiThiệu Tổng Quan

Theo phạm vi ứng dụng

Kiểu CSDL Số lượng người dùng

Kiến trúc hệ thống Kích thước dữ liệu

Personal 1 Desktop, laptop, mobile phone

Megabytes

Workgroup 5 – 25 Client / Server Megabytes - Gigabytes

Department 25 – 100 Client / Server Gigabytes

Enterprise > 100 Client / Server (distributed / parallel server)

Gigabytes – Terabytes

Web-enabled > 1000 Web server / Web service Megabytes - Terabytes

11

Bảng tổng hợp các loại CSDL theo phạm vi ứng dụng [1]

[1] Jeffrey A. Hoffer, R. Venkataraman, H. Topi (2010), Modern Database Management, 10th ED, Pearson Education

Page 12: GiớiThiệu Tổng Quan

Theo cấu trúc dữ liệu lưu trữ

Dựa vào cấu trúc dữ liệu lưu trữ trong các hệ CSDL, người ta phân thành các loại

• Cơ Sở Dữ Liệu Quan Hệ (Relational DB)

• Cơ Sở Dữ Liệu XML (XML DB)

• Cơ Sở Dữ Liệu Hướng Đối Tượng (Object Oriented DB)

12

Page 13: GiớiThiệu Tổng Quan

Theo lĩnh vực ứng dụng

Dựa vào các lĩnh vực ứng dụng được áp dụng của từng loại CSDL, người ta phân thành các loại

• Cơ Sở Dữ Liệu Không Gian (Spatial DB)

• Cơ Sở Dữ Liệu Thời Gian (Temporal DB)

• Cơ Sở Dữ Liệu Đa Phương Tiện (Multimedia DB)

• Cơ Sở Dữ Liệu Mobile (Mobile DB)

13

Page 14: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

14

Page 15: GiớiThiệu Tổng Quan

Chương 1Object Oriented Database

Page 16: GiớiThiệu Tổng Quan

Chủ đề1An introduction to OODB

Page 17: GiớiThiệu Tổng Quan

Ôn lại kiến thức cũ

17

Page 18: GiớiThiệu Tổng Quan

Xây dựng mô hình dữ liệu cho bài toán sau

• Một công ty cho thuê xe có nhiều chi nhánh

• Mỗi chi nhánh có thể cung cấp 1 số loại xe.

• Có 3 loại xe mà công ty có thể cho thuê là: ôtô, xe máy, xe tải

• Quy trình thuê xe gồm các bước sau:

▫ Khách hàng đến 1 chi nhánh của công ty

▫ Một nhân viên của chi nhánh này sẽ tiếp nhận khách hàng đó

▫ Nếu thông tin khách hàng chưa có trong hệ thống thì sẽ tiến hành việc nhập thông tin

▫ Khách hàng cho biết muốn thuê xe loại nào

▫ Nhân viên cho xem những chiếc xe hiện có

▫ Khách hàng chọn 1 chiếc xe

▫ Nhân viên kiểm tra bằng lái xe của khách hàng có hợp lệ không.

▫ Chuyển sang quy trình nhận xe

18

Page 19: GiớiThiệu Tổng Quan

Một số vấn đề khó khăn

• Vấn đề 1: Xe máy, xe ôtô, xe tải đều là xe

• Cách giải quyết:

▫ Xây dựng mối quan hệ giữa các bảng Xe và bảng XeMay, Oto, XeTai Để lấy hết thông tin về XeMay ta cần phải thực hiện câu lệnh JOIN

▫ Không cần bảng Xe, xây dựng 3 bảng XeMay, Oto, XeTai độc lập Khó khăn trong việc tổng hợp dữ liệu (ví dụ: khách hàng mượn bao nhiêu chiếc xe)

▫ Gộp 3 bảng XeMay, Oto, XeTai thành 1 bảng Xe duy nhất và thêm thuộc tính KieuXe Có nhiều giá trị NULL lãng phí không gian lưu trữ

19

Page 20: GiớiThiệu Tổng Quan

Một số vấn đề khó khăn (tt)

• Vấn đề 2: Tính tiền thuê xe ôtô

▫ Trong 50km đầu tính giá 200.000đ

▫ Từ 50km tính giá 20.000/km

▫ Nếu mượn xe vào thứ 7 hoặc CN thì tính thêm 10% tổng phí

• Cách giải quyết:

▫ Sử dụng câu lệnh SQL sẽ rất phức tạp

▫ Nên dùng ngôn ngữ lập trình ở lớp xử lý để tính toán và nhờ SQL lưu trữ kết quả (nếu cần)

20

Page 21: GiớiThiệu Tổng Quan

Một số vấn đề khó khăn (tt)

• Vấn đề 3: Chuyển đổi kiểu dữ liệu giữa DB và ngôn ngữ lập trình

▫ Giữa kiểu dữ liệu trong DB và kiểu dữ liệu trong NNLT có khác nhau đôi chút, do đó phải có sự chuyển đổi kiểu dữ liệu qua lại

21

Page 22: GiớiThiệu Tổng Quan

Some weaknesses of Relational DB Model

22

Page 23: GiớiThiệu Tổng Quan

Tầng dữ liệu và tầng xử lý không phù hợp

• Tầng dữ liệu xây dựng theo mô hình quan hệ.

• Tầng xử lý lại lập trình theo hướng đối tượng.

• Phải định nghĩa lại các kiểu đối tượng trong ứng dụng ở cả 2 tầng

• Vấn đề thuộc tính đa trị (multivalue atribute)

• Ngôn ngữ truy vấn độc lập với ngôn ngữ lập trình

23

Page 24: GiớiThiệu Tổng Quan

Thông tin rời rạc trên các table

• Để đạt các dạng chuẩn, ta phải tách ra thành nhiều table và do đó thông tin nằm rải rác ở nhiều table

• Một số truy vấn đòi hỏi phải liên kết với nhiều table dẫn đến độ phức tạp và hiệu năng thực thi

24

Con mèo trong thế giới thực Con mèo được biểu diễn trong mô hình quan hệ

Page 25: GiớiThiệu Tổng Quan

Mối quan hệ kế thừa

• Trong mô hình CSDL quan hệ, hiện tại có 3 phương pháp để mô hình hóa mối quan hệ kế thừa

• Tuy nhiên mỗi phương pháp đều có nhược điểm riêng

25

Cách 2

Cách 1

Cách 3

Page 26: GiớiThiệu Tổng Quan

Một số thuộc tính tính toán

• Một số thuộc tính tính toán có công thức phức tạp thì phải xử lý ở tầng Business rồi mới được lưu xuống tầng Data

26

Page 27: GiớiThiệu Tổng Quan

What is Object Oriented DB Model?

27

Object Oriented Databases are databases that integrate object orientation with database capabilities. • Object orientation allows a more direct

representation and modeling of real world problems

• Database functionality is needed to ensure persistence and concurrent sharing of information in applications

Page 28: GiớiThiệu Tổng Quan

Cơ Sở Dữ Liệu Hướng Đối Tượng

• Dữ liệu được xem là các đối tượng

▫ Có tính xác định

▫ Có thuộc tính và phương thức

▫ Có các mối quan hệ

• Khả năng mở rộng các lớp đối tượng theo dạng cây

▫ Lớp trừu tượng

▫ Đơn và đa thừa kế

▫ Quá tải hàm, đa hình

• Có ngôn ngữ định nghĩa lớp đối tượng

• Có thể liên kết với các ngôn ngữ lập trình hướng đối tượng

28

Page 29: GiớiThiệu Tổng Quan

Các đặc trưng của CSDL hướng đối tượng

29

1. Complex objects2. Object identity3. Encapsulation4. Types and classes5. Type and class hierarchies6. Overriding, overloading7. Computational completeness8. Extensibility9. Persistence10. Efficiency11. Concurrency12. Reliability13. Declarative query language

Object Oriented Systems

Database Management

Systems

Page 30: GiớiThiệu Tổng Quan

Những khái niệm cơ bản

• Object Identiy

▫ Object Identity (OID) là điểm khác biệt giữa RDBMS và OODBMS

▫ Trong RDBMS, các thực thể (entity) phân biệt với nhau bằng khóa chính (primary key – PK) do người dùng tự định nghĩa

▫ Trong OODBMS, các đối tượng (object) phân biệt với nhau bằng Object Identity (OID) do OODBMS tự quyết định

▫ OID là thuộc tính tự thêm vào mỗi đối tượng, không cần người lập trình phải định nghĩa

• Extent

▫ Đây là khái niệm chỉ tập hợp các đối tượng thuộc cùng 1 lớp đối tượng

30

Page 31: GiớiThiệu Tổng Quan

Những lợi ích của OODB

31

Page 32: GiớiThiệu Tổng Quan

Những lợi ích của OODB • OODBs allow users to define abstractions

▫ OODB cho phép người dùng định nghĩa và xây dựng các mối quan hệ kế thừa

▫ OODB có khả năng cho phép người dùng định nghĩa các lớp (kiểu) trừu tượng phù hợp với thế giới thực cần mô tả

• Object Identifier:▫ Mỗi đối tượng có 1 OID duy nhất. Do đó không cần phải quan tâm đến

khóa chính như trong Relational DB• OODBs reduce need for JOIN statement

▫ Trong OODB, chúng ta không cần phải thực hiện lệnh JOIN để liên kết các lớp đối tượng với nhau.

▫ Tự chính các đối tượng đã có mối liên kết trỏ đến nhau.• Performance gain using OODBs

▫ Trong OODB không cần phải thực hiện lệnh JOIN▫ OODB lưu trữ OID (Object Identify) mà không lưu trữ khóa chính. OID

chính là địa chỉ bộ nhớ của đối tượng và do đó không tốn thời gian xác định địa chỉ khi cần truy xuất đến đối tượng

32

Page 33: GiớiThiệu Tổng Quan

Một số ứng dụng của OODB

33

Page 34: GiớiThiệu Tổng Quan

Một số ứng dụng của OODB

• Những lĩnh vực mà OODB được sử dụng rộng rãi như:

▫ CASE (Computer-aided software engineering)

▫ CAD (Computer-aided design)

▫ CAM (Computer-aided manufacturing)

• Ngày càng được sử dụng rộng rãi ở 1 số lĩnh vực như:

▫ Telecommunications

▫ Healthcare

▫ Finance

▫ Multimedia

▫ Text/Document/Quality management

34

Page 35: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

35

Page 36: GiớiThiệu Tổng Quan

Chương 1Object Oriented Database

Page 37: GiớiThiệu Tổng Quan

Chủ đề2Object Definition Language

& Object Query Language

Page 38: GiớiThiệu Tổng Quan

Object Definition Language (ODL)

38

Object Definition Language (viết tắt là ODL): ngôn ngữ môtả đối tượng• Là ngôn ngữ do tổ chức ODMG (Object Data Management

Group) đề xuất• Dùng để xác định mô hình logic cho cơ sở dữ liệu hướng

đối tượng• Dùng để định nghĩa các lớp đối tượng và các mối quan hệ

giữa chúng

Page 39: GiớiThiệu Tổng Quan

Định nghĩa lớp đối tượng

39

Page 40: GiớiThiệu Tổng Quan

Định nghĩa lớp đối tượng

• Từ khóa class: xác định tên lớp đối tượng

• Từ khóa attribute: dùng để xác định thuộc tính đối tượng

• Kết thúc định nghĩa phải có dấu chấm phẩy

40

class Student {attribute string name;attribute Date dateOfBirth;attribute string address;attribute string phone;// plus relationship and operations . . .

};

Page 41: GiớiThiệu Tổng Quan

Định nghĩa lớp đối tượng (tt)

41

class Course {attribute string crse_code;attribute string crse_title;attribute short credit_hrs;// plus relationships and operation . . .

};

Page 42: GiớiThiệu Tổng Quan

Định nghĩa thuộc tính

• Thuộc tính của một đối tượng có thể là tham chiếu hoặc tham trị

▫ Tham trị: giá trị bình thường – literal value (chuỗi kí tự, con số, kí tự, …)

▫ Tham chiếu: giá trị sẽ là OID của 1 đối tượng khác

• Một số kiểu literal trong OO Model:

▫ Atomic literal: hằng số mà ta không thể phân nhỏ ra thành những thành phần nhỏ hơn. Ví dụ: số nguyên, số thực, kí tự, giá trị logic

▫ Collection literal: tập hợp nhiều thành phần. Có 4 kiểu được ODMG hỗ trợ:

Set: tập hợp không có thứ tự, không có thành phần trùng nhau

Bag: tập hợp không có thứ tự, có thể có thành phần trùng nhau

List: tập hợp có thứ tự

Array: dynamically sized ordered collection, located by position

Dictionary: tập hợp các cặp key-value, các key không có trùng lắp

▫ Structure literal: kiểu dữ liệu có cấu trúc như phân số, số phức,…

42

Page 43: GiớiThiệu Tổng Quan

Định nghĩa thuộc tính (tt)

43

struct Address {string street_address;string city;string state;string zip;

};

struct Phone {short area_code;long personal_number;

};

class Student {attribute string name;attribute Date dateOfBirth;attribute Address addresses;attribute set<string> emails;attribute set<Phone> phones;// plus relationship and operations . . .

};

Page 44: GiớiThiệu Tổng Quan

Trường hợp thuộc tính là một đối tượng

• Thuộc tính của một đối tượng có thể là tham chiếu đến một đối tượng khác

• Mặc dù cách khai báo tương tự như thuộc tính bình thường. Nhưng về mặc lưu trữ thì chỉ lưu trữ Object Identifier của đối tượng mà nó tham chiếu

• Sẽ không hỗ trợ các phép tìm kiếm phức tạp. Do đó nên tạo mối quan hệ hơn là tạo 1 thuộc tính liên kết

44

class Course {// the dept attribute’s value is an OIDattribute Department dept;. . .

};class Department {

attribute short dept_number;attribute string dept_name;attribute string office_address;

};

Page 45: GiớiThiệu Tổng Quan

Định nghĩa mối quan hệ kết hợp

45

Page 46: GiớiThiệu Tổng Quan

Định nghĩa mối quan hệ kết hợp

• ODMG chỉ hỗ trợ định nghĩa mối quan hệ 1 ngôi và 2 ngôi.

• Trường hợp mối quan hệ 3 ngôi trở lên thì chuyển về các mối quan hệ 2 ngôi

• Trường hợp mối quan hệ 2 ngôi:

▫ Phải xác định tên mối quan hệ ở cả 2 chiều

▫ Phải định nghĩa mối quan hệ ở cả 2 lớp đối tượng

▫ Nếu là quan hệ 1 – nhiều thì bên lớp 1 phải sử dụng các kiểu Collection (set, bag, list, …) mô tả danh sách các đối tượng của lớp nhiều tham gia

▫ Cú pháp

relationship set<ClssN>/ClssN <RelName> inverse <InvRelName>

▫ Trong đó:

relationship, inverse là từ khóa

RelName: tên mối quan hệ theo chiều thuận

InvRelName: tên mối quan hệ theo chiều ngược lại

ClssN: tên lớp

46

Page 47: GiớiThiệu Tổng Quan

Ví dụ minh họa

47

class Student {(extent students)attribute string name;attribute Date dateOfBirth;attribute Address address;attribute Phone phone;relationship set<CourseOffering> takes inverse CourseOffering::taken_by;

};

Page 48: GiớiThiệu Tổng Quan

Ví dụ minh họa (tt)

48

class CourseOffering {(extent courseofferings)attribute string term;relationship set<Student> taken_by inverse Student::takes;relationship Course belongs_to inverse Course::offers;

};

class Course {(extent courses)attribute string crse_code;attribute string crse_title;attribute short credit_hrs;relationship set<Course> has_prereqs inverse Course::is_prereq_for;relationship set<Course> is_prereq_for inverse Course::has_prereqs;relationship list<CourseOffering> offers inverse CourseOffering::belongs_to;

};

Page 49: GiớiThiệu Tổng Quan

Từ khóa extent?

49

The extent of a class is the set of all instances of the class within the database

For example, the extent called “students” refers to all the Student instances in the database

Page 50: GiớiThiệu Tổng Quan

Định nghĩa mối quan hệ kế thừa

50

Page 51: GiớiThiệu Tổng Quan

Định nghĩa mối quan hệ kết thừa

• Sử dụng từ khóa extends để xác định lớp cha mà nó kết thừa

51

class Employee {(extent employees)attribute short empName;attribute string empNumber;attribute Address address;attribute Date dateHired;void printLabel( );

};class HourlyEmployee

extends Employee {(extent hrly_emps)attribute float hourlyRate;float computeWages( );

};class SalariedEmployee

extends Employee {(extent salaried_emps)attribute float annualSalary;attribute boolean stockOptions;void contributePension( );

};

Page 52: GiớiThiệu Tổng Quan

Định nghĩa lớp trừu tượng

52

abstract class Student {(extent students)attribute long stu_number;attribute string name;attribute Date dateOfBirth;attribute Address address;attribute Phone phone;

};class GraduateStudent extends Student {

(extent grads)attribute char undergrad_major;attribute GRE gre_score;attribute GMAT gmat_score;

};class UndergradStudent extends Student {

(extent undergrads)attribute SAT sat_score;attribute ACT act_score;

};

Page 53: GiớiThiệu Tổng Quan

Object Query Language (OQL)

53

Object Query Language (viết tắt là OQL): ngôn ngữ truy vấnđối tượng• Là ngôn ngữ do tổ chức ODMG (Object Data Management

Group) đề xuất• Có cú pháp tương tự như SQL• Có thể dùng xen kẽ host language và OQL language. Đây là

ưu thế so với cách sử dụng SQL trong ứng dụng dùngRDBMS

Page 54: GiớiThiệu Tổng Quan

Câu truy vấn cơ bản

• OQL cho phép sử dụng cú pháp truy vấn select – from – where tương tự như câu lệnh SQL

• Ví dụ: tìm tên và số tín chỉ (tính theo giờ) của môn có mã là ADB

• Ở đây, courses (được định nghĩa bởi từ khóa extent) và được đặt tên là c trong câu truy vấn này.

• Cách truy xuất thành phần dữ liệu của đối tượng:

▫ Cú pháp: <tên đối tượng>.<tên thành phần dữ liệu>

▫ Dấu chấm nói lên quan hệ sở hữu

▫ Ý nghĩa của cú pháp: truy xuất thành phần dữ liệu nào của đối tượng nào

54

SELECT c.crse_title, c.credit_hrsFROM courses cWHERE c.crse_code = “ADB”

Page 55: GiớiThiệu Tổng Quan

Sử dụng các phép toán trong câu lệnh SELECT

• Tương tự như trong SQL, OQL cho phép sử dụng các phép toán so sánh trong mệnh đề WHERE

• Từ khóa DISTINCT dùng để tìm các phần tử khác biệt

• Ví dụ:

55

select s.agefrom students swhere s.name = “John Marsh”

select sfrom students swhere s.gpa = 3.0

select sfrom students swhere s.gpa = 3.0and not (s.address.city = “Dayton”)

select distinct s.agefrom students swhere s.gpa > 3.0

Page 56: GiớiThiệu Tổng Quan

Câu truy vấn dùng nhiều lớp đối tượng

• Trong truy vấn OQL, có thể dựa vào các mối quan hệ đã được định nghĩa để truy xuất đến những lớp đối tượng khác.

• Ví dụ: tìm mã các môn học mà được mở vào học kì 1 năm 2012

• Ở đây thông qua mối quan hệ belongs_to đã dược định nghĩa trước để truy xuất để lớp CourseOfferring

• Khác với SQL trong RDBMS, trong OQL ta không dùng cú pháp JOIN mà sử dụng mối quan hệ (reference)

• Ta có thể viết như sau:

56

SELECT distinct y.crse_codeFROM courseofferings x, x.belongs_to yWHERE x.sem = “Fall” and x.year = 2012

SELECT distinct y.crse_codeFROM courses y, y.offers xWHERE x.sem = “Fall” and x.year = 2012

Page 57: GiớiThiệu Tổng Quan

Ví dụ minh họa

• Tìm các mã môn học được mở năm 2012 mà có số tín chỉ nhỏ hơn hoặc bằng 30 giờ

• Tìm các tên và mã môn học mà sinh viên “Nguyen Van A” đăng kí học

57

SELECT c.crse_code, c.crse_titleFROM students s, s.takes x, x.belongs_to cWHERE s.name = “Nguyen Van A”

SELECT y.crse_codeFROM courseofferings x, x.belongs_to yWHERE y.year = 2012 and y.credit_hrs <= 30

Page 58: GiớiThiệu Tổng Quan

Path Expression

• Gọi:

▫ a đối tượng thuộc lớp đối tượng C

▫ p là tên thuộc tính (hoặc mối quan hệ, phương thức) của lớp đối tượng C

• Khi đó:

▫ Nếu p là thuộc tính thì a.p là giá trị thuộc tính của đối tượng a

▫ Nếu p là phương thức thì a.p là kết quả khi gọi phương thức p của đối tượng a

▫ Nếu p là mối quan hệ thì a.p là đối tượng hoặc tập các đối tượng có mối quan hệ với a thông qua mối quan hệ p

58

Page 59: GiớiThiệu Tổng Quan

Kết quả trả về là một đối tượng, cấu trúc

• Trong OQL, có thể cho phép tạo ra đối tượng, cấu trúc khi trả về kết quả

• Ví dụ:

59

SELECT distinct struct(name: s.name, gpa: s.gpa)FROM students sWHERE s.name = “Mary Jones”

SELECT distinct Transcript(name: s.name, gpa: s.gpa)FROM students sWHERE s.name = “Mary Jones”

Page 60: GiớiThiệu Tổng Quan

Viết câu truy vấn lồng nhau

• Ví dụ: tìm mã và tên môn học cùng với những course offering nào mà số lượng sinh viên đăng kí ít hơn 20 người

• Tìm tên, địa chỉ và điểm tích lũy của những sinh viên sinh năm từ 1992 trở về sau và có điểm tích lũy lớn hơn 3.0

60

SELECT distinct struct (code: c.crse_code, title: c_crse_title,(select xfrom c.offers xwhere x.enrollment < 20

))

FROM courses c

SELECT x.name, x.address, x.gpaFROM (select s from students s where s.gpa > 3.0) as xWHERE x.birthyear > 1992

Page 61: GiớiThiệu Tổng Quan

Calculating Summary Values

• Tương tự như SQL, ngôn ngữ OQL cũng hỗ trợ các hàm count, sum, max, min, avg.

• Ví dụ 1: tìm tổng số sinh viên trong trường

• Ví dụ 2: tính lương trung bình của các nữ nhân viên trong công ty

61

select count (*) from students s

select avg (e.salary)from employees ewhere e.gender = female

Page 62: GiớiThiệu Tổng Quan

Mệnh đề GROUP BY

• Tương tự như SQL, ngôn ngữ OQL hỗ trợ mệnh đề GROUP BY

• Ví dụ 1: tính lương thấp nhất trong mỗi phòng ban

• Ví dụ 2: nhóm các project dựa vào mức độ ưu tiên của nó

62

SELECT min(e.salary)FROM employees eGROUP BY e.dept

SELECT *FROM projects pGROUP BY

low: priority = low,medium: priority = medium,high: priority = high

Page 63: GiớiThiệu Tổng Quan

Mệnh đề HAVING

• Tương tự như SQL, ngôn ngữ OQL cũng hỗ trợ mệnh đề HAVING

• Ví dụ: nhóm các project dựa vào mức độ ưu tiên của nó nhưng chỉ liệt kê những dự án nào mà có số giờ làm việc hơn 50 tiếng

63

SELECT *FROM projects pGROUP BY

low: priority = low,medium: priority = medium,high: priority = high

HAVING sum(select x.hours from p.has x) > 50

Page 64: GiớiThiệu Tổng Quan

Sử dụng khái niệm tập hợp

• Nếu ta muốn xem một phần tử nào đó có thuộc vào một tập hợp nào đó hay không thì dùng từ khóa

• Ví dụ 1: tìm mã số và tên nhân viên có kĩ năng thiết kế database và mô hình hóa đối tượng

• Ví dụ 2: Tìm những dự án mà không cần kĩ năng lập trình C++

64

SELECT e.emp_id, e.nameFROM employees eWHERE “Database Design” in skills or “OO Modeling” in skills

SELECT *FROM projects pWHERE not (“C ++ Programming” in p.skills_required)

Page 65: GiớiThiệu Tổng Quan

Những phép toán trong tập hợp

• Ngôn ngữ OQL có hỗ trợ các phép toán tập hợp như: UNION (hợp), INTERSECT (giao nhau), EXCEPT (phần khác nhau)

• Để kiểm tra có ít nhất một phần tử có trong tập hợp nào đó thì ta sử dụng từ khóa exists

• Để kiểm tra tất cả các phần tử thỏa mãn điều kiện nào đó ta dùng từ khóa for all

65

Page 66: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

66

Page 67: GiớiThiệu Tổng Quan

Chương 2Spatial Database

Page 68: GiớiThiệu Tổng Quan

Chủ đề1An introduction to Spatial Database

Page 69: GiớiThiệu Tổng Quan

Spatial data vs. Image data

69

http://www.esrl.noaa.gov/research/themes/information/img/GrADS.pnghttp://www.geomatika.com.my/Image/lem17.jpg

Page 70: GiớiThiệu Tổng Quan

Spatial data vs. Image data

• Image data can be raster images or vector images of space

• Spatial data are objects or spaces with location attribute

• Spatial data can be raster images or vector images referenced by location

70

http://www.esrl.noaa.gov/research/themes/information/img/GrADS.pnghttp://www.geomatika.com.my/Image/lem17.jpg

Page 71: GiớiThiệu Tổng Quan

Geographical Information System

71

Page 72: GiớiThiệu Tổng Quan

Hệ thống thông tin địa lý • Geographical Information System (GIS):

hệ thống thông tin địa lý• GIS is:

▫ A container of maps in digital form▫ A computerized tool for solving

geographic problems▫ A spatial decision support system▫ A tool for revealing what is otherwise

invisible in geographic information▫ A tool for automatically performing

operations on geographic data• Definition:

▫ GIS is a computer-based information system that enables capture, modeling, manipulation, retrieval, analysis and presentation of geographically referenced data

72

http://www.gis247.com/assets/arcgis_mxd2

http://www.willowent.com/wp-content/uploads/2011/02/arcgis.jpeg

Page 73: GiớiThiệu Tổng Quan

Các lĩnh vực liên quan

73

Khoa học máy tínhĐồ họa máy tính

Cơ sở dữ liệuQuản trị hệ thốngAn toàn, bảo mật

Lĩnh vực ứng dụngHành chínhQuy hoạch

Địa chấtLâm nghiệp

Khoa học trái đất(Earth Science)Bản đồ, trắc địa

Địa lýThống kê không gian

GIS

Page 74: GiớiThiệu Tổng Quan

Các ứng dụng của hệ thống thông tin địa lý

• Map where things are: mapping where things are lets you find places that have the features you're looking for and to see patterns

• Map quantities/densities: people map quantities/densities to find places that meet their criteria and take action

• Find what’s inside/nearby: use GIS to monitor what's happening inside/nearby and to take specific action

• Map change: map the change in an area to anticipate future conditions, decide on a course of action, or to evaluate the results of an action or policy

74

Page 75: GiớiThiệu Tổng Quan

Các ứng dụng của hệ thống thông tin địa lý

75

Quản lý cây xanh

Quản lý hạ tầng giao thông

Quản lý hạ tầng viễn thông

Page 76: GiớiThiệu Tổng Quan

Các ứng dụng của hệ thống thông tin địa lý

76

Kinh doanh bất động sản

Page 77: GiớiThiệu Tổng Quan

Kiến trúc hệ thống thông tin địa lý

• Gồm 2 thành phần:

▫ Phần cứng: gồm các thiết bị phần cứng đảm bảo hoạt động của hệ thống

Thiết bị nhập: máy quét (scanner), bàn số hóa (digitizer)

Thiết bị xuất: máy in (printer), máy vẽ (plotter)

Thiết bị lưu trữ

Thiết bị xử lý

Các thiết bị kết nối mạng

▫ Phần mềm:

Công cụ nhập và biên tập dữ liệu

Hệ thống quản lý CSDL

Công cụ truy vấn & hiển thị dữ liệu

Công cụ phân tích dữ liệu

Hệ giao tiếp với người dùng

77

Page 78: GiớiThiệu Tổng Quan

Kiến trúc hệ thống

78

Cơ Sở Dữ Liệu

Công cụ GIS

Nhập Truy vấn & Hiển thị Phân tích

Hệ giao tiếp với người dùng

Người sử dụng

Page 79: GiớiThiệu Tổng Quan

What is spatial database management system?

• A spatial DBMS:

▫ is a DBMS with additional capabilities for handling spatial data

▫ offers spatial data types in its data model and query language

Structure in space, e.g., point, line, region

Relationships among them, e.g., intersection

▫ supports spatial data types in its implementation

Providing at least spatial indexing (retrieving objects in particular area without scanning the whole space)

Efficient algorithms for spatial join

79

Page 80: GiớiThiệu Tổng Quan

Các vấn đề cần giải quyết trong Spatial DBMS

• Spatial Data Modeling: mô hình hóa các dữ liệu không gian

▫ Có bao nhiêu loại dữ liệu không gian?

▫ Sử dụng cấu trúc nào để mô tả các loại dữ liệu này?

▫ Mô hình vector

▫ Mô hình raster

▫ Phương pháp chuyển đổi giữa vector và raster

• Mapping of Spatial Data: vẽ bản đồ

▫ Hệ tọa độ địa lý

▫ Phép chiếu bản đồ

▫ Gán nhãn cho các đối tượng

80

Page 81: GiớiThiệu Tổng Quan

Các vấn đề cần giải quyết trong Spatial DBMS

• Spatial Query: truy vấn hướng không gian

▫ Cho biết những nhà trọ cách trường không quá 2km

▫ Cho biết đoạn đường ngắn nhất từ nhà đến trường

▫ Cho biết quận 1 tiếp giáp với những quận nào

▫ Cho biết sông Đồng Nai đi qua những tỉnh thành nào

▫ …

• Spatial Access Method: phương thức truy xuất hướng không gian (lập chỉ mục không gian)

▫ Quadtree

▫ R-tree

▫ K-d tree

▫ Grid tree

▫ …

81

Page 82: GiớiThiệu Tổng Quan

Các vấn đề cần giải quyết trong Spatial DBMS

• Standard for communicate: chuẩn giao tiếp

▫ XML

▫ GML

▫ SVG

▫ KML

▫ …

• Remote sensing

▫ Thematic Classification

▫ Image Processing

82

Page 83: GiớiThiệu Tổng Quan

What do we focus on?

83

Usage of Spatial DBMS

Some basic concepts relating to Spatial DBMS

Input spatial data

Query spatial data

Present spatial data

Page 84: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

84

Page 85: GiớiThiệu Tổng Quan

Chương 2Spatial Database

Page 86: GiớiThiệu Tổng Quan

Chủ đề2Basic Concepts of Spatial Data

Page 87: GiớiThiệu Tổng Quan

Vector data vs. Raster data

87

• Có 2 cách để mô hình hóa dữ liệu không gian là: mô hình hóa vector và mô hình hóa raster

• Dữ liệu vector:• Dùng để mô tả các đối tượng trong không gian được nối với nhau

bởi các điểm và những đường thẳng hoặc đường cong. • Phù hợp với việc mô tả các đối tượng cần lưu trữ cấu trúc của

chúng như: vị trí các khách hàng, các con đường, các thửa đất, dòng hải lưu …

• Dữ liệu raster:• Là ma trận của các điểm ảnh• Có thể dùng để mô tả hầu hết các đối tượng trong không gian• Ví dụ: ảnh vệ tinh, ảnh nhiệt độ, ảnh độ sâu của nước biển• Tuy nhiên nếu phóng to quá mức cho phép thì sẽ có hiện tượng vỡ

điểm ảnh

Page 88: GiớiThiệu Tổng Quan

Những kiểu dữ liệu cơ bản

88

Điểm (Point)

Đường (LineString)

Đa giác (Polygon)

Page 89: GiớiThiệu Tổng Quan

Điểm (Point)

• Is used to define a singular position in space

• Is zero-dimensional object

• Is used to present an exact location

89

Các điểm thể hiện vị trí của các thành phố ở nước Úc

Page 90: GiớiThiệu Tổng Quan

Đường (LineString)

• Đường được tạo thành bởi tập các điểm từ 2 trở lên, sau đó ta sẽ dùng đường thẳng để nối điểm này đến điểm kia theo thứ tự tập các điểm đó

• Đường là đối tượng không gian 1 chiều

• Có 1 số tính chất cơ bản:

▫ Simple: các đường thẳng nối bởi các điểm không chéo nhau

▫ Closed: điểm bắt đầu trùng với điểm kết thúc

▫ Simple&Closed thì gọi là Ring

90

Tính từ trái sang phải ta có: • Simple LineString• Simple & Closed LineString (Ring)• NonSimple LineString• NonSimple & Closed LineString

Page 91: GiớiThiệu Tổng Quan

Đa giác (Polygon)

• Polygon là hình được bao bọc bởi các Ring

• Polygon khác với Ring ở chỗ:

▫ Ring chỉ là đường biên

▫ Polygon gồm đường biên và phần bên trong

• Polygon có thể có nhiều Ring

▫ 1 Ring bên ngoài

▫ Có thể có các Ring bên trong

• Polygon là đối tượng 2 chiều

91

Các hình đa giác thể hiện các bang ở nước Mỹ

Page 92: GiớiThiệu Tổng Quan

Choosing the right geometry

92

There is no “correct” type of geometry to use to represent any given object on the earth

It depends on how you plan to use the data

Sometime we must combine geometry in a geometry collection

Page 93: GiớiThiệu Tổng Quan

Positioning a Geometry

93

Page 94: GiớiThiệu Tổng Quan

Coordinate System

94

• Hệ tọa độ (Coordinate System) gồm có 1 bộ n số dùng để xác định vị trí của 1 điểm trong không gian n chiều

• Gồm có 2 loại:• Hệ tọa độ địa lý (Geographic Coordinate System)• Hệ tọa độ chiếu (Projected Coordinate System)

Page 95: GiớiThiệu Tổng Quan

Hệ tọa độ địa lý (Geographic Coordinate System)

• Trong hệ tọa độ địa lý, các điểm được xác định bằng 2 giá trị:

▫ Vĩ độ: góc hợp bởi mặt phẳng xích đạo và đường nối tâm với điểm đang xét

▫ Kinh độ: góc đặt trên mặt phẳng xích đạo hợp bởi đường nối tâm đến kinh độ đang xét và đường nối tâm đến kinh độ chuẩn

• Do định nghĩa trên nên vĩ độ và kinh độ thường được đo bằng các đơn vị đo góc (thông thường là độ, phút, giây)

95

Page 96: GiớiThiệu Tổng Quan

What is the shape of the earth?

96

The shape of the earth is geoid shape

Page 97: GiớiThiệu Tổng Quan

Reference Ellipsoid (hình Ellipsoid tham chiếu)

• Để mô tả gần đúng hành tinh, người ta dùng 1 mô hình ellipsoid để tham chiếu (gọi là hình ellipsoid tham chiếu – reference ellipsoid)

• Reference Ellipsoid của Trái Đất đơn giản là hình cầu bị dẹt ở 2 cực (oblate spheroid)

97

Ellipsoid (chiếu ở 3 hướng đều cho ra hình Ellipse)

Oblate Spheroid(chiếu từ trên xuống sẽ cho đường tròn)

Page 98: GiớiThiệu Tổng Quan

Reference Ellipsoid (tt)

• Ta có 2 tham số:

▫ Nửa độ dài trục chính (semimajor axis) kí hiệu là a

▫ Nửa độ dài trục phụ (semiminor axis) kí hiệu là b

• Công thức hệ số nén

𝑓 =𝑎 − 𝑏

𝑎• Do f rất nhỏ nên người ta

thường ghi thông số 1/f

1/𝑓 =𝑎

𝑎 − 𝑏

98

Page 99: GiớiThiệu Tổng Quan

What is the best reference ellipsoid?

99

Page 100: GiớiThiệu Tổng Quan

Reference Ellipsoid (tt)

• Một số reference ellipsoid phù hợp (chính xác) với vùng đất này nhưng lại không phù hợp (kém chính xác) với vùng đất kia

• Reference Ellipsoid có hệ số chính xác thấp so với toàn Trái Đất nhưng sẽ không bằng với Reference Ellipsoid khác tại 1 số vùng và ngược lại

100

Page 101: GiớiThiệu Tổng Quan

Một số reference ellipsoid

101

Page 102: GiớiThiệu Tổng Quan

Reference Frame & Prime Meridian

• Reference Frame là tập hợp các điểm dùng làm những điểm neo giữ giữa Reference Ellipsoid và Trái Đất

• Prime Meridian (kinh tuyến gốc) có thể tùy chọn. Thông thường là chọn kinh tuyến gốc ở Greenwich, London

102

Page 103: GiớiThiệu Tổng Quan

Ring Orientation

• Trái Đất có dạng hình cầu. Do đó nếu ta vẽ đa giác (1 đường khép kín) sẽ cắt mặt cầu thành 2 phần. Vậy đa giác mà ta sẽ là phần nào?

• Để xác định phần nào, các hệ thống thường có quy ước về hướng vẽ đa giác.

• Ví dụ: nếu ta quy ước đa giác là vùng bên trái theo hướng đi thứ tự của các cạnh trong đa giác đó thì đa giác (như hình vẽ) sẽ là phần bắc bán cầu.

103

Page 104: GiớiThiệu Tổng Quan

Ring Orientation (tt)

104

Dựa vào quy ước về hướng, ta có thể định nghĩa những dạng đa giác đặc biệt như thế này

Page 105: GiớiThiệu Tổng Quan

Hệ tọa độ chiếu (Projected Coordinate System)

• Khác với hệ tọa độ địa lý, hệ tọa độ chiếu mô tả vị trí 1 điểm trên không gian phẳng 2 chiều

• Hệ tọa độ chiếu xem Trái Đất là một bàn đồ phẳng

• Khi đó mọi tính chất trên hình học phẳng đều có thể áp dụng trên hệ tọa độ này

105

Notice that the Earth is not a flat, 2-dimensional plane

Page 106: GiớiThiệu Tổng Quan

Các loại phép chiếu bản đồ

• Có thể chia thành 4 nhóm:

▫ Phép chiếu bảo toàn góc (conformal projection): góc và hình dáng (ở mức độ cục bộ) được bảo toàn

▫ Phép chiếu bảo toàn diện tích (equal area hoặc equivalent): cố gắng bảo toàn diện tích và do đó góc tạo bởi kinh tuyến và vĩ tuyến có thể không chính xác

▫ Phép chiếu bảo toàn khoảng cách (equidistant): cố gắng duy trì độ chính xác khoảng cách giữa các điểm. Có 2 loại: bảo toàn khoảng cách theo phương kinh tuyến, bảo toàn khoảng cách theo phương vĩ tuyến

▫ Phép chiếu bảo toàn hướng (azimutal hoặc true direction): đảm bảo các góc phương vị

106

Page 107: GiớiThiệu Tổng Quan

Phép chiếu bảo toàn góc (conformal projection)

107

Phép chiếu Mercator

Page 108: GiớiThiệu Tổng Quan

Phép chiếu bảo toàn diện tích (equal area hoặc equivalent)

108

Phép chiếu Gall–Peters

Page 109: GiớiThiệu Tổng Quan

Phép chiếu bảo toàn khoảng cách (equidistant)

109

Phép chiếu Equirectangular

Page 110: GiớiThiệu Tổng Quan

Phép chiếu bảo toàn hướng (azimutal hoặc true direction)

110

Phép chiếu Craig

Page 111: GiớiThiệu Tổng Quan

Ring Orientation

• Khác với hệ tọa độ địa lý, hệ tọa độ chiếu không cần nhất thiết phải quy định hướng đi của đa giác

111

Page 112: GiớiThiệu Tổng Quan

Spatial Reference System

• Spatial Reference System (hệ tham chiếu không gian) là hệ thống giúp chúng ta có thể xác định vị trí trên bề mặt hành tinh (cụ thể là Trái Đất)

• Gồm có các thành phần sau đây:

▫ Coordinate System (hệ tọa độ): tọa độ địa lý hay tọa độ chiếu

▫ Datum (mô hình hành tinh): reference ellipsoid & reference frame

▫ Prime Meridian (kinh tuyến gốc)

▫ Projection (nếu có): áp dụng phép chiếu nào

▫ Unit of measurement (đơn vị đo lường): gồm đơn vị và hệ số quy đổi

112

Page 113: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

113

Page 114: GiớiThiệu Tổng Quan

Chương 2Spatial Database

Page 115: GiớiThiệu Tổng Quan

Chủ đề3Query Spatial Data

Page 116: GiớiThiệu Tổng Quan

Cú pháp truy vấn

116

Page 117: GiớiThiệu Tổng Quan

Query Spatial Data

• Tương tự như câu lệnh SQL

• Có thêm 1 số hàm hỗ trợ các phép tính toán trên không gian

117

Page 118: GiớiThiệu Tổng Quan

Get attribute of spatial data

118

Page 119: GiớiThiệu Tổng Quan

Get attribute of spatial data

• Các đối tượng spatial data có thể cung cấp 1 số thông tin. Để lấy những thông tin này, ta sử dụng toán tử “.” theo sau là thuộc tính hoặc phương thức

Instance.Property

Instance.Method()

• Một số thuộc tính / phương thức cơ bản như:

▫ Cho biết tên kiểu dữ liệu của đối tượng không gian

▫ Cho biết số chiều của đối tượng không gian

▫ Kiểm tra xem đối tượng không gian có thuộc kiểu dữ liệu A hay không

▫ Kiểm tra xem 1 LineString có phải là Ring hay không

▫ Kiểm tra xem đối tượng không gian là rỗng (không chứ bất kì điểm, đường, đa giác nào)

▫ Trả về vị trí tung độ, hoành độ của điểm trong hệ tọa độ chiếu

▫ Trả về vị trí kinh độ, vĩ độ của điểm trong hệ tọa độ địa lý

119

Page 120: GiớiThiệu Tổng Quan

Kiểm tra đối tượng không gian là simple

• Điểm:

▫ Nếu là 1 điểm thì simple

▫ Nếu là 2 điểm trở lên thì simple khi không có 2 điểm trùng nhau

• Đường: là simple nếu chúng không cắt nhau

• Đa giác và tập các Đa Giác: đều là simple

120

Page 121: GiớiThiệu Tổng Quan

Kiểm tra đối tượng không gian là closed

• Tất cả các điểm là unclosed

• Đường là closed nếu điểm đầu và điểm cuối là trùng nhau

• Đa giác đều là closed

• Tập hợp các đối tượng nếu có đối tượng unclosed thì tập hợp là unclosed

121

Page 122: GiớiThiệu Tổng Quan

Đếm số điểm trong đối tượng không gian

• Là số điểm cần để xác định cho đối tượng không gian đó

122

Page 123: GiớiThiệu Tổng Quan

Xác định trọng tâm (centroid) của đa giác

• Trọng tâm (centroid) là vị trí sao cho các điểm khác trong đa giác đều có trọng lực bằng nhau (vị trí làm đa giác cân bằng)

• Chỉ áp dụng cho dữ liệu phẳng (geometry)

123

Page 124: GiớiThiệu Tổng Quan

Xác định tâm cho đối tượng không gian

• Các đối tượng trong không gian địa lý có cách xác định tâm khác.

• Tâm là điểm giao nhau giữa mặt Trái Đất với đường vector tổng hợp của các vector vẽ từ tâm Trái Đất đến các điểm của đối tượng tương ứng

124

Page 125: GiớiThiệu Tổng Quan

Xác định độ dài của đối tượng không gian

• Độ dài 1 điểm là 0

• Độ dài đường là tổng độ dài các đường con

• Độ dài đa giác là tổng độ dài các Ring

125

Page 126: GiớiThiệu Tổng Quan

Tính diện tích của đối tượng không gian

126

Page 127: GiớiThiệu Tổng Quan

Xác định đường biên & đếm số vòng bên trong

127

Page 128: GiớiThiệu Tổng Quan

Modify spatial data

128

Page 129: GiớiThiệu Tổng Quan

Phép hợp các đối tượng không gian

129

Page 130: GiớiThiệu Tổng Quan

Phép giao các đối tượng không gian

130

Page 131: GiớiThiệu Tổng Quan

Phép lấy phần khác giữa các đối tượng không gian

131

Page 132: GiớiThiệu Tổng Quan

Phép toán trừ các đối tượng không gian

132

Page 133: GiớiThiệu Tổng Quan

Đơn giản hóa các đường, đa giác

• Việc đơn giản hóa giúp việc lưu bản đồ ở các lớp cơ bản sẽ thuận tiện hơn.

• Việc đơn giản hóa còn giúp việc loại bỏ nhiễu trong quá trình thu thập bản đồ

133

Page 134: GiớiThiệu Tổng Quan

Đơn giản hóa các đường, đa giác (tt)

134

Xử lý nhiễu trong quá trình inputXử lý vẽ nhanh ở chế độ phóng to

Page 135: GiớiThiệu Tổng Quan

Tạo vùng đệm bao quanh đối tượng không gian

135

Page 136: GiớiThiệu Tổng Quan

Tạo đa giác lồi bao quanh đối tượng không gian

136

Page 137: GiớiThiệu Tổng Quan

Testing spatial relationship

137

Page 138: GiớiThiệu Tổng Quan

Tính khoảng cách giữa 2 đối tượng

• Trả về khoảng cách ngắn nhất giữa 2 điểm trong 2 đối tượng tương ứng

138

Page 139: GiớiThiệu Tổng Quan

Tìm đối tượng gần nhất?

139

Page 140: GiớiThiệu Tổng Quan

Kiểm tra 2 đối tượng có giao nhau (intersect)

• 2 đối tượng được gọi là giao nhau nếu chúng có chung ít nhất 1 điểm

140

Page 141: GiớiThiệu Tổng Quan

Kiểm tra 2 đối tượng có rời nhau (disjoint)

141

Page 142: GiớiThiệu Tổng Quan

Kiểm tra 2 đối tượng có chéo nhau (cross)

• Nếu A là đa giác thì B gọi là chéo qua A nếu B có phần chung với phần bên ngoài và phần bên trong A

• Nếu A và B đều là đường thì phải có phần giao là cái đối tượng 0-dimension

• Không có khái niệm 2 đa giác chéo nhau

142

Page 143: GiớiThiệu Tổng Quan

Kiểm tra 2 đối tượng có chạm nhau (touch)

• Hai đối tượng được gọi là chạm nhau (touch) nếu chúng có phần giao với đường biên nhưng không có phần giao ở phần bên trong

143

Page 144: GiớiThiệu Tổng Quan

Kiểm tra 2 đối tượng có phủ lấp nhau (overlap)

• Hai đối tượng gọi là phủ lấp nhau nếu:

▫ Cả 2 cùng kiểu

▫ Phần bên trong của cả 2 có phần chung (nhưng không phải là toàn bộ)

▫ Phần giao có số chiều bằng với số chiều của hai đối tượng này

144

Page 145: GiớiThiệu Tổng Quan

Kiểm tra đối tượng có chứa nhau (contain)

• Đối tượng A chứa trong đối tượng B nếu:

▫ Phần bên trong của A và B phải có phần giao nhau

▫ Không có điểm nào của A nằm ở phần ngoài của B

▫ Có thể chấp nhận những điểm của A nằm trên đường biên của B

145

Page 146: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

146

Page 147: GiớiThiệu Tổng Quan

Tham khảo thêm

• https://www.simple-talk.com/sql/t-sql-programming/introduction-to-sql-server-spatial-data/(last access 28/07/2016)

• http://www.gisdoctor.com/site/2011/11/15/spatial-sql-geographer-part-1-spatial-sql/ (last access 28/07/2016)

• Dữ liệu Việt Nam: http://biogeo.ucdavis.edu/data/gadm2.8/shp/VNM_adm_shp.zip

147

Page 148: GiớiThiệu Tổng Quan

Chương 3Temporal Database

Page 149: GiớiThiệu Tổng Quan

Chủ đề1An introduction to Temporal Database

Page 150: GiớiThiệu Tổng Quan

Traditional databases capture a single (usually the most recent) state of the modeled reality

150

There are however many time-varying applications that deal with historical (past) data, as well as current, or even data about the future

The term “temporal database” refers in general to a database that supports some time domain and is thus able to manage time varying data [Ozsoyoglou and Snodgrass, 1995]

Page 151: GiớiThiệu Tổng Quan

Những lĩnh vực ứng dụng của CSDL hướng thời gian

• CSDL hướng thời gian có rất nhiều ứng dụng trong các lĩnh vực như:

▫ Record – keeping application (ví dụ: quản lý bệnh án, quản lý tồn kho)

▫ Financial application (ví dụ: ngân hàng, chứng khoán)

▫ Scheduling application (ví dụ: quản lý, đặt chỗ chuyến bay, tàu hỏa, nhà hàng)

▫ Scientific application (ví dụ: thời tiết, vật lý học, thiên văn học)

151

Page 152: GiớiThiệu Tổng Quan

Những giới hạn và yêu cầu của Temporal DB

• Giới hạn hiện nay:

▫ Những hệ CSDL hiện nay đều chỉ hỗ trợ ở mức snapshot (lưu trữ dữ liệu hiện thời)

▫ Việc xây dựng các ứng dụng hướng thời gian đa phần đều phải dựa vào phần business của ứng dụng

• Những yêu cầu mới cho CSDL có hỗ trợ hướng thời gian

▫ Hỗ trợ đầy đủ các kiểu hướng thời gian

▫ Hỗ trợ các khái niệm trong hướng thời gian

▫ Hỗ trợ các câu truy vấn có liên quan đến thời gian

152

Page 153: GiớiThiệu Tổng Quan

Quá trình phát triển CSDL hướng thời gian

• Các các giai đoạn chính:

▫ 1956 – 1985: Concept development

▫ 1978 – 1994: Design of query languages

1978 – 1990: Relational temporal query languages

1990 – 1994: Object – Oriented temporal query languages

▫ 1988 – hiện nay: Implementation aspects

▫ 1993 – hiện nay: Consolidation phase

• Những hướng phát triển hiện nay:

▫ Spatio – temporal & moving object database (mobile phone tracking để quản lý nhân viên, taxi, thiết bị)

▫ Data Stream

▫ Data Warehousing

153

Page 154: GiớiThiệu Tổng Quan

Một số khái niệm cơ bản

154

Page 155: GiớiThiệu Tổng Quan

Các loại mô hình hướng thời gian

• Structure of time

▫ Linear time: thời gian theo 1 trục từ quá khứ đến tương lai

▫ Branching time:

Là một cấu trúc dạng cây

Từ quá khứ đến hiện tại là 1 trục duy nhất

Tại thời điểm hiện tại sẽ phân ra thành nhiều nhánh

Mỗi nhánh là một giả thiết về tương lai

• Boundness of time:

▫ Có các dạng: dữ liệu quá khứ, quá khứ + hiện tại, quá khứ + hiện tại + tương lai, …

• Relative vs. Absolute time:

▫ Có dạng tương đối (trước 9h, sau 8h, …)

▫ Có dạng tuyệt đối (12h01 14/11/2012)

155

Page 156: GiớiThiệu Tổng Quan

Các loại mô hình hướng thời gian (tt)

• Density of time:

▫ Discrete time:

Thời gian được chia thành những khoảng thời gian nhỏ gọi là chronon

Chronon là đơn vị nhỏ nhất của thời gian và không thể chia nhỏ hơn

▫ Dense time:

Giữa 2 thời điểm có thể chia nhỏ ra được nữa.

▫ Continuous time:

Giữa 2 thời điểm có thể chia nhỏ ra được

Giữa 2 thời điểm liên tục không có khe hở

156

Page 157: GiớiThiệu Tổng Quan

Các loại mô hình hướng thời gian (tt)

• Mô hình discrete linear time thường được sử dụng rộng rãi

▫ Thời gian thường được ghi nhận bằng các đơn vị thời gian (chronon)

▫ Chúng ta thường làm tròn số để dễ quản lý

▫ Việc hiện thực mô hình này tương đối dễ dàng

▫ Những vấn đề bài toán thời gian liên tục sẽ được rời rạc hóa trước khi xử lý

157

Page 158: GiớiThiệu Tổng Quan

Granularity (độ mịn của thời gian)

• Granularity cho biết mức độ nhỏ của chronon

• Ví dụ:

▫ Hệ thống quản lý ngày sinh của nhân viên thì chỉ cần độ mịn là 1 ngày

▫ Hệ thống quản lý các cuộc hẹn thì cần độ mìn là 1 giờ

▫ Hệ thống quản lý các chuyến bay thì cần độ mịn là 5 phút

• Vấn đề chuyển đổi giữa các độ mịn

▫ Việc chuyển đổi từ độ mịn thô sang độ mịn tinh

▫ Việc chuyển đổi từ độ mịn tinh sang độ mịn thô

158

Page 159: GiớiThiệu Tổng Quan

Các chiều của thời gian

159

Time is multi-dimensional

Page 160: GiớiThiệu Tổng Quan

Các chiều của thời gian

• Thời gian có thể có nhiều chiều:

▫ Valid time

▫ Transaction time

▫ Publication time

▫ Efficacy time

▫ …

160

Page 161: GiớiThiệu Tổng Quan

Valid time

• Valid time: The time a fact was/is/will be true in the modeled reality/mini-world

• Ví dụ:

▫ Nguyễn Văn A được tuyển dụng vào ngày 10/11/2012

▫ Giá ổ đĩa cứng SSD là 50USD tại thời điểm 1/1/2013

161

Page 162: GiớiThiệu Tổng Quan

Transaction Time

• Transaction time: The time when a fact is current/present in the database as stored data

• Ví dụ:

▫ Nguyễn Văn A được tuyển dụng vào ngày 10/11/2012 và được cập nhật vào hệ thống vào ngày 11/11/2012

▫ Giá ổ đĩa cứng SSD là 50USD tại thời điểm 1/1/2013 và được ghi nhận vào hệ thống vào ngày 14/11/2012

• Transaction time thường có 1 khoảng thời gian từ lúc insert đến lúc delete

• Thường được dùng trong những hệ thống có yêu cầu chức năng kiểm kê, truy vết. Ví dụ như: tài chính, ngân hàng, …

• Một số CSDL hiện nay có hỗ trợ transaction time

162

Page 163: GiớiThiệu Tổng Quan

Valid time or Transaction time

• Mô hình dữ liệu có thể có 0, 1, 2 hoặc nhiều chiều hướng thời gian

▫ Snapshot data model: không hỗ trợ hướng thời gian (0 chiều hướng thời gian)

▫ Valid time data model: chỉ hỗ trợ chiều valid time

▫ Transaction time data model: chỉ hỗ trợ chiều transaction time

▫ Bitemporal data model: hỗ trợ 2 chiều valid time & transaction time

163

Page 164: GiớiThiệu Tổng Quan

Transaction Time DB

• A basic property of transaction time is that it always increases

• Tất cả các thao tác đều được ghi nhận

• Việc xóa chỉ là xóa ở mức logic (trên database dữ liệu không được xóa)

164

Page 165: GiớiThiệu Tổng Quan

Valid Time DB

• Chỉ lưu trữ khoảng thời gian valid.

• Do đó chấp nhận thao tác xóa dữ liệu vĩnh viễn

165

Page 166: GiớiThiệu Tổng Quan

Bitemporal DB

• Việc thay đổi dữ liệu sẽ được chiều transaction time ghi nhận

• Thời gian hiệu lực của dữ liệu sẽ được chiều valid time ghi nhận

166

Page 167: GiớiThiệu Tổng Quan

Timestamp

• Timestamp: A time value that is associated with an attribute value or a tuple in a database

• Ví dụ:

▫ Nguyễn Văn A được tuyển dụng vào ngày 10/11/2012 và được cập nhật vào hệ thống vào ngày 11/11/2012: timestamp là 10/11/2012, 11/11/2012

▫ Giá ổ đĩa cứng SSD là 50USD tại thời điểm 1/1/2013 và được ghi nhận vào hệ thống vào ngày 14/11/2012: timestamp là 1/1/2013, 14/11/2012

• Có 3 kiểu time stamp:

▫ Time point

▫ Time interval

▫ Temporal elements

• Có 3 cách dùng timestamp

▫ Tuple timestamping

▫ Attribute timestamping

167

Page 168: GiớiThiệu Tổng Quan

Case study

• Ví dụ: Một cửa hàng cho mượn đĩa phim cần lưu trữ khách hàng ID, mã đĩa phim. Thông tin lưu trữ vào tháng 10 năm 2012 như sau:

▫ Ngày 3, khách hàng C101 mượn đĩa T1234 trong 3 ngày

▫ Ngày 5, khách hàng C102 mượn đĩa T1245 trong 3 ngày

▫ Ngày 9 đến ngày 12, khách hàng C102 mượn đĩa T1234

▫ Ngày 19 đến ngày 20 và ngày 21 đến ngày 22, khách hàng C101 mượn đĩa T1245

• Ta quan tâm đến valid time

• Ta có biểu đồ như sau:

168

Page 169: GiớiThiệu Tổng Quan

Point – Based Data Model

• Point-based data model: each tuple is timestamped with a time point/instant

• Đây là mô hình cơ bản nhất

• Phải dùng nhiều bộ (tuple) nếu thời gian valid quá dài

• Khó áp dụng một số truy vấn phức tạp

169

Page 170: GiớiThiệu Tổng Quan

Interval – Based Data Model

• Interval-based data model: each tuple is timestamped with a time interval (time period)

• Phải dùng nhiều bộ (tuple) khi dữ liệu bị phân tán (sự kiện lặp đi lặp lại nhiều lần trong những khoảng thời gian rời rạc nhau)

• Những vấn đề về hợp & tách các bộ dữ liệu khi timestamp thay đổi

170

Page 171: GiớiThiệu Tổng Quan

Data Models with Temporal Elements

• Data models with temporal elements: each tuple is timestamped with a temporal element, i.e., a finite union of intervals

• The full history of a fact is stored in one tuple

171

Page 172: GiớiThiệu Tổng Quan

Attribute Value Timestamping

• Attribute value timestamping: each attribute value is timestamped with a set of time points/intervals

• Non-first-normal-form data model

• Different groupings of the information into tuples are possible for attribute-value timestamping

172

Page 173: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

173

Page 174: GiớiThiệu Tổng Quan

Chương 3Temporal Database

Page 175: GiớiThiệu Tổng Quan

Chủ đề2Working with time interval

Page 176: GiớiThiệu Tổng Quan

Xét mô hình discrete-linear-valid time-interval

176

Page 177: GiớiThiệu Tổng Quan

Synchronism and Temporal Dependence

177

Page 178: GiớiThiệu Tổng Quan

Synchronous attributes

• A set of time-varying attributes (TAVs) in a given relation is called synchronous if every TVA can be uniformly associated with and be directly applied to the timestamp values in each tuple of the relation

• Example:

▫ Thuộc tính Salary và Position có mối quan hệ phụ thuộc với nhau. Salary thay đổi khi và chỉ khi Position thay đổi

178

Empno Salary Position TS TE

33 20K Typist 12 24

33 25K Secretary 25 35

45 27K Jr Engr 28 37

45 30K Sr Engr 38 42

Page 179: GiớiThiệu Tổng Quan

Xét ví dụ sau đây

• Mối quan hệ giữa Salary & Manager không có mối quan hệ phụ thuộc với nhau. Chúng thay đổi bất đồng bộ với nhau.

179

Empno Salary Manager TS TE

52 18K Smith 5 9

52 20K Smith 10 20

52 25K Smith 21 29

52 25K Jones 30 38

52 31K Jones 39 42

52 31K Smith 43 47

52 38K Smith 48 Now

97 30K Bradford 12 17

97 35K Bradford 18 Now

Page 180: GiớiThiệu Tổng Quan

Temporal dependence

• Gọi R là mối quan hệ thời gian, trong đó K là khóa chính của R.

• Gọi Xi với I từ 1..n là những thuộc tính có thay đổi theo thời gian.

• TS, TE là thuộc tính timestamp interval

• Hai thuộc tính Xi và Xj (i != j) được gọi là phụ thuộc thời gian nếu tồn tại 2 bộ t1 và t2 trong R thỏa mãn 3 điều kiện

▫ t1(K) = t2(K)

▫ t1(Xi) = t2(Xi) XOR t1(Xj) = t2(Xj)

▫ Thời khoảng [t1(TS),t1(TE)] và [t2(TS), t2(TE)] liền kề với nhau.

180

Page 181: GiớiThiệu Tổng Quan

Ví dụ minh họa

• Trong 2 thuộc tính Salary & Manger, ta thấy có 2 cặp bộ thỏa mãn điều kiện

▫ <52, 18K, Smith, 5, 9> và <52, 20K, Smith, 10, 20>

▫ <52, 25K, Smith, 21, 29> và <52, 25K, Jones, 30, 38>

181

Empno Salary Manager TS TE

52 18K Smith 5 9

52 20K Smith 10 20

52 25K Smith 21 29

52 25K Jones 30 38

52 31K Jones 39 42

52 31K Smith 43 47

52 38K Smith 48 Now

97 30K Bradford 12 17

97 35K Bradford 18 Now

Page 182: GiớiThiệu Tổng Quan

Chuẩn hóa thời gian

182

Page 183: GiớiThiệu Tổng Quan

Dạng chuẩn hóa thời gian

• Một mối quan hệ được gọi là đạt dạng chuẩn thời gian (time normal form –TNF) nếu:

▫ Mối quan hệ đạt dạng chuẩn BCNF

▫ Không tồn tại các thuộc tính phụ thuộc thời gian

• Nếu tồn tại các thuộc tính phụ thuộc thời gian, ta có thể tách ra thành những quan hệ dạng chuẩn thời gian khác nhau

183

Empno Mgr TS TE

52 Smith 5 29

52 Jones 30 42

52 Smith 43 Now

97 Bradford 12 Now

Empno

Salr TS TE

52 18K 5 9

52 20K 10 20

52 25K 21 38

52 31K 39 47

52 38K 48 Now

97 30K 12 17

97 35K 18 Now

Page 184: GiớiThiệu Tổng Quan

Tại sao phải chuẩn hóa thời gian

• Việc thay đổi bất đồng bộ khiến phải dùng nhiều bộ dữ liệu để mô tả

• Mỗi một bộ dữ liệu không nói lên toàn bộ khoảng thời gian mà thuộc tính đó hiệu lực. Ví dụ:

▫ Bộ <52, 20K, Smith, 10,20> không nói lên Smith quản lý nhân viên 52 trong khoảng thời gian từ 10 đến 20

▫ Cho biết Smith bắt đầu quản lý nhân viên 52 vào những thời điểm nào

Nếu không chuẩn hóa thời gian thì sẽ ra kết quả như hình 1

Nếu đã chuấn hóa thời gian thì sẽ ra kết quả như hình 2

184

Empno Manager Ts-------------------------------------------52 Smith 552 Smith 1052 Smith 2152 Smith 4352 Smith 48

Empno Manager Ts-------------------------------------------52 Smith 552 Smith 43

Hình 1

Hình 2

Page 185: GiớiThiệu Tổng Quan

Fold operation

185

Page 186: GiớiThiệu Tổng Quan

Fold operation

• Phép toán fold dùng để gộp các dòng dữ liệu có các khoảng thời gian phủ lấp với nhau thành 1 dòng dữ liệu

• Mục đích

▫ Dễ thực hiện các câu truy vấn sau này

▫ Ít tốn kém không gian lưu trữ

• Ví dụ:

186

Name Dosage Duration

John Wadaine [4,6]

John Wadaine [1,2]

Paul Wadaine [1,9]

John Wadaine [6,Now]

Paul Wadaine [7,12]

Name Dosage Duration

John Wadaine [1,2]

John Wadaine [4,Now]

Paul Wadaine [1,12]

Page 187: GiớiThiệu Tổng Quan

Một số phép toán so sánh

187

Page 188: GiớiThiệu Tổng Quan

Một số phép toán so sánh

• [a,b] BEFORE [c,d] nếu b < c

• [a,b] AFTER [c,d] nếu a > d

• [a,b] DURING [c,d] nếu (a >= c) & (b <= d)

• [a,b] EQUIVALENT [c,d] nếu ( a = c ) & (b = d )

• [a,b] ADJACENT [c,d] nếu (c – b =1) | (a – d = 1)

• [a,b] OVELAP [c,d] nếu ( a <= d) & (c <= b)

• [a,b] FOLLOWS [c,d] nếu (a – d = 1)

• [a,b] PRECEDES [c,d] nếu (c – b = 1)

188

Page 189: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

189

Page 190: GiớiThiệu Tổng Quan

Chương 4Time Series Data

Page 191: GiớiThiệu Tổng Quan

Dữ liệu chuỗi thời gian

• Khái niệm dữ liệu chuỗi thời gian xuất hiện rất nhiều trong các lĩnh vực khác nhau

• Nó dùng để mô tả các loại dữ liệu có chú ý đến sự thay đổi theo thời gian

Slide 191

• Dữ liệu chuỗi thời gian 𝑇 = 𝑡1, 𝑡2, … , 𝑡𝑛 là tập hợp có thứ tự các quan sát đơn biến hoặc đa biến được đo sau những khoảng thời gian bằng nhau. Trong đề tài này, chỉ xem xét với 𝑡𝑖 là các giá trị thực

Page 192: GiớiThiệu Tổng Quan

Các hướng nghiên cứu về chuỗi thời gian

• Tìm kiếm tương đồng: Similarity Search

• Phân lớp: Classification

• Gom cụm: Clustering

• Tìm motif: motif discovery

• Phát hiện bất thường: novelty / anomaly detection

• Trực quan hóa: time series visualization

192

Page 193: GiớiThiệu Tổng Quan

Độ đo khoảng cách

193

Page 194: GiớiThiệu Tổng Quan

Euclidean Distance Metric

194

194

Given two time seriesQ = q1…qn

and C = c1…cn

their Euclidean distance is

defined as:

n

iii cqCQD

1

2,

Q

C

D(Q,C)

Page 195: GiớiThiệu Tổng Quan

Weighted Distance Measures

195

Intuition: For some queries different parts of the sequence are more important.

n

iiii cqwWCQD

1

2,,

Page 196: GiớiThiệu Tổng Quan

Dynamic Time Warping

• Việc so trùng hai đường biểu diễn dữ liệu bằng cách tính khoảng cách từng cặp điểm theo kiểu ánh xạ 1-1 (điểm thứ i trong chuỗi dữ liệu thứ nhất so với điểm thứ i trong chuỗi dữ liệu thứ hai) là không phù hợp trong trường hợp hai chuỗi này không hoàn toàn giống nhau nhưng chúng sẽ giống nhau nếu ta kéo giãn hoặc co lại một số khoảng trên trục thời gian

• Để giải quyết vấn đề này, Bernt và Clifford (1994) đã đề xuất độ đo xoắn thời gian động (Dynamic Time Warping – DTW)

196

Fixed Time AxisSequences are aligned “one to one”.

“Warped” Time AxisNonlinear alignments are possible.

Page 197: GiớiThiệu Tổng Quan

Phương pháp thu giảm số chiều

197

Page 198: GiớiThiệu Tổng Quan

Dimensionality reduction

• Time series databases are often extremely large. Searching directly on these data will be very complex and inefficient.

• To overcome this problem, we should use some of transformation methods to reduce the magnitude of time series.

• These transformation methods are called dimensionality reductiontechniques

Piecewise Aggregate

Approximation

DiscreteFourier Transform

Discrete Haar Wavelet

Transform

Page 199: GiớiThiệu Tổng Quan

Discretization

• Discretization of a time series is tranforming it into a symbolic string.

• The main benefit of this discretization is that there is an enormous wealth of existing algorithms and data structures that allow the efficient manipulations of symbolic representations.

• Lin and Keogh et al. (2003) proposed a method called Symbolic Aggregate Approximation (SAX), which allows the descretization of original time series into symbolic strings.

• Megalooikonomou et al. (2005) proposed another method called Multiresolution Vector Quantization (MVQ) Approximation.

199

Page 200: GiớiThiệu Tổng Quan

Reference

• [1]. Anh, Dương Tuấn. (2008). Research Directions in Time series Data Mining. Lecture Notes

• [2]. Keogh, E., Chakrabarti, K., Pazzani, M. & Mehrotra, S. (2000). Dimensionality reduction for fast similarity search in large time series databases. Journal of Knowledge and Information Systems, pp 263-286

200

Page 201: GiớiThiệu Tổng Quan

Trao đổi và thảo luận

201