giớithiệu tổng quan · 2018. 9. 7. · oodb cho phép người dùng định nghĩa và xây...
TRANSCRIPT
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
Ôn lại kiến thức cũ
2
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
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
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.
Những bài toán – vấn đề “mới”
6
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
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?
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?
Phân loại các cơ sở dữ liệu hiện nay
10
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
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
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
Trao đổi và thảo luận
14
Chương 1Object Oriented Database
Chủ đề1An introduction to OODB
Ôn lại kiến thức cũ
17
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
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
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
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
Some weaknesses of Relational DB Model
22
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
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ệ
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
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
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
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
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
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
Những lợi ích của OODB
31
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
Một số ứng dụng của OODB
33
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
Trao đổi và thảo luận
35
Chương 1Object Oriented Database
Chủ đề2Object Definition Language
& Object Query Language
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
Định nghĩa lớp đối tượng
39
Đị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 . . .
};
Đị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 . . .
};
Đị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
Đị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 . . .
};
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;
};
Định nghĩa mối quan hệ kết hợp
45
Đị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
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;
};
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;
};
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
Định nghĩa mối quan hệ kế thừa
50
Đị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( );
};
Đị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;
};
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
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”
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
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
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
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
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”
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
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
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
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
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)
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
Trao đổi và thảo luận
66
Chương 2Spatial Database
Chủ đề1An introduction to Spatial Database
Spatial data vs. Image data
69
http://www.esrl.noaa.gov/research/themes/information/img/GrADS.pnghttp://www.geomatika.com.my/Image/lem17.jpg
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
Geographical Information System
71
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
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
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
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
Các ứng dụng của hệ thống thông tin địa lý
76
Kinh doanh bất động sản
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
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
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
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
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
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
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
Trao đổi và thảo luận
84
Chương 2Spatial Database
Chủ đề2Basic Concepts of Spatial Data
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
Những kiểu dữ liệu cơ bản
88
Điểm (Point)
Đường (LineString)
Đa giác (Polygon)
Đ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
Đườ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
Đ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ỹ
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
Positioning a Geometry
93
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)
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
What is the shape of the earth?
96
The shape of the earth is geoid shape
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)
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
What is the best reference ellipsoid?
99
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
Một số reference ellipsoid
101
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
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
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
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
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
Phép chiếu bảo toàn góc (conformal projection)
107
Phép chiếu Mercator
Phép chiếu bảo toàn diện tích (equal area hoặc equivalent)
108
Phép chiếu Gall–Peters
Phép chiếu bảo toàn khoảng cách (equidistant)
109
Phép chiếu Equirectangular
Phép chiếu bảo toàn hướng (azimutal hoặc true direction)
110
Phép chiếu Craig
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
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
Trao đổi và thảo luận
113
Chương 2Spatial Database
Chủ đề3Query Spatial Data
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
116
Get attribute of spatial data
117
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ý
118
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
119
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
120
Đế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 đó
121
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)
122
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
123
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
124
Tính diện tích của đối tượng không gian
125
Xác định đường biên & đếm số vòng bên trong
126
Modify spatial data
127
Phép hợp các đối tượng không gian
128
Phép giao các đối tượng không gian
129
Phép lấy phần khác giữa các đối tượng không gian
130
Phép toán trừ các đối tượng không gian
131
Đơ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 đồ
132
Đơn giản hóa các đường, đa giác (tt)
133
Xử lý nhiễu trong quá trình inputXử lý vẽ nhanh ở chế độ phóng to
Tạo vùng đệm bao quanh đối tượng không gian
134
Tạo đa giác lồi bao quanh đối tượng không gian
135
Testing spatial relationship
136
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
137
Tìm đối tượng gần nhất?
138
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
139
Kiểm tra 2 đối tượng có rời nhau (disjoint)
140
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
141
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
142
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
143
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
144
Trao đổi và thảo luận
145
Chương 3Temporal Database
Chủ đề1An introduction to Temporal Database
Traditional databases capture a single (usually the most recent) state of the modeled reality
148
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]
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)
149
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
150
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
151
Một số khái niệm cơ bản
152
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)
153
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ở
154
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ý
155
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ô
156
Các chiều của thời gian
157
Time is multi-dimensional
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
▫ …
158
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
159
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
160
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
161
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)
162
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
163
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
164
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
165
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:
166
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
167
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
168
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
169
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
170
Trao đổi và thảo luận
171
Chương 3Temporal Database
Chủ đề2Working with time interval
Xét mô hình discrete-linear-valid time-interval
174
Synchronism and Temporal Dependence
175
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
176
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
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.
177
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
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.
178
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>
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
Chuẩn hóa thời gian
180
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
181
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
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
182
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
Fold operation
183
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ụ:
184
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]
Một số phép toán so sánh
185
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)
186
Trao đổi và thảo luận
187
Chương 4Time Series Data
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 189
• 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
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
190
Độ đo khoảng cách
191
Euclidean Distance Metric
192
192
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)
Weighted Distance Measures
193
Intuition: For some queries different parts of the sequence are more important.
n
iiii cqwWCQD
1
2,,
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)
194
Fixed Time AxisSequences are aligned “one to one”.
“Warped” Time AxisNonlinear alignments are possible.
Phương pháp thu giảm số chiều
195
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
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.
197
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
198
Trao đổi và thảo luận
199