



















Preview text:
lOMoARcPSD| 45315597 Database Overview 1. Định nghĩa
Một cơ sở dữ liệu là một hệ thống quản lý dữ liệu, trong ó “quản lý” có nghĩa là - Lưu trữ dữ liệu
- Hỗ trợ các thao tác trên dữ liệu
Ví dụ một cơ sở dữ liệu Microsoft Excel Id Name Age City State Salary 1 Adam 38 New York NY 4500 2 Bob 55 Pittsburg PA 3000 3 Charlie 25 New York NY 2800 4 Dorothy 42 San CA 5300 Fransisco 5 Emily 32 Pittsburg PA 2100 6 Frank 37 Los CA 4800 Angeles
Các thao tác ược hỗ trợ:
- Tìm bản ghi của Dorothy
- Tìm mức lương trung bình của Pittsburg
- Với mỗi state (tiểu bang), báo cáo mức lương trung bình Các hạn chế của Excel:
- Có giới hạn thấp về khối lượng dữ liệu
- Cung cấp khả năng phát hiện lỗi yếu
- Truy xuất dữ liệu chậm
- Chỉ hỗ trợ các thao tác tương ối ơn giản - Sự dư thừa dữ liệu
- Không có kiểm soát truy cập a cấp lOMoARcPSD| 45315597
- Không thể chạy như một máy chủ (phản ứng với truy vấn ến bất cứ lúc nào) - …
Một database chuyên nghiệp nên có:
- Có khả năng xử lý các tập dữ liệu khổng lồ (colossal)
- Thực thi các ràng buộc toàn vẹn mạnh mẽ
- Có cơ chế xử lý truy vấn rất hiệu quả
- Hỗ trợ rất nhiều (huge variety) truy vấn
- Giảm thiểu sự dư thừa (redundancy) dữ liệu
- Cung cấp kiểm soát truy cập a cấp chi tiết (fine-grained) - Trở thành
một máy chủ mạnh mẽ thậm chí có thể chạy ồng thời
(simultaneously) các chương trình chạy dài. - …
Relational Model 1: Tables and Keys
Mô hình quan hệ là tiêu chuẩn thực tế ược triển khai trong tất cả các hệ thống cơ sở
dữ liệu chính. Nó ịnh nghĩa:
- Định dạng mà dữ liệu sẽ ược lưu
- Các thao tác ể truy vấn dữ liệu
Chúng ta sẽ tập trung vào khía cạnh (aspect) ầu tiên, ể lại khía cạnh thứ hai cho bài giảng tiếp theo.
Một cơ sở dữ liệu tuân theo mô hình quan hệ ược gọi là một cơ sở dữ liệu quan hệ
1. Table, a.k.a Relation
Trong một cơ sở dữ liệu quan hệ, dữ liệu ược lưu trong tables PROFILE Pid Name Dept Rank Sal P1 Adam CS Asst 6000 P2 Bob EE Asso 8000 P3 Calvin CS Full 10000 P4 Dorothy EE Asst 5000 lOMoARcPSD| 45315597 P5 Emily EE Asso 8500 P6 Frank CS Full 9000
- Mỗi hàng cũng ược gọi là một tuple
- Mỗi cột cũng ược gọi là một attribute
- Lược ồ quan hệ (relation schema) của một bảng là tập hợp các tên thuộc tính của nó
Ví dụ: lược ồ của bảng trên là {pid, name, dept, rank, sal} 2. Candidate key
Định nghĩa: Trong một bảng, một candidate key là một tập tối thiểu 𝐾 thuộc
tính sao cho không có hai bộ giá trị nào ược phép tương ương trên tất cả các thuộc tính trong 𝐾.
Ví dụ: trong bảng PROFILE, nếu chúng ta ặt {pid} là một candidate key, thì
không có hai bộ dữ liệu nào có thể có cùng một pid.
- Một candidate key ược thiết kế khi bảng ược tạo
- Có thể có nhiều khóa ứng viên
Ví dụ: Nếu bạn muốn, bạn có thể chỉ ịnh {name} như khóa ứng viên
khác, nhưng bạn nghĩ nó có hợp lý không? How about {dept, rank}? Discussion CLASS cid Title Dept Year C1 Database CS 2021 C2 Signal processing EE 2022
Bạn sẽ ặt khóa ứng viên như thế nào?
Theo một thông lệ tốt, mọi bảng nên có ít nhất một khóa ứng viên, một quy
ước (convention) sẽ ược thực thi trong phần còn lại của khóa học. Điều này
ngụ ý rằng không có hai bộ dữ liệu nào trong bảng có thể hoàn toàn tương
ương với nhau (hãy nghĩ xem: tại sao?) 3. Super Key lOMoARcPSD| 45315597
Định nghĩa: Trong một bảng, nếu 𝐾 là một khóa ứng viên, bất kỳ super set
chứa 𝐾 ược gọi là super key.
Ví dụ: Trong bảng PROFILE (pid, name, dept, rank, sal), {pid} là một khóa
ứng viên. Do ó, tất cả những tập sau ây là super keys: - {pid} - {pid, name}
- {pid, dept} - {pid, rank, sal} - …
Bổ ề (Lemma): Trong một bảng, không có hai bộ dữ liệu có thể tương ương
trên tất cả các thuộc tính của super key. 4. Foreign Key
Định nghĩa: Cho 𝑇 và 𝑇′ là hai bảng, 𝐾 là một khóa ứng viên trong 𝑇. Nếu 𝑇′
cũng chứa 𝐾, thì 𝐾 là một foreign key của 𝑇′ referencing (tham chiếu) 𝑇. Ví dụ: PROFILE Pid Name Dept Rank Sal P1 Adam CS Asst 6000 P2 Bob EE Asso 8000 P3 Calvin CS Full 10000 P4 Dorothy EE Asst 5000 P5 Emily EE Asso 8500 P6 Frank CS Full 9000 CLASS cid Title Dept Year C1 Database CS 2021 C2 Signal processing EE 2022 C1 Database CS 2022 TEACH lOMoARcPSD| 45315597 Pid cid Year P1 C1 2021 P2 C2 2022 P1 C1 2022
Giả sử rằng PROFILE có một khóa ứng viên {pid}, và CLASS có một khóa
ứng viên {cid, year}. Thì:
- {pid} là một foreign key của TECH referencing PROFILE.
- {cid, year} là một foreign key của TECH referencing CLASS.
Bạn sẽ thiết kế một khóa ứng viên cho TEACH như thế nào?
Relational Model 2: Relational Algebra
Chúng ta sẽ tập trung vào khía cạnh các toán tử ể truy vấn dữ liệu trong bài giảng này.
Relation algebra ( ại số quan hệ) là ngôn ngữ ể ưa ra các truy vấn trên dữ liệu
ược lưu trong cơ sở dữ liệu quan hệ.
Cốt lõi của nó bao gồm 6 toán tử cơ bản: - Rename 𝜌 - Selection 𝜎 - Projection ⨅ - Set union ∪ - Set different – - Cartesian product ×
Rename: Được ký hiệu là 𝜌𝑠(𝑇)
- Trong ó 𝑇 là một bảng, và 𝑠 là một string.
- Đầu ra của toán tử này là một bảng 𝑇′ giống hệt bảng 𝑇, nhưng với tên là 𝑠. Ví dụ: lOMoARcPSD| 45315597
𝜌𝐿𝐸𝐶𝑇(𝑃𝑅𝑂𝐹) returns:
Selection: Được ký hiệu là 𝜎𝑃(𝑇)
- Trong ó 𝑇 là một bảng, và 𝑃 là một iều kiện (predicate) về bộ dữ liệu trong bảng 𝑇.
- Đầu ra là một bảng 𝑇′ sao cho:
o 𝑇′ có cùng lược ồ (schema) với 𝑇. o 𝑇′ bao gồm tất cả và chỉ
các bộ trong bảng 𝑇 thỏa mãn 𝑃.
Mỗi iều kiện có thể là:
- Một sự so sánh sử dụng các toán tử sau: = , ≠, <, ≤,>, ≥.
- Nhiều so sánh ược kết nối bởi: ⋀ (and), ⋁ (or) và ¬ (not) Ví dụ: lOMoARcPSD| 45315597
𝜎𝑛𝑎𝑚𝑒="𝐵𝑜𝑏"(𝑃𝑅𝑂𝐹) returns:
𝜎𝑑𝑒𝑝𝑡="EE" ⋀ 𝑠𝑎𝑙 > 7000(𝑃𝑅𝑂𝐹) returns:
Projection: Được ký hiệu bởi ⨅𝐴(𝑇)
- Trong ó 𝑇 là một bảng, và 𝐴 là một tập các thuộc tính trong 𝑇. - Đầu
ra của toán tử này là một bảng 𝑇′ sao cho:
o 𝑇′ có tất cả và chỉ các thuộc tính trong 𝐴
o 𝑇′ chứa tất cả các bộ dữ liệu của 𝑇 sau khi cắt các thuộc tính không có trong 𝐴.
o Tất cả các bộ trùng lặp ều bị xóa.
Ví dụ: ⨅𝑑𝑒𝑝𝑡(𝑃𝑅𝑂𝐹) returns: lOMoARcPSD| 45315597
Hoặc ⨅𝑑𝑒𝑝𝑡, 𝑟𝑎𝑛𝑘(𝑃𝑅𝑂𝐹) returns:
Union: Được ký hiệu là 𝑇1 ∪ 𝑇2
- Trong ó 𝑇1 và 𝑇2 là các bảng có cùng lược ồ (schema)
- Đầu ra của toán tử này là một bảng 𝑇′ sao cho:
o 𝑇′ có cùng lược ồ với 𝑇1 (và do ó có cùng lược ồ với 𝑇2) o 𝑇′
chứa tất cả các bộ dữ liệu của 𝑇1 và 𝑇2, sau khi loại bỏ các bộ trùng lặp. Ví dụ: 𝜎𝑠𝑎𝑙
≤ 5000(𝑃𝑅𝑂𝐹) ∪ 𝜎𝑠𝑎𝑙 ≥ 10000(𝑃𝑅𝑂𝐹) returns: lOMoARcPSD| 45315597
Set different: Được ký hiệu là 𝑇1 − 𝑇2
- Trong ó 𝑇1 và 𝑇2 là các bảng có cùng lược ồ (schema)
- Đầu ra của toán tử này là một bảng 𝑇′ sao cho o 𝑇′ có cùng lược ồ
với 𝑇1 (và do ó cùng lược ồ với 𝑇2) o 𝑇′ chứa tất cả các bộ dữ liệu
mà xuất hiện trong 𝑇1 nhưng không có trong 𝑇2. Ví dụ:
⨅𝑟𝑎𝑛𝑘(𝜎𝑠𝑎𝑙 ≥ 8000 (𝑃𝑅𝑂𝐹)) − ⨅𝑟𝑎𝑛𝑘(𝜎𝑠𝑎𝑙 ≥ 9000(𝑃𝑅𝑂𝐹)) returns:
Cartesian product: Được ký hiệu là 𝑇1 × 𝑇2
- Trong ó 𝑇1 và 𝑇2 là các bảng.
- Đầu ra của toán tử này là một bảng 𝑇 sao cho o Lược ồ của 𝑇 bao
gồm tất cả các thuộc tính trong 𝑇1 và 𝑇2 (nếu một thuộc tính trong
𝑇1 có cùng tên với một thuộc tính trong 𝑇2, chúng sẽ ược coi là các
thuộc tính khác nhau trong 𝑇)
o Với mọi bộ dữ liệu 𝑡1 ∈ 𝑇1 và 𝑡2 ∈ 𝑇2, 𝑇 chứa một bộ dữ liệu
𝑡 có cùng giá trị với 𝑡1 (𝑡2) trên các thuộc tính từ 𝑇1 (𝑇2). Ví dụ: lOMoARcPSD| 45315597
𝑃𝑅𝑂𝐹 × 𝑇𝐸𝐴𝐶𝐻 returns:
Relational Model 3: Relational Algebra (Part II)
Relational Algebra (Review) lOMoARcPSD| 45315597
Chúng ta ã ược học 6 toán tử cơ bản của ại số quan hệ: - Rename 𝜌 - Selection 𝜎 - Projection ⊓ - Set union ∪ - Set different – - Cartesian product ×
Các toán tử trên có thể biểu diễn tất cả các truy vấn trong ại số quan hệ. Tuy
nhiên, nếu chúng ta chỉ phụ thuộc vào các toán tử ó, một vài truy vấn phổ biến
trong thực tế yêu cầu các biểu thức dài. Để rút gọn các biểu thức ó, người ta ã
xác ịnh 4 toán tử sau, mỗi toán tử trong số ó chỉ có thể ược triển khai bằng 6
toán tử cơ bản, và có thể ược sử dụng ể ơn giản hóa nhiều truy vấn. - Assignment ← - Set intersection ∩ - Natural join ⋈ - Division ÷
Assignment: Được ký hiệu là 𝑇 ← [𝑒𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛]
- Trong ó [𝑒𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛] là một toán tử ại số quan hệ, và 𝑇 là một biến bảng
- Assignment lưu trữ trong 𝑇 kết quả của bảng theo [𝑒𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛].
Các assignment thường ược sử dụng ể tăng tính rõ ràng bằng cách cắt một truy
vấn dài thành nhiều bước, mỗi bước có thể ược mô tả bởi một dòng ngắn. lOMoARcPSD| 45315597
𝑇1 ←⊓𝑟𝑎𝑛𝑘 (𝜎𝑠𝑎𝑙 ≥ 8000(𝑃𝑅𝑂𝐹))
𝑇2 ←⊓𝑟𝑎𝑛𝑘 (𝜎𝑠𝑎𝑙 ≥ 9000(𝑃𝑅𝑂𝐹)) 𝑇1 − 𝑇2 Returns:
Set intersection: Được ký hiệu là 𝑇1 ∩ 𝑇2
- Trong ó 𝑇1 và 𝑇2 là các bảng có cùng lược ồ
- Đầu ra của toán tử này là một bảng 𝑇′ sao cho o 𝑇′ có cùng lược ồ
với 𝑇1 (Và do ó cùng lược ồ với 𝑇2). o 𝑇′ chứa tất cả và chỉ các bộ
dữ liệu mà xuất hiện trong cả 𝑇1 và 𝑇2 lOMoARcPSD| 45315597 𝜎𝑠𝑎𝑙
≥ 8500(𝑃𝑅𝑂𝐹) ∩ 𝜎𝑑𝑒𝑝𝑡 = 𝐶𝑆(𝑃𝑅𝑂𝐹) returns: In general:
𝑇1 ∩ 𝑇2 = 𝑇1 − (𝑇1 − 𝑇2)
Natural join: Được ký hiệu là 𝑇1 ⋈ 𝑇2
- Trong ó 𝑇1 và 𝑇2 là các bảng
- Đầu ra của toán tử này là một bảng 𝑇′ sao cho o Lược ồ của 𝑇′ bao
gồm tất cả các cột riêng biệt (distinct) của 𝑇1 và 𝑇2.
o 𝑇′ chứa tất cả và chỉ các bộ dữ liệu 𝑡 thỏa mãn các iều kiện sau:
𝑡[𝑇1] thuộc về 𝑇1, trong ó 𝑡[𝑇1] là một phần của 𝑡 sau
khi cắt bớt các thuộc tính mà không tồn tại trong 𝑇1; lOMoARcPSD| 45315597
𝑡[𝑇2] thuộc về 𝑇2, trong ó 𝑡[𝑇2] ược ịnh nghĩa tương tự
ối với (respect to) 𝑇2. Ví dụ:
𝑃𝑅𝑂𝐹 ⋈ 𝑇𝐸𝐴𝐶𝐻 returns: In general:
𝑇1 ⋈ 𝑇2 =⊓𝑆 (𝜎𝑇1.𝐴1=𝑇2.𝐴1∧ … ∧ 𝑇1.𝐴𝑑=𝑇2.𝐴𝑑(𝑇1 × 𝑇2))
Trong ó, 𝑆 = (𝑆1 − 𝑆2) ∪ {𝑇1. 𝐴1, … , 𝑇1. 𝐴𝑑} ∪ (𝑆2 − 𝑆1)
Trong ó 𝑆1 và 𝑆2 là các lược ồ của 𝑇1 và 𝑇2 tương ứng, và 𝐴1, … , 𝐴𝑑 là các
thuộc tính chung của 𝑇1 và 𝑇2.
Division: Được ký hiệu là 𝑇1 ÷ 𝑇2
- Trong ó 𝑇1 và 𝑇2 là các bảng sao cho lược ồ của 𝑇2 là một tập hợp con của lược ồ 𝑇1. lOMoARcPSD| 45315597
- Đầu ra của toán tử này là một bảng 𝑇′ sao cho o Lược ồ của 𝑇′ bao
gồm tất cả các cột có trong 𝑇1, nhưng không có trong 𝑇2.
o 𝑇′ chứa tất cả và chỉ các bộ dữ liệu 𝑡 sao cho:
Với mỗi bộ 𝑡2 ∈ 𝑇2, 𝑡1 = (𝑡, 𝑡2) là một bộ trong 𝑇1, trong
ó (𝑡, 𝑡2) biểu thị một bộ nối các thuộc tính của 𝑡 với các thuộc tính của 𝑡2. Ví dụ: 𝑇1 ÷ 𝑇2 returns: In general:
𝑇1 ÷ 𝑇2 =⊓𝑆1−𝑆2 (𝑇1) −⊓𝑆1−𝑆2 (⊓𝑆1−𝑆2 (𝑇1) × 𝑇2 − 𝑇2) Trong
ó 𝑆1 và 𝑆2 là các lược ồ của 𝑇1 và 𝑇2 tương ứng. lOMoARcPSD| 45315597
SQL 1: Basic Statements
Overview: Structured query language (SQL) là một ngôn ngữ người dùng
thân thiện cho các truy vấn ại số quan hệ ặc biệt. Nó ược hỗ trợ bởi tất cả các
hệ thống cơ sở dữ liệu chính. Trong bài giảng này, chúng ta sẽ học làm thế
nào ể viết lại các toán tử ại số trong SQL.
Syntax of an SQL Statement:
Select distinct 𝐴1, 𝐴2, … , 𝐴𝑛
from 𝑇1, … , 𝑇𝑚 where 𝑃.
Trong ó 𝑇1, … , 𝑇𝑚 là các bảng, 𝐴1, 𝐴2, … , 𝐴𝑛 là các thuộc tính và 𝑃 là một iều
kiện. Câu lệnh trả về một bảng và tương ứng với truy vấn ại số quan hệ sau:
⊓𝐴1,…,𝐴𝑛 (𝜎𝑃(𝑇1 × … × 𝑇𝑚))
Selection 𝝈 Select ∗ From 𝑇 Where 𝑃
Tương ứng với: 𝜎𝑃(𝑇) lOMoARcPSD| 45315597 Selection Predicate: Select ∗ From 𝑇 lOMoARcPSD| 45315597 Where 𝑃
Trong 𝑃 bạn có thể chỉ ịnh các toán tử logic và so sánh chuẩn.
- =, <>, <,<=, >, >=
- Kết nối nhiều so sánh với: AND, OR, NOT. Projection ⊓
Select distinct 𝐴1, … , 𝐴𝑛 From 𝑇
Tương ứng với: ⊓𝐴1,…,𝐴𝑛 (𝑇) Note:
Từ khóa riêng biệt (distinct) xóa tất cả các hàng trùng lặp trong ầu ra. lOMoARcPSD| 45315597
Tính năng giữ lại sự trùng lặp này rất hữu ích cho các truy vấn tổng hợp vì
chúng ta sẽ thảo luận sau khóa học này.
Cartesian Product × Select ∗ From 𝑇1, 𝑇2
Tương ứng với 𝑇1 × 𝑇2 Select ∗ From 𝑇1, … , 𝑇𝑚
Tương ứng với 𝑇1 × … × 𝑇𝑚 lOMoARcPSD| 45315597
Putting Multiple Operators Together
Kết hợp nhiều toán tử lại với nhau