1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng hệ cơ sở dữ liệu chương 4 ts lê thị tú kiên

103 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các Ngôn Ngữ Thao Tác Trên Quan Hệ
Tác giả Lê Thị Tú Kiên
Trường học Hnue
Chuyên ngành Ngôn Ngữ Thao Tác Trên Quan Hệ
Thể loại bài giảng
Định dạng
Số trang 103
Dung lượng 0,96 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 2

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 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 3

Ngô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 10

Phé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 11

Ví dụ phép tích đề các

Ho Trần

Trang 12

Phép chia

 r1r2 = {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 13

Cho 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 15

Ví dụ phép chia

r2

MaMonHoc HP1 HP2 HP3

MaSV SP1

Trang 17

X(r)

X={Ho, Ten}

Dept of IS - FIT - HNUE

Trang 18

Phé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 19

Cá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 24

Phép kết nối ngoài trái

Trang 25

Phép kết nối ngoài phải

2000 null

r1>ABr2 = {(t,q)  r1ABr2 hoặc ((null, … , null, q)  t  r1, t[A]  q[B] sai)}

Dept of IS - FIT - HNUE

Trang 26

Phép đổi tên quan hệ

Trang 27

Sử 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 28

Cơ sở dữ liệu quan hệ mẫu

Trang 29

Ví 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 31

Ví 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 32

Ví 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 33

Ví 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 34

Ví 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 35

Ví 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 36

Ví 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 37

Phé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 41

Ví 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 42

Ví 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 43

Ví 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 44

Ngôn ngữ tân từ

Dept of IS - FIT - HNUE

Trang 45

Giớ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 46

Ngôn ngữ tân từ biến bộ

Dept of IS - FIT - HNUE

Trang 47

Phép tính biến bộ đơn giản

Trang 50

Cá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 51

Cá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 52

Ví 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 53

Ví 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 55

Ngôn ngữ tân từ biến miền

Dept of IS - FIT - HNUE

Trang 56

Ngô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 57

Biể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 58

Ví 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 59

Ví 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 61

So 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 62

Structured Query Language

SQL

Dept of IS - FIT - HNUE

Trang 63

Giới thiệu về SQL

Dept of IS - FIT - HNUE

Trang 64

Lị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 65

Lị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 66

Cá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 67

Cá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 68

Ngôn ngữ định nghĩa dữ liệu

Dept of IS - FIT - HNUE

Trang 69

Cá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 70

Câ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 71

Cơ sở dữ liệu mẫu

Trang 73

Tạ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 74

Cú 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 75

Ví 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 76

Ví 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 77

Ví 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 78

Câ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 79

Câ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 80

Tạ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 81

Tạ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 82

Ngôn ngữ thao tác dữ liệu

Dept of IS - FIT - HNUE

Trang 83

Câ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 90

Câ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 91

Câ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 92

Câu lệnh DELETE- xóa bản ghi

Trang 93

Ngôn ngữ điều khiển dữ liệu

Dept of IS - FIT - HNUE

Trang 94

Tạ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 96

Câu lệnh gán quyền cho NSD

Trang 97

Câ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 99

Ví 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 100

Ví 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 101

Ví 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 103

Ngô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

Ngày đăng: 25/11/2023, 14:03

🧩 Sản phẩm bạn có thể quan tâm