Mục tiêu Biểu diễn một câu hỏi truy vấn trên CSDL quan hệ dưới dạng Biểu thức ngôn ngữ đại số quan hệ Biểu thức ngôn ngữ tân từ biến bộ hoặc biến miền Câu lệnh truy vấn trong
Trang 2Mục tiêu
Biểu diễn một câu hỏi (truy vấn) trên CSDL quan hệ dưới dạng
Biểu thức ngôn ngữ đại số quan hệ
Biểu thức ngôn ngữ tân từ biến bộ hoặc biến miền
Câu lệnh truy vấn trong ngôn ngữ SQL
Nhận biết được sự tương đương giữa hai ngôn ngữ hình thức đại số quan hệ và ngôn ngữ tân từ
Hai ngôn ngữ hình thức là cơ sở của ngôn ngữ SQL
Dept of IS - FIT - HNUE
Trang 3Ngôn ngữ đại số quan hệ
Dept of IS - FIT - HNUE
Trang 4 Quan hệ: phép toán quan hệ như phép chọn, phép chiếu, phép kết nối, phép chia Dept of IS - FIT - HNUE
Trang 10Phép tích đề các
Định nghĩa phép tích đề các
r1 x r2 = {t= (a1, a2, , an, b1, b2, …, bm) | (a1, a2, , an) r1 và (b1, b2, …, bm) r2 }
Dept of IS - FIT - HNUE
Trang 11Ví dụ phép tích đề các
Ho Trần
Trang 12Phép chia
r1r2 = {t | t= (am+1, am+2, , an):
(a1, a2, , am) r2, (a1, a2, , am, am+1, am+2, , an) r1}
Dept of IS - FIT - HNUE
Trang 13Cho biết những mã sinh viên đã có điểm tất cả các học phần?
Dept of IS - FIT - HNUE
Trang 15Ví dụ phép chia
r2
MaMonHoc HP1 HP2 HP3
MaSV SP1
Trang 17X(r)
X={Ho, Ten}
Dept of IS - FIT - HNUE
Trang 18Phép chọn
F(r) = {t | t r và F(t) đúng}
F: biểu thức logic xác định trên
miền giá trị của các thuộc tính
Trang 19Các giá trị của A và B có thể so sánh được với nhau
A B: biểu thức lôgic xây dựng trên phép so sánh được gọi là toán tử kết nối Dept of IS - FIT - HNUE
Trang 21 Kí hiệu: r1*r2 hoặc r1 r2
Dept of IS - FIT - HNUE
Trang 24Phép kết nối ngoài trái
Trang 25Phép kết nối ngoài phải
2000 null
r1>ABr2 = {(t,q) r1ABr2 hoặc ((null, … , null, q) t r1, t[A] q[B] sai)}
Dept of IS - FIT - HNUE
Trang 26Phép đổi tên quan hệ
Trang 27Sử dụng các biểu thức đại số quan hệ biểu diễn câu hỏi
Ví dụ minh họa
Dept of IS - FIT - HNUE
Trang 28Cơ sở dữ liệu quan hệ mẫu
Trang 29Ví dụ 1
TEN_DA( (MA_DA=”D4” )(DU_AN))
(MA_DA=”D4” )(DU_AN)
Cho biết tên của dự án có mã là D4?
Dept of IS - FIT - HNUE
Trang 31Ví dụ 2
(TEN-PHONG=”Nghiên cứu và phát triển ) (NHAN_VIEN * PHONG)
HOTEN, LUONG ((TEN-PHONG=‘Nghiên cứu và phát triển’ ) (NHAN_VIEN * PHONG))
Dept of IS - FIT - HNUE
Trang 32Ví dụ 2
Cách 2:
HOTEN, LUONG (NHAN_VIEN*
(MA-DV ((TEN-PHONG=”Nghiên cứu và phát triển ) (PHONG))))
Dept of IS - FIT - HNUE
Trang 33Ví dụ 2
(TEN-PHONG=”Nghiên cứu và phát triển ) (PHONG)
HOTEN, LUONG (NHAN_VIEN * (TEN-PHONG=”Nghiên cứu và phát triển ) (PHONG))
NHAN_VIEN * (MA_DV ((TEN-PHONG=”Nghiên cứu và phát triển (PHONG)))
MA_DV ( (TEN-PHONG=”Nghiên cứu và phát triển (PHONG))
Dept of IS - FIT - HNUE
Trang 34Ví dụ 3
Với mỗi dự án thực hiện ở “TT khí tượng thủy văn HN”, hãy cho biết mã số dự án đồng thời cho biết họ tên, ngày sinh của trưởng phòng quản lý dự án này?
Dept of IS - FIT - HNUE
Trang 35Ví dụ 3
Cách 1
KQTG MA-DA, MA-DV( DIA-DIEM-DA=„TT Khí tượng thủy văn HN‟ (DU_AN))
KETQUA MA-DA, HO-TEN, NG-SINH(NHAN_VIEN⋈MA-NV=MA-TP (PHONG*KQTG))
Cách 2
KQTG NHAN_VIEN⋈MA-NV=MA-TP (DU_AN * PHONG)
KETQUA MA-DA, HO-TEN, NG-SINH( DIA-DIEM-DA=„TT Khí tượng thủy văn HN‟ (KQTG))
Dept of IS - FIT - HNUE
Trang 36Ví dụ 3
KQTG MA-DA, MA-DV( (DIA-DIEM-DA=”TT Khí tượng thủy văn HN’ )(DU_AN)
PHONG*(KQTG)
MA-DA, HO-TEN, NG-SINH(NHAN_VIEN⋈MA-NV=MA-TP (PHONG*KQTG))
Dept of IS - FIT - HNUE
Trang 37Phép gộp nhóm
Dept of IS - FIT - HNUE
Trang 38 Là những thuộc tính thuộc quan hệ r
Những bộ có cùng giá trị trên các thuộc tính này sẽ được gộp vào cùng một nhóm
Dept of IS - FIT - HNUE
Trang 39Định nghĩa
[<các thuộc tính cơ sở để gộp nhóm>]F<danh sách hàm kết tập>(r)
Các hàm kết tập
<hàm>(<thuộc tính>)
SUM, AVERAGE, MAX, MIN, COUNT
Thuộc tính thuộc quan hệ r
Dept of IS - FIT - HNUE
Trang 41Ví dụ 1
FAVERAGE(LUONG)(NHAN_VIEN)
Cho biết trung bình lương của công ty X?
Dept of IS - FIT - HNUE
Trang 42Ví dụ 2
MA_DVFAVERAGE(LUONG)(NHAN_VIEN)
Cho biết trung bình lương của từng phòng?
Dept of IS - FIT - HNUE
Trang 43Ví dụ 3
MA_DV, GIOI_TINHFAVERAGE(LUONG)(NHAN_VIEN)
Cho biết trung bình lương của các nhân viên nam và trung bình lương của các nhân viên nữ trong từng phòng?
Dept of IS - FIT - HNUE
Trang 44Ngôn ngữ tân từ
Dept of IS - FIT - HNUE
Trang 45Giới thiệu
Là ngôn ngữ có tính phi thủ tục
tâm chúng thực hiện như thế nào
Là ngôn ngữ có ảnh hưởng lớn đến các ngôn ngữ thương mại nhự SQL (Structure Query Language), QBE (Query By Example)
Hai loại ngôn ngữ tân từ
Ngôn ngữ tân từ biến miền Dept of IS - FIT - HNUE
Trang 46Ngôn ngữ tân từ biến bộ
Dept of IS - FIT - HNUE
Trang 47Phép tính biến bộ đơn giản
Trang 50Các công thức nguyên tố của ĐK()
r(x): miền giá trị của biến bộ x là tập tất cả các
Trang 51Các luật tạo nên ĐK()
Mỗi công thức nguyên tố là một công thức
Nếu F1, F2 là công thức thì (F1 AND F2), (F1
OR F2), NOT(F1), NOT(F2) cũng là công thức
Nếu F là công thức thì ( x)(F) cũng là công thức
Nếu F là công thức thì ( x)(F) cũng là công thức
Dept of IS - FIT - HNUE
Trang 52Ví dụ 1
Cho biết tên của dự án có mã là D4?
{x.TEN_DA DU_AN(x) AND x.MA_DA=„D4‟}
Dept of IS - FIT - HNUE
Trang 53Ví dụ 2
Cho biết họ tên và lương của các nhân viên làm việc ở phòng „Nghiên cứu và phát triển‟?
{x.HO_TEN, x.LUONG y (NHAN_VIEN(x) AND PHONG(y)
AND x.MA_DV = y.MA_DV
AND y.TEN_PHONG = „Nghiên cứu và phát triển‟ ) }
Dept of IS - FIT - HNUE
Trang 54{x.MA_DA, z.HO_TEN y(DU_AN(x) AND PHONG(y) AND NHAN_VIEN(z)
AND x.MA_DV = y.MA_DV AND y.MA_TP = z.MANV
AND x.DIA_DIEM_DA = „TT Khí tượng thủy văn HN‟)}
Dept of IS - FIT - HNUE
Trang 55Ngôn ngữ tân từ biến miền
Dept of IS - FIT - HNUE
Trang 56Ngôn ngữ tân từ biến miền
Dựa trên lý thuyết logic tân từ cấp 1
Sử dụng biến miền, nhận giá trị là một phần
tử của một miền thuộc tính trong quan hệ, trong công thức phép tính biến miền
Phải sử dụng n biến miền trong công thức phép tính miền để tạo ra quan hệ kết quả có
n thành phần
Dept of IS - FIT - HNUE
Trang 57Biểu thức tổng quát phép tính miền
{(X1,X2, ,Xn ) | ĐK(X1,X2, ,Xn,Xn+1,…Xn+m)}
X i là biến miền, có miền giá trị là tập giá trị của
một thuộc tính trong một quan hệ
ĐK(X1,X2, ,Xn, Xn+1,…Xn+m) là công thức
phép tính miền
Dept of IS - FIT - HNUE
Trang 58Ví dụ 1
{tenX ma_daX diadiemX ma_dvX
(DU_AN(ma_daX, tenX, diadiemX, ma_dvX) AND ma_daX=„D4‟)}
{tenX diadiemX ma_dvX
(DU_AN(„D4‟,tenX, diadiemX, ma_dvX))}
Dept of IS - FIT - HNUE
Trang 59Ví dụ 2
Cho biết họ tên và lương của các nhân viên làm việc ở phòng “Nghiên cứu và phát triển”?
{ho_tenX, luongX ma_nvX ngay_sinhX gioi_tinhX ma_dvX ma_tpX
(PHONG ( ma_dvX , “Nghiên cứu và phát triển” , ma_tpX)
AND NHAN_VIEN( ma_nvX , ho_tenX, ngay_sinhX, gioi_tinhX,
ma_dvX , luongX))}
Dept of IS - FIT - HNUE
Trang 60{ma_daX, ho_tenX ten_daX ma_dvX ten_phongX ma_tpX
ngay_sinhX gioi_tinhX luongX
(DU_AN (ma_daX, ten_daX, “TT khí tượng thủy văn HN”, ma_dvX )
AND PHONG ( ma_dvX , ten_phongX, ma_tpX )
AND NHAN_VIEN ( ma_tpX , ho_tenX, ngay_sinhX, gioi_tinhX,
ma_dvX, luongX)) } Dept of IS - FIT - HNUE
Trang 61So sánh đại số quan hệ và tân từ
Tính phi thủ tục ở ngôn ngữ tân từ cao hơn ngôn ngữ đại số quan hệ
Khả năng biểu thị câu hỏi của ngôn ngữ đại số quan hệ và ngôn ngữ tân từ là tương đương nhau
Hầu hết các ngôn ngữ hỏi của CSDL quan hệ ngoài các phép toán cơ bản còn có thêm một
số phép toán mở rộng như hàm kết tập, phép gộp nhóm Dept of IS - FIT - HNUE
Trang 62Structured Query Language
SQL
Dept of IS - FIT - HNUE
Trang 63Giới thiệu về SQL
Dept of IS - FIT - HNUE
Trang 64Lịch sử ra đời và phát triển của SQL
SQL được xem là ngôn ngữ chuẩn cho các hệ
quản trị CSDL quan hệ
Năm 1976: phiên bản gốc của SQL với tên là
Language) ra đời tại phòng nghiên cứu San
Jose của hãng IBM
Dept of IS - FIT - HNUE
Trang 65Lịch sử ra đời và phát triển của SQL
Năm 1986: Viện tiêu chuẩn quốc gia Mỹ (ANSI)
và tổ chức tiêu chuẩn quốc tế (ISO) đã công bố
Trang 66Các thành phần cơ bản của SQL
Ngôn ngữ định nghĩa dữ liệu (DDL-Data Definition
Language)
Cho phép định nghĩa các đối tượng dữ liệu
Các câu lệnh: CREATE, ALTER, DROP
Ngôn ngữ thao tác dữ liệu (DML–Data Manual
Languague)
Cho phép cập nhật và tìm kiếm dữ liệu
Các câu lệnh: INSERT, UPDATE, DELETE, SELECT,
MERGE, COMMIT, ROLLBACK, SAVEPOINT Dept of IS - FIT - HNUE
Trang 67Các thành phần cơ bản của SQL
Ngôn ngữ điều khiển dữ liệu (DCL-Data Control
Language)
Cho phép kiểm soát quyền truy cập dữ liệu
Các câu lệnh: GRANT, REVOKE
Dept of IS - FIT - HNUE
Trang 68Ngôn ngữ định nghĩa dữ liệu
Dept of IS - FIT - HNUE
Trang 69Các kiểu miền dữ liệu
CHAR(n): xâu kí tự có độ dài cố định
VARCHAR(n): xâu kí tự có độ dài thay đổi
INT: số nguyên
SMALLINT: kiểu số nhỏ
NUMERIC(p,d): số thập phân cố định Ví dụ numeric(3,1): 12.3
REAL, DOUBLE PRECISION: số thập phân dấu phẩy động và số thập phân dấu phảy động độ chính xác gấp đôi
FLOAT(n): số dấu phẩy động với độ chính xác ít nhất n chữ số
TIME giờ trong ngày theo giờ, phút, giây
Dept of IS - FIT - HNUE
Trang 70Câu lệnh tạo bảng
CREATE TABLE <Tên bảng> (
<tên cột 1> <kiểu dữ liệu 1> [(<kích thước 1>)],
<tên cột 2> <kiểu dữ liệu 2> [(<kích thước 2>)],
<tên cột n> <kiểu dữ liệu n> [(<kích thước n>)] );
Dept of IS - FIT - HNUE
Trang 71Cơ sở dữ liệu mẫu
Trang 73Tạo bảng với ràng buộc toàn vẹn
CREATE TABLE <Tên bảng> (
<tên cột 1> <kiểu dữ liệu 1> [(<kích thước 1>)] [CONSTRAINT <tên 1>] ,
<tên cột 2> <kiểu dữ liệu 2> [(<kích thước 2>)] [CONSTRAINT <tên 2>] ,
<tên cột n> <kiểu dữ liệu n> [(<kích thước n>)] [CONSTRAINT <tên n>] [,CONSTRAINT <tên 1>]
Trang 74Cú pháp các ràng buộc toàn vẹn
[CONSTRAINT <tên ràng buộc toàn vẹn>] |
NULL |
UNIQUE [(<tên cột i>, <tên cột j> …)] |
PRIMARY KEY [(<tên cột i>, <tên cột j> …)] |
[FOREIGN KEY [(<tên cột i>, <tên cột j> …)]]
REFERENCES <tên bảng> (<tên cột i>, <tên cột j> …) |
CHECK (<điều kiện>) |
DEFAULT <giá trị>
Dept of IS - FIT - HNUE
Trang 75Ví dụ tạo bảng PHONG với ràng buộc
CREATE TABLE PHONG(
MA_DV CHAR(2) PRIMARY KEY,
TEN_PHONG VARCHAR(30) NOT NULL UNIQUE,
MA_ TP SMALLINT
);
Dept of IS - FIT - HNUE
Trang 76Ví dụ tạo bảng NHAN_VIEN với ràng buộc
Ví dụ tạo bảng NHAN_VIEN với ràng buộc toàn vẹn
CREATE TABLE NHAN_VIEN(
);
Dept of IS - FIT - HNUE
Trang 77Ví dụ tạo bảng CHAM_CONG với ràng buộc
Ví dụ tạo bảng CHAM_CONG
CREATE TABLE CHAM_CONG(
Trang 78Câu lệnh xóa bảng
DROP TABLE <tên bảng>;
Ví dụ
DROP TABLE CHAM_CONG;
Dept of IS - FIT - HNUE
Trang 79Câu lệnh thêm/xóa cột
Thêm cột
ALTER TABLE <tên bảng> ADD <định nghĩa cột mới>;
Xóa cột
ALTER TABLE <tên bảng> DROP <tên cột>;
Dept of IS - FIT - HNUE
Trang 80Tạo lập chỉ mục (Index)
Tạo ra một bảng lưu trữ vị trí các bản ghi dựa trên giá trị tăng dần của một cột nào đó
Làm tăng tốc độ tìm kiếm thông tin trong CSDL
Chỉ mục không làm thay đổi thứ tự vật lí của các bản ghi trong bảng
Dept of IS - FIT - HNUE
Trang 81Tạo lập chỉ mục (Index)
Tạo chỉ mục
CREATE INDEX <tên chỉ mục>
ON <tên bảng> (<tên cột 1>) [(<tên cột 2>), …];
Ví dụ
CREATE INDEX idx_HoTen
ON NHAN_VIEN(HO_TEN)
Xóa chỉ mục
DROP INDEX <tên chỉ mục>;
Dept of IS - FIT - HNUE
Trang 82Ngôn ngữ thao tác dữ liệu
Dept of IS - FIT - HNUE
Trang 83Câu lệnh SELECT – Truy vấn thông tin
[WHERE <Điều kiện>]
[[GROUP BY <Danh sách tên cột>] [HAVING <điều kiện>]]
[ORDER BY <Danh sách tên cột> [ASC|DESC]]
Dept of IS - FIT - HNUE
Trang 84 VD1 Cho biết tên của dự án có mã là D4?
Trang 85 VD2 Cho biết họ tên và lương của các nhân viên làm việc ở phòng “Nghiên cứu và phát triển”?
AND TEN_PHONG = „Nghiên cứu và phát triển‟;
Ví dụ câu lệnh SELECT
Dept of IS - FIT - HNUE
Trang 86 VD3 Với mỗi dự án thực hiện ở “TT khí tượng thủy văn HN”, hãy cho biết mã số dự án đồng thời cho biết họ tên, ngày sinh của trưởng phòng quản lý dự án này?
SELECT MA_DA, HO_TEN, NG_SINH
FROM DU_AN D, PHONG P, NHANVIEN N
AND MA_DA =„TT khí tượng thủy văn HN‟;
Ví dụ câu lệnh SELECT
Dept of IS - FIT - HNUE
Trang 87 VD4 Đưa ra tên phòng và trung bình lương của các phòng có trung bình lương lớn hơn 3500000 đồng?
SELECT TEN_PHONG, AVG(LUONG) AS TB_LUONG
FROM PHONG P, NHANVIEN N
WHERE P.MA_DV = N.MA_DV
Trang 88 VD4 Đưa ra tên, trung bình lương của các phòng
có trung bình lương lớn hơn 3 500 000 đồng?
SELECT TEN_PHONG, TB_LUONG
FROM PHONG P, NHANVIEN N WHERE P.MA_DV = N.MA_DV GROUP BY TEN_PHONG)
Trang 89 Cú pháp câu lệnh
CREATE VIEW <tên khung nhìn> AS <câu lệnh SELECT>
Ví dụ:
CREATE VIEW TG AS
SELECT TEN_PHONG, AVG(LUONG) AS TB_LUONG
FROM PHONG P, NHANVIEN N
WHERE P.MA_DV = N.MA_DV
Trang 90Câu lệnh INSERT- thêm bản ghi
Cú pháp câu lệnh
INSERT INTO <tên bảng> [(<Danh sách cột>)]
VALUES (<Danh sách giá trị>)
Trang 91Câu lệnh UPDATE- sửa đổi thông tin
Cú pháp câu lệnh
UPDATE <tên bảng>
SET <tên cột 1> = <giá trị 1> [<tên cột 2> = <giá trị 2> ]
[WHERE <điều kiện>]
Dept of IS - FIT - HNUE
Trang 92Câu lệnh DELETE- xóa bản ghi
Trang 93Ngôn ngữ điều khiển dữ liệu
Dept of IS - FIT - HNUE
Trang 94Tạo tài khoản NSD CSDL
Cú pháp câu lệnh
CREATE USER <tên NSD>
IDENTIFIED BY <mật khẩu>
Ví dụ
CREATE USER giamdoc IDENTIFIED BY 123abc;
Dept of IS - FIT - HNUE
Trang 96Câu lệnh gán quyền cho NSD
Trang 97Câu lệnh thu hồi quyền của NSD
Câu lệnh thu hồi quyền của NSD
REVOKE <danh sách đặc quyền>
Trang 99Ví dụ 2
Trong hai biểu thức đại số dưới đây biểu diễn cho câu hỏi
ở ví dụ 2, biểu thức nào khi thực hiện sẽ tối ưu hơn trong việc sử dụng bộ nhớ để lưu các kết quả trung gian?
1
HOTEN, LUONG ((TEN-PHONG=”Nghiên cứu và phát triển ) (NHAN_VIEN * PHONG))
2
HOTEN, LUONG (NHAN_VIEN*
(MA-DV ((TEN-PHONG=”Nghiên cứu và phát triển ) (PHONG))))
Dept of IS - FIT - HNUE
Trang 100Ví dụ 3
Theo các bạn, trong hai biểu thức đại số sau biểu diễn câu hỏi trong ví dụ 3, câu hỏi nào tối ưu hơn?
Cách 1
KQTG MA-DA, MA-DV( DIA-DIEM-DA=„TT Khí tượng thủy văn HN‟ (DU_AN)
KETQUA MA-DA, HO-TEN, NG-SINH(NHAN_VIEN⋈MA-NV=MA-TP (PHONG*KQTG))
Cách 2
KQTG NHAN_VIEN⋈MA-NV=MA-TP (DU_AN * PHONG)
KETQUA MA-DA, HO-TEN, NG-SINH( DIA-DIEM-DA=„TT Khí tượng thủy văn HN‟ (KQTG))
Dept of IS - FIT - HNUE
Trang 101Ví dụ 3
MA_DV, GIOI_TINHFAVERAGE(LUONG)(NHAN_VIEN)
Theo các bạn, biểu thức
biểu diễn cho câu hỏi nào sau đây:
A Cho biết trung bình lương của các nhân viên nam và trung
bình lương của các nhân viên nữ trong công ty ?
B Cho biết trung bình lương của các nhân viên nam và bình
lương của các nhân viên nữ ở từng phòng?
C Cho biết trung bình lương của các nhân viên nam và nữ ?
Dept of IS - FIT - HNUE
Trang 103Ngôn ngữ định nghĩa dữ liệu
Theo các bạn, ràng buộc:
CONSTRAINT PK PRIMARY KEY(MANV, MA_DA) Trong câu lệnh tạo bảng CHAM_CONG có nghĩa là gì? (Chọn câu trả lời đúng)
A. Ràng buộc được đặt tên là PK và hai cột MANV,
MA_DA làm khóa chính của bảng
B. Ràng buộc được đặt tên là PK Trong đó, cột
MANV làm khóa chính thứ nhất và cột MA_DA làm khóa chính thứ hai của bảng
Dept of IS - FIT - HNUE