http://www.mica.edu.vn/perso/Le-Nội dung môn học• Chương 1: Đại cương về các hệ cơ sở dữ liệu • Chương 2: Các mô hình dữ liệu • Chương 3: Ngôn ngữ định nghĩa và thao tác dữ liệu SQL • Ch
Trang 1GIẢNG VIÊN: TS.LÊ THỊ LAN
Trang 3http://www.mica.edu.vn/perso/Le-Nội dung môn học
• Chương 1: Đại cương về các hệ cơ sở dữ liệu
• Chương 2: Các mô hình dữ liệu
• Chương 3: Ngôn ngữ định nghĩa và thao tác dữ liệu (SQL)
• Chương 4: Phụ thuộc hàm và chuẩn hóa CSDL quan
Trang 4Kế hoạch học tập
• Lý thuyết
• Bài tập trên lớp, bài tập tuần (cá nhân,
nhóm sinh viên) đánh giá giữa kỳ
• Bài tập lớn tham gia vào điểm đánh giá cuối kỳ
• Thi học kỳ
Trang 5Đánh giá giữa kỳ
• Thực hiện theo nhóm Mỗi nhóm (3 sinh
viên theo danh sách) làm 1 bài tập
• Cần:
– Hoàn thành bài tập được giao trong thời gian 1 tuần (nhận thứ năm hàng tuần và trình bày vào thứ năm tuần tiếp theo)
– Phân chia công việc rõ ràng
– Chuẩn bị slides và trình bày về bài tập cho các bạn trong lớp
– Đánh giá điểm cho các thành viên dựa vào công việc của từng thành viên
Trang 6Tài liệu tham khảo
• Nguyễn Kim Anh, Nguyên lý của các hệ cơ
sở dữ liệu, NXB Đại học quốc gia Hà Nội
• SQL Unleashed, Second Edition
by Sakhr Youness Sams, Macmillan
Computer Publishing
• Database Management Systems, Second
Edition, Raghu Ramakrishnan and Johannes Gehrke
• Google…
Trang 7CHƯƠNG 1
ĐẠI CƯƠNG VỀ HỆ
CƠ SỞ DỮ LIỆU
Trang 8Giới thiệu
Dư thừa, không nhất quán, dị thường trong truy nhập đồng thời, …
Trang 9Giới thiệu (tiếp)
Trang 101 Khái niệm
Cơ sở dữ liệu (database)
« Là một bộ sưu tập các dữ liệu tác nghiệp được lưu trữ lại và được các hệ ứng dụng của một xí nghiệp cụ thể nào
đó sử dụng »
Ví dụ: cơ sở dữ liệu sách của thư viện Đại học Bách Khoa Hà Nội, cơ sở dữ liệu hàng hóa của siêu thị
Trang 111 Khái niệm
Hệ quản trị cơ sở dữ liệu (database management system)
"Là một hệ thống phần mềm cho phép tạo lập cơ sở dữ liệu và điều khiển mọi truy nhập đối với CSDL đó."
Ví dụ: M Access, SQL server
Trang 132 Hệ quản trị cơ sở dữ liệu
• Hệ quản trị cơ sở dữ liệu có khả năng:
– Khả năng quản lý dữ liệu tồn tại lâu dài
– Khả năng truy nhập các khối lượng dữ liệu lớn một cách hiệu quả
Trang 142 Hệ quản trị cơ sở dữ liệu
• Các đặc điểm của hệ quản trị cơ sở dữ liệu:
Trang 152 Hệ quản trị cơ sở dữ liệu
• Khái niệm:
– Sơ đồ cơ sở dữ liệu
– Thể hiện của sơ đồ cơ sở dữ liệu
Trang 162 Hệ quản trị cơ sở dữ liệu
Dữ liệu siêu dữ liệu
Bộ quản lý lưu trữ
Bộ xử lý câu
hỏi
Bộ quản lý giao dịch
Các thay đổi truy vấn
Các thay đổi
dữ liệu Các thay đổi
sơ đồ
Trang 172 Hệ quản trị cơ sở dữ liệu
Trang 18Các mức trừu tượng
Trang 19• Các ngôn ngữ cơ sở dữ liệu
– Ngôn ngữ định nghĩa dữ liệu (Data Definition Language-DDL)
– Ngôn ngữ thao tác dữ liệu (Data
Manipulation Language - DML)
»Tìm kiếm thông tin
»Thêm thông tin mới
»Xóa thông tin
»Thay đổi thông tin
2 Hệ quản trị cơ sở dữ liệu
Trang 20• Người dùng
– Người quản trị cơ sở dữ liệu
» Định nghĩa sơ đồ, xác định cấu trúc lưu trữ, ủy quyền, xác định ràng buộc toàn vẹn
– Người sử dụng cơ sở dữ liệu
Trang 21Ví dụ
Trang 223 Phân loại các hệ cơ sở dữ liệu
• Hệ cơ sở dữ liệu tập trung
– Hệ cơ sở dữ liệu cá nhân
– Hệ cơ sở dữ liệu trung tâm
– Hệ cơ sở dữ liệu khách chủ
• Hệ cơ sở dữ liệu phân tán
– Hệ cơ sở dữ liệu phân tán thuần nhất– Hệ cơ sở dữ liệu phân tán không thuần nhất
Trang 23Cơ sở dữ liệu tập trung – Cơ sở dữ liệu trung tâm
Trang 24Cơ sở dữ liệu phân tán
Trang 253 Hệ cơ sở dữ liệu phân tán
– Hệ cơ sở dữ liệu phân tán thuần nhất
»Hệ điều hành như nhau
»Mô hình dữ liệu như nhau
»Hệ quản trị cơ sở dữ liệu chung
»Dữ liệu được định nghĩa và có khuôn dạng chung
– Hệ cơ sở dữ liệu phân tán không thuần nhất
Trang 26So sánh các hệ quản trị CSDL quan hệ
Microsoft SQL
PostgreSQL 1989 PostgreSQL Global
Development Group BSD
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
Trang 27So sánh các hệ quản trị CSDL quan hệ
Microsoft SQL Server 524,258 TB (32,767 files * 16
TB max file size)
Trang 28CHƯƠNG 2
CÁC MÔ HÌNH DỮ
LIỆU
Trang 291 Tổng quan Quy trình phát triển ứng dụng CSDL
Source: Data Modeling Using Entity-Relationship Model, NGUYEN Kim Anh
Trang 30Data modelling – Mô hình hóa dữ liệu
• Mục đích:
– Mô tả dữ liệu sẽ lưu trữ trong cơ sở dữ liệu (ví dụ các thực thể như sinh viên, bài học,…)
– Mô tả mối quan hệ giữa các dữ liệu
– Mô tả các ràng buộc đối với dữ liệu
Trang 31• Mô hình dữ liệu là :
– Một sự hình thức hóa toán học với
một tập ký hiệu để mô tả dữ liệu
– Một tập các phép toán được sử dụng để thao tác các dữ liệu
Trang 322 Mô hình thực thể liên kết (Entity
Relationship Diagrams)
• Thực thể
• Thuộc tính
• Liên kết
Trang 33Thực thể (Entity)
• “Là một đối tượng cụ thể hay trừu tượng
trong thế giới thực mà nó tồn tại và có thể phân biệt với các đối tượng khác”
Trang 34Thuộc tính (Attribute)
• Thuộc tính là một thông tin về thực thể
• Một thuộc tính có một miền giá trị
• Thuộc tính (tập thuộc tính) khóa là thuộc tính (hay tập thuộc tính) mà giá trị của nó được xác định duy nhất cho mỗi thực thể
• Ví dụ:
– Số chứng minh thư nhân dân là thuộc tính
khóa cho nhân viên trong một xí nghiệp
– Username và password là tập thuộc tính khóa cho một tài khoản thư
Trang 35Ví dụ
Nhân viên
Họ tên Mã số Giới tính
Ngày sinh Tuổi
Trang 36Thực thể yếu (Weak entity)
-Là thực thể phụ thuộc vào thực thể khác-Liên kết định danh
+là liên kết giữa thực thể yếu và thực thể định danh nó
Trang 37Thực thể yếu (Weak Entity)
VD:
-Thân nhân là thực thể yếu
-Nhân viên là thực thể định danh của thân nhân
-Phụ thuộc là liên kết định danh
Trang 39Liên kết 1-1
female-customer
customer
male-current marriage
partial functions
A partial function from X to Y is a function ƒ:
X' → Y, where X' is a subset of X
Trang 40Liên kết 0-N và 1-N
partial function
Trang 41Liên kết bắt buộc 0-N và 1-N
total function
Trang 42Liên hết N-M (nhiều-nhiều)
Trang 43Cấu thủ Thi đấu cho Đội bóng
Sân nhà
Liên hết N-M (nhiều-nhiều)
Trang 44Liên kết lặp
flt-schedule
connection
departure time arrivaltime
in out
flt#
Trang 45Liên kết «is-a»
Nhân viên Cầu thủ
Trang 462 Mô hình quan hệ
• Tích đề các (Cartesian Product): Tích đề các
( × ) của n tập là tập tất cả các cách kết hợp của các thành phần trong n tập.
• Miền giá trị (Domain) của một thuộc tính là tập
tất cả các giá trị có thể của một thuộc tính Kí hiệu miền giá trị của thuộc tính A là dom(A)
Trang 47• Sơ đồ quan hệ (Relation Schema) biểu diễn
R(A1, A2, …, An) là một quan hệ R và danh sách các thuộc tính A1, A2, …, An
• Quan hệ (Relation): là một tập con của tích
Đề các trong miền giá trị
Trang 48• Bộ quan hệ ((N)-tuple): là một tập các cặp thuộc
tính-giá trị biểu diễn một thể hiện của quan hệ.
• Bậc quan hệ (Degree) : là số thuộc tính của quan
hệ.
• Lực lượng của quan hệ (Cardinality): là số bộ
của quan hệ.
3 Mô hình quan hệ (tt)
Trang 49• Khóa (Key): là một tập thuộc tính mà các giá trị của nó xác định duy nhất một bộ trong quan hệ
– t1 và t2 là 2 bộ trong quan hệ r trên mô hình quan hệ R
Trang 50Courseno Subject Lecturer Machine
CS250 Programming Lindsey Sun
Trang 51CHƯƠNG 3 NGÔN NGỮ ĐỊNH NGHĨA
VÀ THAO TÁC DỮ LIỆU
Trang 52Thi-Lan Le, MICA HUST
1 Ngôn ngữ định nghĩa dữ liệu
Cho phép định nghĩa:
Sơ đồ đối với mỗi bảng
Kiểu dữ liệu hay miền giá trị
Các ràng buộc toàn vẹn
Tập các chỉ dẫn
Thông tin an toàn và ủy quyền đối với từng bảng
Cấu trúc lưu trữ vật lý
Trang 53Thi-Lan Le, MICA HUST
1 Ngôn ngữ định nghĩa dữ liệu
Trang 54Thi-Lan Le, MICA HUST
1 Ngôn ngữ định nghĩa dữ liệu
Tạo bảng trong CSDL:
CREATE TABLE <tên bảng> (<tên cột> <kiểu dữ liệu>
[NOT NULL], [CONSTRAINT <tên ràng buộc> <kiểu
ràng buộc> …])
Trang 55Thi-Lan Le, MICA HUST
1 Ngôn ngữ định nghĩa dữ liệu
Tạo bảng – Xác định khóa chính
Trang 56Thi-Lan Le, MICA HUST
1 Ngôn ngữ định nghĩa dữ liệu
Thêm - Xóa cột trong bảng
Trang 57Thi-Lan Le, MICA HUST
1 Ngôn ngữ định nghĩa dữ liệu
Xóa bảng :
Trang 58Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
General Structure
SELECT, ALL / DISTINCT, *,
AS, FROM, WHERE
Comparison IN, BETWEEN, LIKE "% _"
Grouping GROUP BY, HAVING,
COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )
Display Order ORDER BY, ASC / DESC
Logical Operators
AND, OR, NOT
Output INTO TABLE / CURSOR
TO FILE [ADDITIVE], TO PRINTER, TO SCREEN
Trang 59Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Thuộc tính
Thuộc tính Kiểu dữ liệu Độ rộng Giải thích
class character 2 Tên lớp
hcode character 1 Mã nhà (R, Y, B, G)
dcode character 3 Mã quận
remission logical 1 Quyền nhập học (T, F)
mtest numeric 2 Điểm thi toán
Trang 60Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
id name dob sex class mtest hcode dcode remission
Trang 61Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
VALUES (value 1, value 2, …, value n)
điểm của từng cách
Trang 62Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
và trả kết quả dưới dạng bảng
Biểu thức expr1, expr2 có thể :
• một cột hoặc
• một biểu thức gồm các hàm và các trường
col1, col2 là tên các cột trong bảng kết quả
DISTINCT: bỏ hết các bộ lặp trong kết quả trong khi từ khóa
ALL thì dữ lại toàn bộ các bộ lặp
condition có thể là :
• Toán tử so sánh >, <, = hoặc
• Toán tử so sánh xâu
• Toán từ logic AND, OR, NOT
SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;
FROM tablename WHERE condition
Trang 63Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Câu truy vấn:
SELECT * FROM student
id name dob sex class mtest hcode dcode remission
Trang 64Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 2: Liệt kê tên , mã nhà và lớp của sinh viên
Kết quả
Trang 65Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 3: Liệt kê mã quận của sinh viên có mã nhà
Kết quả
Trang 66Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Câu truy vấn:
SELECT name FROM student WHERE
class=‘1B’ AND sex=‘F’
Kết quả
Bài tập:
1) Liệt kê tên nữ sinh của lớp 1A và 1B 2) Liệt kê tên nữ sinh của lớp 1 A và nam sinh lớp 1 B
Trang 67Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 5: Liệt kê tên, id của sinh viên không được
miễn phí đăng ký của lớp 1A
Câu truy vấn:
SELECT name, id, class FROM student WHERE
class=‘1A’ AND NOT remission
Trang 68Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
expr IN ( value1, value2, value3)
expr BETWEEN value1 AND value2
expr LIKE "%_"
Trang 69Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 6: Liệt kê các sinh viên sinh vào thứ tư hoặc
thứ bảy
Câu truy vấn:
SELECT name, class, CDOW(dob) AS bdate
FROM student WHERE DOW(dob) IN (4,7)
CDOW (): trả về tên ngày trong tuần của 1 ngày
DOW (): trả về thứ của 1 ngày trong tuần dưới dạng số (Day of
Week)
name class bdate
Peter 1A Wednesday Wendy 1B Wednesday Kevin 1C Saturday Luke 1A Wednesday Aaron 1A Saturday
Kết quả
Trang 70Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 7: Liệt kê các sinh viên không sinh vào
Kết quả
Trang 71Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 8: Liệt kê sinh viên lớp 1A có điểm kiểm tra
toán từ 80 đến 90
Câu truy vấn:
SELECT name, mtest FROM student WHERE
class=‘1A’ AND mtest BETWEEN 80 AND 90
Trang 72Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
groupexpr xác định các dòng liên quan sẽ được nhóm lại
WHERE condition xác định điều kiện cho từng dòng trước khi nhóm
HAVING requirement xác định điều kiện tương đương đến toàn bộ nhóm
SELECT FROM WHERE condition ;
GROUP BY groupexpr [HAVING requirement]
Các hàm của nhóm:
COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )
Trang 73Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 9: Xác định tổng số sinh viên của mỗi lớp
Câu truy vấn:
SELECT class, COUNT(*) as NumberofStudent
FROM student GROUP BY class
Kết quả
Trang 74Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 10: Liệt kê điểm toán trung bình của từng
Trang 75Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Tính điểm trung bình của nữ sinh của tất cả các lớp
Tính điểm trung bình của nữ sinh của từng lớp
Trang 76Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 11: Xác định số sinh viên nữ của từng quận
Câu truy vấn:
SELECT dcode, COUNT(*) FROM student
WHERE sex=‘F’ GROUP BY dcode
Trang 77Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 12: Xác định điểm kiểm tra cao nhất và thấp
nhất của sinh viên ở từng quận
Câu truy vấn:
SELECT MAX(mtest), MIN(mtest), dcode FROM
student GROUP BY dcode
max_mtest min_mtest dcode
Trang 78Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 13: Xác định điểm toán trung bình của nam
sinh viên trong mỗi lớp với điều kiện lớp đó có ít nhất
3 nam sinh viên
Câu truy vấn:
SELECT AVG(mtest), class FROM student
WHERE sex=‘M’ GROUP BY class HAVING
Trang 79Thi-Lan Le, MICA HUST
Đưa ra tên lớp, điểm toán trung bình của nam sinh
viên trong mỗi lớp, số sinh viên nam của lớp với điều kiện lớp đó có ít nhất 3 nam sinh viên
Trang 80Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
ASC: chiều tăng dần
DESC: chiều giảm dần
Mặc định: là ASC
SELECT FROM WHERE
Trang 81Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 14: Liệt kê nam sinh viên của lớp 1 A theo
tên
Câu truy vấn:
SELECT name, id FROM student
WHERE sex=‘M’ AND class=‘1A’ ORDER BY name
Trang 82Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 15: Liệt kê sinh viên lớp 2A theo mã quận
Câu truy vấn:
SELECT name, id, class, dcode FROM student
WHERE class=‘2A’ ORDER BY dcode
name id class dcode
Trang 83Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 16: Liệt kê số lượng sinh viên của mỗi quận
theo chiều giảm dần
Câu truy vấn:
SELECT COUNT(*) AS cnt, dcode FROM student
GROUP BY dcode ORDER BY cnt DESC
Trang 84Thi-Lan Le, MICA HUST
sinh viên nữ có điểm thi lớn hơn điểm trung bình của
các sinh viên nữ
Trang 85Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 17: Liệt kê nam sinh viên trong một nhà theo
trật tự mã quận và tên lớp
Câu truy vấn:
SELECT name, class, hcode FROM student
WHERE sex=‘M’ ORDER BY hcode, class
Trang 86Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
class
Blue House
Green House
Trậ tự
theo
hcode
Trang 87Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Hợp, giao và hiệu của các bảng
Hợp của A và B (A ∪ B)
Một bảng bao gồm tất cả các dòng của A và B.
Trang 88Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Hợp, giao và hiệu của các bảng
Giao của A và B (A ∩ B)
Một bảng bao gồm các dòng vừa tồn tại trong A vừa tồn tại trong B
Trang 89Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Hợp, giao và hiệu của các bảng
Hiệu của A và B
Bảng bao gồm các dòng ở trong A nhưng không ở trong B
Trang 90Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
cùng cấu trúc như sau:
Thuộc tính Kiểu dữ liệu Độ rộng Ý nghĩa
id numeric 4 Mã hiệu sv
sex character 1 Giới tính (M / F)
class character 2 Lớp
id name sex class id name sex class
Trang 91Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 17: Xác định hợp của 2 câu lạc bộ
Trang 92Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 18: In danh sách các sinh viên tham gia cả 2
Trang 93Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Yêu cầu 19: Xác định danh sách các sinh viện tham
gia câu lạc bộ Bridge nhưng không tham gia câu lạc
bộ Chess
Câu truy vấn:
SELECT * FROM bridge WHERE id NOT IN
(SELECT id FROM chess )
SELECT FROM table1 ;
WHERE col NOT IN ( SELECT col FROM table2 )
Trang 94Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Bảng Music lưu trữ thông tin về nhạc cụ của sinh
viên
Thuộc tính Kiểu dữ liệu Độ rộng Ý nghĩa
id numeric 4 mã hiệu sinh viên
type character 10 kiểu nhạc cụ
Trang 95Thi-Lan Le, MICA HUST
2 Ngôn ngữ thao tác dữ liệu
Kết nối tự nhiên (Natural Join) hay (Inner joint): là một thao
tác kết nối 2 bảng bằng các cột chung
Kết nối ngoài (outer join):
LEFT OUTER JOIN (thường viết LEFT JOIN) lựa chọn tất cả các dòng ở trong bảng đầu tiên sau FROM ngay
cả khi nó không có trong bảng thứ hai
RIGHT OUTER JOIN