You are on page 1of 114

Bài giảng môn:

Cơ sở dữ liệu

ThS. Lê Đức Trị


Nội dung
Tổng quan cơ sở dữ liệu
Cơ sở dữ liệu quan hệ

Đại số quan hệ

Ràng buộc toàn vẹn

Chuẩn hóa dữ liệu

Ngôn ngữ truy vấn dữ liệu


Chương 1,2,3
Tổng quan cơ sở dữ liệu
Cơ sở dữ liệu quan hệ
Đại số quan hệ
Các khái niệm cơ bản và định nghĩa
 Cơ sở dữ liệu
 database
 Cơ sở dữ liệu là sự tập hợp có tổ chức các dữ
liệu có liên quan luận lý với nhau.
 Dữ liệu (data): sự biểu diễn của các đối
tượng và sự kiện được ghi nhận và được lưu
trữ trên các phương tiện của máy tính.
 Dữ liệu có cấu trúc: số, ngày, chuỗi ký tự, …
 Dữ liệu không có cấu trúc: hình ảnh, âm thanh,
đoạn phim, …
 Có tổ chức (organized): người sử dụng có
thể dễ dàng lưu trữ, thao tác và truy xuất dữ
liệu.
Các khái niệm cơ bản và định nghĩa
 Cơ sở dữ liệu
 Có liên quan luận lý (logically related): dữ
liệu mô tả một lãnh vực mà nhóm người sử
dụng quan tâm và được dùng để trả lời các
câu hỏi liên quan đến lãnh vực này.
 Thông tin
 information
 Thông tin là dữ liệu đã được xử lý để làm
tăng sự hiểu biết của người sử dụng.
 Dữ liệu trong ngữ cảnh.
 Dữ liệu được tổng hợp / xử lý.
Các khái niệm cơ bản và định nghĩa

Dữ liệu
50010273 Nguyễn Trung Tiến MT00 20
50100298 Lê Việt Hùng MT01 19
59900012 Trần Hùng Việt MT99 21
50200542 Hồ Xuân Hương MT02 18
50000075 Bùi Đức Duy MT00 20

Thông tin: dữ liệu trong ngữ cảnh


Mã sinh viên Họ và tên sinh viên Lớp Tuổi
50010273 Nguyễn Trung Tiến MT00 20
50100298 Lê Việt Hùng MT01 19
59900012 Trần Hùng Việt MT99 21
50200542 Hồ Xuân Hương MT02 18
50000075 Bùi Đức Duy MT00 20
Các khái niệm cơ bản và định nghĩa

Thông tin: dữ liệu được tổng hợp / xử lý

MT99
20%
MT00
40%
MT02
20%
MT01
20%
Các khái niệm cơ bản và định nghĩa
 Siêu dữ liệu
 metadata
 Siêu dữ liệu là dữ liệu dùng để mô tả các tính
chất / đặc tính của dữ liệu khác (dữ liệu về
dữ liệu).
 Các đặc tính: định nghĩa dữ liệu, cấu trúc dữ
liệu, qui tắc / ràng buộc.
Các khái niệm cơ bản và định nghĩa

Siêu dữ liệu cho Sinh_viên


Data Item Value
Name Type Length Min Max Description
MaSV Character 8 Ma sinh vien
Hoten Character 30 Ho ten sinh vien
Lop Character 3 Lop
Tuoi Number 2 17 25 Tuoi
Hệ thống xử lý tập tin
 Hệ thống xử lý tập tin
 file processing system
 Hệ thống xử lý tập tin là tập hợp các chương
trình dùng để lưu trữ, thao tác và truy xuất các
tập tin dữ liệu có kích thước lớn.
 Các tập tin dữ liệu được lưu trữ trong các thư
mục (folder).
Hệ thống xử lý tập tin
 Các thành phần của hệ thống xử lý tập tin
 Phần cứng: các máy tính.
 Phần mềm:
 Hệ điều hành
 Các tiện ích
 Các tập tin
 Các chương trình quản lý tập tin
 Các chương trình ứng dụng tạo các báo cáo từ
các dữ liệu được lưu trữ trong các tập tin.
 Con người: người quản lý, chuyên gia, người
lập trình, người sử dụng cuối cùng.
 Các thủ tục: các lệnh và các qui tắc chi phối
việc thiết kế và sử dụng các thành phần của
phần mềm.
 Dữ liệu: tập hợp các sự kiện.
Hệ thống xử lý tập tin
 Quản lý dữ liệu của hệ thống tập tin
 Ngôn ngữ lập trình: 3GL (third-Generation
Language).
 Làm gì? Làm như thế nào?
 Các ngôn ngữ:
COBOL (COmmon Business-Oriented Language)
BASIC (Beginner’s All-purpose Symbolic Instruction Code)
FORTRAN (FORmula TRANslation)
 Các chương trình xử lý tập tin
 Tạo cấu trúc tập tin.
 Thêm dữ liệu vào tập tin.
 Xóa dữ liệu của tập tin
 Sửa dữ liệu của tập tin.
 Liệt kê dữ liệu của tập tin.
Hệ thống xử lý tập tin
 Nhược điểm của hệ thống xử lý tập tin
 Phụ thuộc dữ liệu – chương trình (Program-
Data Dependence)
 Tất cả các chương trình ứng dụng phải duy trì
siêu dữ liệu (phần mô tả) của các tập tin mà
chúng sử dụng.
 Dư thừa dữ liệu / Trùng lặp dữ liệu (Data
Redundancy / Duplication of Data)
 Các hệ thống / chương trình khác nhau có các
bản dữ liệu riêng biệt của cùng dữ liệu.
 Hạn chế việc dùng chung dữ liệu
 Mỗi ứng dụng có các tập tin riêng biệt, ít sử
dụng chung dữ liệu với các ứng dụng khác.
Hệ thống xử lý tập tin
 Nhược điểm của hệ thống xử lý tập tin
 Thời gian phát triển lâu
 Người lập trình phải thiết kế các dạng tập tin dữ
liệu riêng và viết cách truy xuất tập tin cho mỗi
ứng dụng mới.
 Chi phí bảo trì chương trình cao
 Các nhược điểm nêu trên làm cho việc bảo trì
chương trình gặp nhiều khó khăn, thường chiếm
khoảng 80% ngân sách phát triển HTTT.
Phụ thuộc dữ liệu
 Mỗi người lập trình phải duy trì dữ liệu
riêng biệt.
 Mỗi chương trình ứng dụng phải có mã
lệnh cho siêu dữ liệu của mỗi tập tin.
 Mỗi chương trình ứng dụng phải có các
chương trình con xử lý để đọc, thêm, sửa
và xóa dữ liệu.
 Không có các điều khiển chung và phối
hợp.
 Các dạng thức tập tin không có cùng
chuẩn.
Dư thừa dữ liệu
 Tốn vùng nhớ để lưu trữ dữ liệu dư thừa.
 Gây ra các vấn đề khó về bảo trì dữ liệu.
 Vấn đề chính:
 Việc cập nhật dữ liệu của một tập tin có thể
dẫn đến các mâu thuẫn dữ liệu.
 Vi phạm tính toàn vẹn dữ liệu.
Dư thừa dữ liệu
Duplicate Data
Cách tiếp cận cơ sở dữ liệu
 Kho dữ liệu trung tâm chứa các dữ liệu
dùng chung.
 Dữ liệu được quản lý bởi một đơn vị điều
khiển (controlling agent).
 Dữ liệu được lưu trữ theo một dạng thức
chuẩn và thích hợp.
 Cần phải có một hệ quản trị CSDL.
Cách tiếp cận cơ sở dữ liệu
 Ưu điểm của cách tiếp cận CSDL
 Độc lập dữ liệu – chương trình (data -
program independence).
 DBMS chứa siêu dữ liệu (metadata), do đó các
ứng dụng không cần quan tâm đến các dạng
thức của dữ liệu.
 DBMS quản lý các truy vấn và cập nhật dữ liệu,
do đó ứng dụng không cần xử lý việc truy xuất
dữ liệu.
 Giảm tối thiểu sự dư thừa dữ liệu (data
redundancy).
 Nâng cao tính nhất quán (data consistency) /
toàn vẹn dữ liệu (data integrity).
Cách tiếp cận cơ sở dữ liệu
 Ưu điểm của cách tiếp cận CSDL
 Nâng cao việc dùng chung dữ liệu (data
sharing).
 Những người sử dụng khác nhau có những cái
nhìn khác nhau về dữ liệu.
 Tăng hiệu suất phát triển ứng dụng.
 Tuân thủ các tiêu chuẩn.
 Tất cả các truy xuất dữ liệu đều được thực hiện
theo cùng một cách.
 Nâng cao chất lượng của dữ liệu.
 Các ràng buộc (constraint), các qui tắc hợp lệ
của dữ liệu (data validation rule).
Cách tiếp cận cơ sở dữ liệu
 Ưu điểm của cách tiếp cận CSDL
 Nâng cao tính truy xuất và tính đáp ứng của
dữ liệu.
 Sử dụng ngôn ngữ truy vấn dữ liệu chuẩn (SQL -
Structured Query Language).
 Giảm chi phí bảo trì chương trình.
 Bảo mật (security).
 Chép lưu (backup) và phục hồi (recovery).
 Điều khiển tương tranh (concurrency
control).
Cách tiếp cận cơ sở dữ liệu
 Chi phí và rủi ro của cách tiếp cận CSDL
 Chi phí ban đầu
 Chi phí cài đặt và quản lý
 Chi phí chuyển đổi (conversion cost)
 Chi phí vận hành
 Cần nhân viên mới có chuyên môn.
 Cần phải chép lưu và phục hồi.
 Mâu thuẫn về mặt tổ chức
 Rất khó thay đổi các thói quen cũ.
Các loại cơ sở dữ liệu
 CSDL cá nhân
 personal database
 CSDL riêng.
 CSDL nhóm làm việc
 workgroup database
 Mạng cục bộ (ít hơn 25 người sử dụng)
 CSDL phòng ban
 department database
 Mạng cục bộ (từ 25 đến 100 người sử dụng)
 CSDL xí nghiệp
 enterprise database
 Mạng diện rộng (hàng trăm hoặc hàng ngàn
người sử dụng)
Các loại cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu
 Hệ quản trị CSDL
 DBMS – DataBase Management System
 Hệ quản trị CSDL là tập hợp các chương
trình dùng để quản lý cấu trúc và dữ liệu của
CSDL và điều khiển truy xuất dữ liệu trong
CSDL.
 Cho phép người sử dụng định nghĩa, tạo lập
và bảo trì CSDL và cung cấp các truy xuất dữ
liệu.
Hệ quản trị cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu
 Các chức năng của hệ quản trị CSDL
 Lưu trữ, truy xuất và cập nhật dữ liệu
 Ngôn ngữ định nghĩa dữ liệu (DDL - Data
Definition Language)
 Ngôn ngữ thao tác dữ liệu (DML - Data
Manipulation Language).
 Quản lý giao tác (transaction management).
 Điều khiển tương tranh (concurrency control)
 Chép lưu và phục hồi dữ liệu.
 Bảo mật dữ liệu
 Ngôn ngữ điều khiển dữ liệu (DCL - Data Control
Language).
 Hỗ trợ truyền thông dữ liệu.
 Duy trì tính toàn vẹn / nhất quán dữ liệu.
 Cung cấp các tiện ích.
Hệ quản trị cơ sở dữ liệu
Ngôn ngữ định nghĩa dữ liệu: Tạo cấu trúc của bảng Customer
CREATE TABLE CUSTOMER
(CUST_ID NUMBER(11,0) NOT NULL,
NAME VARCHAR(25) NOT NULL,
ADDRESS VARCHAR(30),
CITY VARCHAR(20),
CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_ID));
Ngôn ngữ thao tác dữ liệu: Liệt kê mã, tên và địa chỉ của các
khách hàng thuộc thành phố ‘HCM’
SELECT CUST_ID, NAME, ADDRESS
FROM CUSTOMER
WHERE CITY = ‘HCM’;
Ngôn ngữ điều khiển dữ liệu: Cho phép người sử dụng Tien và
Truc được phép xem và thêm dữ liệu vào bảng Customer
GRANT SELECT, INSERT ON CUSTOMER
TO TIEN, TRUC;
Sự phát triển các hệ CSDL
 Hệ thống tập tin (flat file): 1960 - 1980
 Hệ CSDL phân cấp (hierarchical): 1970 -
1990
 Hệ CSDL mạng (network): 1970 - 1990
 Hệ CSDL quan hệ (relational): 1980 - nay
 Hệ CSDL hướng đối tượng (object-
oriented): 1990 - nay
 Hệ CSDL đối tượng - quan hệ (object-
relational): 1990 - nay
 Kho dữ liệu (data warehouse): 1980 - nay
 Web-enabled: 1990 - nay
Mô hình liên kết thực thể
 Mô hình liên kết thực thể (ER)
 entity-relationship model
 Mô hình liên kết thực thể là cách tiếp cận
chính để mô hình hóa dữ liệu ý niệm
(conceptual data modeling).
 Mô hình ER là công cụ giao tiếp giữa người
thiết kế CSDL và người sử dụng cuối cùng
để xây dựng CSDL trong giai đoạn phân tích.
 Mô hình ER được dùng để xây dựng mô hình
dữ liệu ý niệm (conceptual data model) nhằm
biểu diễn cấu trúc và các ràng buộc của
CSDL.
Mô hình liên kết thực thể
 Các thành phần của mô hình liên kết thực
thể
 Thực thể và các thuộc tính.
 Mối liên kết và các thuộc tính.
Mô hình liên kết thực thể

Sơ đồ liên kết thực thể (ERD - Entity-Relationship Diagram)


Relationship symbols

Entity
symbols
Attribute
symbols

A special
entity that is
also a
relationship
Relationship
degrees
specify
number of
entity types
involved

Relationship
cardinalities
specify how
many of each
entity type is
allowed
Thực thể
 Thể hiện thực thể
 entity instance
 Thể hiện thực thể là người, vị trí, đối tượng,
sự kiện, khái niệm (thường tương ứng với
một hàng của bảng).
 Thực thể nên là
 đối tượng có nhiều thể hiện trong CSDL.
 đối tượng có nhiều thuộc tính.
 đối tượng cần được mô hình hóa.
 Thực thể không nên là
 người sử dụng của hệ CSDL.
 kết xuất của hệ CSDL (ví dụ bản báo cáo).
 Đặc điểm của thực thể là tính phân biệt
(distinctness): có thể phân biệt giữa thực thể
này với thực thể khác.
Thực thể
 Kiểu thực thể
 entity type
 Kiểu thực thể là tập hợp các thực thể thuộc
cùng một loại (thường tương ứng với một
bảng).
 Được biểu diễn bằng hình chữ nhật.
Thuộc tính
 Thuộc tính
 attribute
 Thuộc tính là một đặc tính / tính chất của một
kiểu thực thể (thường tương ứng với một
vùng tin trong một bảng).
 Được biểu diễn bằng hình bầu dục.
 Các loại thuộc tính
 Thuộc tính bắt buộc và thuộc tính tùy chọn.
 Thuộc tính đơn và thuộc tính phức hợp.
 Thuộc tính đơn trị và thuộc tính đa trị.
 Thuộc tính chứa và thuộc tính dẫn xuất.
 Thuộc tính khóa và thuộc tính không khóa.
Thuộc tính
 Thuộc tính đơn và thuộc tính phức hợp
 Thuộc tính đơn (simple attribute) là thuộc
tính không bị phân rã thành nhiều thuộc tính
khác.
 Thuộc tính phức hợp (composite attribute) là
thuộc tính bị phân rã thành nhiều thuộc tính
khác.
Thuộc tính

Thuoäc tính ñôn

Thuoäc tính phức


hôïp
Thuộc tính
 Thuộc tính đơn trị và thuộc tính đa trị
 Thuộc tính đơn trị (single-valued attribute) là
thuộc tính chỉ chứa một giá trị.
 Thuộc tính đa trị (multivalued attribute) là
thuộc tính chứa nhiều giá trị khác nhau thuộc
một miền trị, được biểu diễn bằng hình bầu
dục nét đôi.
Thuộc tính
 Thuộc tính chứa và thuộc tính dẫn xuất
 Thuộc tính chứa (stored attribute) là thuộc
tính mà giá trị của nó không được suy dẫn từ
các thuộc tính khác.
 Thuộc tính dẫn xuất (derived attribute) là
thuộc tính mà giá trị của nó được suy dẫn từ
các thuộc tính khác, được biểu diễn bằng
hình bầu dục nét đứt.
Thuộc tính

Thuộc tính đơn trị

Thuộc tính dẫn xuất Thuộc tính đa trị

Thuộc tính chứa


Khóa
 Khóa / thuộc tính xác định
 key / identifier
 Khóa là một thuộc tính hoặc tổ hợp các thuộc
tính dùng để xác định duy nhất một thể hiện
của một kiểu thực thể.
 Thuộc tính khóa và thuộc tính không khóa
 Thuộc tính khóa là thuộc tính ở trong khóa.
 key attribute / prime attribute / identifier attribute
 Thuộc tính khóa được gạch dưới.
 Thuộc tính không khóa (non-key attribute) là
thuộc tính không ở trong khóa.
 Thuộc tính không khóa còn được gọi là thuộc
tính mô tả (descriptor).
Khóa
 Khóa đơn và khóa phức hợp
 Khóa đơn (simple key) là khóa chỉ có một
thuộc tính.
 Khóa phức hợp (composite key) là khóa có
nhiều hơn một thuộc tính.
 Khóa dự tuyển
 candidate key
 Khóa dự tuyển là khóa của một kiểu thực thể.
 Một kiểu thực thể có ít nhất một khóa dự
tuyển.
Khóa
 Khóa chính
 primary key
 Khóa chính là một khóa tiêu biểu trong các
khóa dự tuyển của một kiểu thực thể.
 Một kiểu thực thể chỉ có một khóa chính.
 Khóa chính dùng để liên kết giữa các thực
thể.
Khóa

Khóa đơn

Thuộc tính không khóa

Khóa phức hợp


Mối liên kết
 Kiểu mối liên kết
 relationship type
 Kiểu mối liên kết là sự liên kết giữa các kiểu
thực thể.
 Được biểu diễn bằng hình thoi.
 Mối liên kết có thể có nhiều thuộc tính dùng
để mô tả các đặc tính của sự liên kết giữa
các thực thể.
 Hai thực thể có thể có nhiều kiểu mối liên kết
giữa chúng.
Mối liên kết

Hai thực thể có nhiều mối liên kết

Mối liên kết có thuộc tính


Mối liên kết
 Bậc / ngôi của mối liên kết
 degree / arity of relationship
 Bậc của mối liên kết là số lượng kiểu thực
thể tham gia đồng thời vào mối liên kết này.
 Các loại mối liên kết
 Mối liên kết 1-ngôi (unary relationship)
 Mối liên kết 2-ngôi (binary relationship)
 Mối liên kết 3-ngôi (ternary relationship): 3
kiểu thực thể đồng thời tham gia vào mối liên
kết.
Mối liên kết

Entities of two different


types related to each
other
One entity related to
another of the same
Entities of three
entity type
different types related to
each other
Mối liên kết

Mối liên kết 1-ngôi


Mối liên kết

Mối liên kết 2-ngôi


Mối liên kết

Mối liên kết 3-ngôi


Mối liên kết
 Lượng số của mối liên kết
 cardinality of relationship
 Lượng số của mối liên kết là số lượng thể
hiện thực thể tham gia vào mối liên kết này.
 Các loại lượng số
 một - một (one-to-one): một thực thể a liên
kết với một thực thể b; một thực thể b liên
kết với một thực thể a.
 một - nhiều (one-to-many): một thực thể a
liên kết với nhiều thực thể b; một thực thể b
liên kết với một thực thể a.
 nhiều - nhiều (many-to-many): một thực thể a
liên kết với nhiều thực thể b; một thực thể b
liên kết với nhiều thực thể a.
Mối liên kết
 Ràng buộc lượng số
 cardinality constraint
 Ràng buộc lượng số là số lượng thể hiện của
thực thể này có thể hoặc phải liên kết với
một thể hiện của thực thể khác.
 Lượng số nhỏ nhất
 Nếu 0 là tùy chọn (optional).
 Nếu một hoặc nhiều là bắt buộc (mandatory).
 Lượng số lớn nhất
 Số lượng lớn nhất.
Mối liên kết
Mối liên kết

Mối liên kết 1-ngôi một-một có lượng số tùy chọn

Mối liên kết 2-ngôi một-nhiều có lượng số bắt buộc


Mối liên kết

Lượng số lớn nhất

Mối liên kết có lượng số tối đa xác định


Ví dụ

1. Vẽ ERD:
-Một sinh viên có thể đăng ký nhiều môn học, một
môn học có thể được đăng ký bởi nhiều sinh viên
hoặc không có sinh viên nào đăng ký
-Một loại mặt hàng có thể được bán cho nhiều
khách hàng, một khách hàng có thể được mua
nhiều loại mặt hàng khác nhau
-Một tòa nhà có nhiều phòng học, một phòng học
chỉ thuộc về một tòa nhà nào đó, trong phòng học
có nhiều loại thiết bị giảng dạy, một loại thiết bị
giảng dạy có thể có ở nhiều phòng học
Ví dụ

2. Vẽ ERD:
-Một sinh viên gồm tên sv, mã số sv, lớp được
mượn nhiều đầu sách tại thư viện, một đầu sách
gồm tên đầu sách, nhà xuất bản, mã số, tác giả có
thể được mượn bởi nhiều sinh viên. Khi mượn cần
có thông tin ngày mượng
-Một dự án có thể được làm bởi nhiều công nhân ở
một thành phố, một công nhân chỉ được tham gia
vào một dự án, một thành phố có thể có nhiều dự
án
Ví dụ

3. Vẽ ERD:
-Sinh viên gồm masv, tên sinh viên, lớp có thể
mượn nhiều đầu sách khác nhau, mỗi đầu sách
gồm tên đầu sách, mã đầu sách, tác giả, nhà xuất
bản, số trang. Mỗi đầu sách có thể được mượng
bởi nhiều sinh viên.
-Mỗi khoa có nhiều sinh viên, sinh viên gồm mã sv,
họ tên, ngày sinh. Mỗi sinh viên chỉ học ở một
khoa. Khoa gồm mã khoa, tên khoa. Khoa gồm
nhiều giảng viên, giảng viên có thông tin tên giảng
viên, mã giảng viên, học vị. Mỗi giảng viên chỉ
thuộc về một khoa
Quan hệ
 Quan hệ (relation) là một bảng dữ liệu hai
chiều bao gồm nhiều hàng (mẩu tin, hay là
bộ) và nhiều cột (thuộc tính hoặc vùng tin).
 Mỗi hàng là duy nhất: không thể có hai hàng
có cùng các giá trị ở tất cả vùng tin.
 Thứ tự của các hàng là không quan trọng.
 Thứ tự của các cột là không quan trọng.
 Không phải mọi bảng đều là quan hệ. Quan
hệ là một bảng không chứa các hàng giống
hệt nhau.
Quan hệ

Quan hệ: Supplier

Snum Name City


S1 Nguyễn Trung Tiến SF
S2 Trần Thị Yến LA
S3 Nguyễn Văn An SF
Quan hệ
 Khóa
 key
 Khóa quan hệ là một tập nhỏ nhất các thuộc
tính dùng để xác định duy nhất một hàng.
 Một khóa chỉ có một thuộc tính được gọi là
khóa đơn (simple key).
 Một khóa có nhiều thuộc tính được gọi là
khóa phức hợp (composite key).
 Khóa thường được sử dụng làm chỉ mục
(index) của bảng dữ liệu để làm tăng tốc độ
xử lý câu truy vấn.
Quan hệ
 Khóa
 Một quan hệ phải có ít nhất một khóa và có
thể có nhiều khóa.
 Các thuộc tính thuộc một khóa được gọi là
thuộc tính khóa (prime attribute), các thuộc
tính còn lại trong lược đồ quan hệ được gọi
là các thuộc tính không khóa (nonprime
attribute).
 Các thuộc tính khóa được gạch dưới.
 Các thuộc tính khóa không được có giá trị
rỗng (null value).
Quan hệ
 Khóa
 Tất cả các khóa của một quan hệ được gọi là
khóa dự tuyển (candidate key).
 Một trong các khóa dự tuyển được chọn làm
khóa tiêu biểu, khóa này được gọi là khóa
chính (primary key).
 Một quan hệ chỉ có một khóa chính và có thể
có nhiều khóa dự tuyển.
 Trong một quan hệ, một hoặc nhiều thuộc
tính được gọi là khóa ngoại (foreign key) nếu
chúng là khóa chính của một quan hệ khác.
Cơ sở dữ liệu quan hệ
 Cơ sở dữ liệu quan hệ (relational
database) bao gồm các bảng (quan hệ)
biểu diễn các thực thể và các khóa chính /
khóa ngoại biểu diễn các mối liên kết.
Cơ sở dữ liệu quan hệ

Primary Key

Foreign Key (implements 1:N


relationship between customer and
order)

Combined, these are a composite


primary key (uniquely identifies the
order line)…individually they are
foreign keys (implement M:N
relationship between order and
product)
Cơ sở dữ liệu quan hệ

Cơ sở dữ liệu quan hệ.


Sự tương ứng với mô hình ER
 Mỗi quan hệ (bảng) tương ứng với một
kiểu thực thể hoặc với một kiểu mối liên
kết nhiều - nhiều.
 Mỗi hàng tương ứng với một thể hiện thực
thể hoặc với một thể hiện mối liên kết
nhiều - nhiều.
 Mỗi cột tương ứng với một thuộc tính.
 Từ quan hệ (relation) trong cơ sở dữ liệu
quan hệ không có cùng nghĩa với từ mối
quan hệ (relationship) trong mô hình ER.
Lược đồ cơ sở dữ liệu
 Lược đồ cơ sở dữ liệu
 database schema
 Lược đồ cơ sở dữ liệu là một tập hợp các lược
đồ quan hệ.
 Trong một lược đồ cơ sở dữ liệu, các tên
lược đồ quan hệ là duy nhất.

Lược đồ cơ sở dữ liệu:
Emp (Empnum, Name, Sal, Tax, Mgrnum, Deptnum)
Dept (Deptnum, Name, Area, Mgrnum)
Supplier (Snum, Name, City)
Supply (Snum, Pnum, Deptnum, Quan)
Biến đổi ERD thành các quan hệ
 Qui tắc 1: Biến đổi một kiểu thực thể thành
một quan hệ.
 Đối với kiểu thực thể thông thường (regular
entity type): khóa của quan hệ là khóa của
kiểu thực thể.
 Thuộc tính của quan hệ là thuộc tính của kiểu
thực thể.
 Quan hệ chỉ chứa các thuộc tính thành phần
của thuộc tính phức hợp.
 Quan hệ không chứa các thuộc tính đa trị.
Biến đổi ERD thành các quan hệ

CUSTOMER entity type with


simple attributes

CUSTOMER relation

Biến đổi kiểu thực thể thông thường


Biến đổi ERD thành các quan hệ

CUSTOMER entity type with


composite attribute

CUSTOMER relation with address detail

Biến đổi thuộc tính phức hợp


Biến đổi ERD thành các quan hệ
 Qui tắc 2: Biến đổi thuộc tính đa trị thành
một quan hệ.
 Quan hệ chứa khóa của kiểu thực thể và
thuộc tính đa trị.
 Khóa của quan hệ gồm khóa của kiểu thực
thể và thuộc tính đa trị.
Biến đổi ERD thành các quan hệ

Multivalued attribute
becomes a separate
relation with foreign key

1–to–many relationship between


original entity and new relation

Biến đổi thuộc tính đa trị


Biến đổi ERD thành các quan hệ
 Qui tắc 3: Biểu diễn mối liên kết 1-ngôi
hoặc 2-ngôi có lượng số một-một.
 Đặt khóa của kiểu thực thể bên phía bắt buộc
và các thuộc tính của mối liên kết vào quan
hệ của kiểu thực thể bên phía tùy chọn.
Biến đổi ERD thành các quan hệ

EMPLOYEE entity with


Manages relationship

EMPLOYEE relation with


recursive foreign key

Biến đổi mối liên kết một ngôi có lượng số một - một
Biến đổi ERD thành các quan hệ

Nurse_ID

Biến đổi mối liên kết hai ngôi có lượng số một - một
Biến đổi ERD thành các quan hệ
 Qui tắc 4: Biểu diễn mối liên kết 1-ngôi
hoặc 2-ngôi có lượng số một-nhiều.
 Đặt khóa của kiểu thực thể bên phía một và
các thuộc tính của mối liên kết vào quan hệ
của kiểu thực thể bên phía nhiều.
Biến đổi ERD thành các quan hệ

EMPLOYEE entity with


Manages relationship

EMPLOYEE relation with


recursive foreign key

Biến đổi mối liên kết một ngôi có lượng số một - nhiều
Biến đổi ERD thành các quan hệ

Note the mandatory one

Again, no null value in the


foreign key…this is
because of the mandatory
minimum cardinality

Biến đổi mối liên kết hai ngôi có lượng số một - nhiều
Biến đổi ERD thành các quan hệ
 Qui tắc 5: Biến đổi mối liên kết 1-ngôi hoặc
2-ngôi có lượng số nhiều-nhiều thành một
quan hệ.
 Quan hệ chứa các khóa của các kiểu thực thể
tham gia vào mối liên kết.
 Khóa của quan hệ gồm cả hai khóa của hai
kiểu thực thể.
 Thuộc tính của quan hệ là thuộc tính của mối
liên kết.
Biến đổi ERD thành các quan hệ

Bill-of-materials
relationships
(M:N)

ITEM and COMPONENT


relations

Biến đổi mối liên kết một ngôi có lượng số nhiều - nhiều
Biến đổi ERD thành các quan hệ

The Supplies
relationship will need
to become a separate
Composite primary key relation

New intersection
Foreign key relation
Foreign key

Biến đổi mối liên kết hai ngôi có lượng số nhiều - nhiều
Biến đổi ERD thành các quan hệ
 Qui tắc 6: Biến đổi mối liên kết 3-ngôi
thành một quan hệ.
 Quan hệ chứa ba khóa của ba kiểu thực thể
tham gia vào mối liên kết.
 Mối liên kết có bao nhiêu kiểu thực thể bên
phía một thì quan hệ có bấy nhiêu khóa: đối
với một kiểu thực thể bên phía một thì khóa
của quan hệ gồm cả hai khóa của hai kiểu
thực thể còn lại. Nếu không có kiểu thực thể
bên phía một thì khóa của quan hệ bao gồm
cả ba khóa của ba kiểu thực thể.
 Thuộc tính của quan hệ là thuộc tính của mối
liên kết.
Biến đổi ERD thành các quan hệ

Biến đổi mối liên kết ba ngôi


Biến đổi ERD thành các quan hệ

Biến đổi mối liên kết ba ngôi


Ví dụ:
Chuyển đổi ER ở ví dụ 1 và 2 thành các
lược đồ quan hệ
Các phép toán đại số trên quan hệ
Phép hợp 2 quan hệ (union)
- Hai quan hệ r1 và r2 là tương thích nếu
chúng được định nghĩa trên cùng một lược
đồ quan hệ.
- Cho hai quan hệ tương thích r1 và r2 . Hợp
của hai quan hệ r1 và r2 ký hiệu là r1 + r2 là
một quan hệ trên lược đồ quan hệ Q gồm các
phần tử thuộc r1 hoặc thuộc r2, tức là:
r1 + r2 = {t / t ∈ r1 hoặc t ∈ r2}
Các phép toán đại số trên quan hệ
Phép hợp 2 quan hệ (union)
Ví dụ:

r1+ r2 là
Các phép toán đại số trên quan hệ
Phép hợp 2 quan hệ (union)
- Do thứ tự trước/sau của các bộ trong các
quan hệ là không quan trọng nên ta có:
∀ r1, r2 thì r1 + r2 = r2 + r1
∀ r thì r + r = r
- Một cách tổng quát có thể lấy hợp của n
quan hệ tương thích: cho n quan hệ tương
thích r1,r2,…,rn
- Hợp của n quan hệ r1,r2,…,rn là một quan
hệ r1 + r2+ …+ rn gồm các phần tử thuộc r1
hoặc thuộc r2 … hoặc thuộc rn
Các phép toán đại số trên quan hệ
Phép giao 2 quan hệ (intersection)
- Cho lược đồ quan hệ Q(A1,A2,..,An ). r1 và
r2 là hai quan hệ tương thích trên Q.
- Giao của hai quan hệ r1 và r2 ký hiệu là r1 *
r2 là một quan hệ trên Q gồm các phần tử
vừa thuộc r1 vừa thuộc r2.
Vậy: r1 * r2 = { t / t ∈ r1 và t ∈ r2}
Ví dụ: r1*r2
Các phép toán đại số trên quan hệ
Phép trừ 2 quan hệ (Minus)
- Cho hai quan hệ tương thích r1 và r2 có tập
thuộc tính Q(A1,A2,..,An ). Hiệu của r1 cho r2
ký hiệu là r1 – r2 là một quan hệ trên Q gồm
các phần tử chỉ thuộc r1 mà không thuộc r2,
nghĩa là r1 - r2 = {t / t ∈ r1 và t ∉ r2}
Ví dụ: r1-r2
Các phép toán đại số trên quan hệ
Tích decac 2 quan hệ (Cartesian Product)
Cho hai lược đồ quan hệ
Q1(A1,A2,..,An)
Q2(B1,B2,..,Bm)
Giả sử r1 , r2 là hai quan hệ trên Q1,Q2 tương
ứng. Tích Descartes (decac) của r1 và r2 ký
hiệu là r1 x r2 là quan hệ trên lược đồ quan hệ
có tập thuộc tính Q= Q1 ∪ Q2.
Vậy quan hệ r1 x r2 là quan hệ trên lược đồ:
Q = Q1 ∪ Q2 = { A1,A2,..,An,B1,B2,..,Bm } với
r1 x r2 = {(t1,t2) : t1 ∈ r1, t2 ∈ r2 }
Các phép toán đại số trên quan hệ
Tích decac 2 quan hệ (Cartesian Product)
Ví dụ: r1x r2
Các phép toán đại số trên quan hệ
Chia 2 quan hệ
- Cho 2 lược đồ quan hệ
Q1(A1,A2,..,An)
Q2(B1,B2,..,Bm)
r là quan hệ xác định trên Q1; s là quan hệ xác
định trên Q2 (n>m và s khác rỗng), có m thuộc
tính chung (giống nhau về mặt ngữ nghĩa, hoặc
các thuộc tính có thể so sánh được) giữa r và
s. phép chia 2 quan hệ r và s ký hiệu
r ÷ s , là một quan hệ q có n - m thuộc tính
được định nghĩa như sau:
q= r ÷ s={t/ ∀ u ∈ s, (t,u) ∈ r}
Các phép toán đại số trên quan hệ
Chia 2 quan hệ
- Ví dụ:
Các phép toán đại số trên quan hệ
Phép chiếu (projection)
- Cho lược đồ quan hệ Q(A1,A2,..,An), r là
quan hệ trên Q và X ⊆ Q+.
Phép chiếu của r lên tập thuộc tính X, ký hiệu
là r[X] (hoặc r.X) sẽ tạo thành lược đồ quan hệ
r’, trong đó tập thuộc tính của r’ chính là X và
quan hệ r’ được trích từ r bằng cách chỉ lấy
các thuộc tính có trong X.
Phép chiếu chính là phép rút trích dữ liệu theo
cột.
Các phép toán đại số trên quan hệ
Phép chiếu (projection)
- Ví dụ r1 chiếu lên X={A,C} là
Các phép toán đại số trên quan hệ
Phép chọn (selection)
- Cho lược đồ quan hệ Q(A1,A2,..,An), r là một
quan hệ trên lược đồ quan hệ Q. X là một tập
con của Q+ và E là một mệnh đề logic được
phát biểu trên tập X. Phần tử t ∈ r thoả mãn
điều kiện E ký hiệu là t(E). Phép chọn từ quan
hệ r theo điều kiện E (ký hiệu là r : E )sẽ tạo
thành một quan hệ mới ký hiệu là
r(E), trong đó r(E) = {t: t ∈ r và t(E)}
- Phép chọn chính là phép rút trích dữ liệu theo
dòng
Các phép toán đại số trên quan hệ
Phép chọn (selection)
- Ví dụ r2: “F >= 6”
Các phép toán đại số trên quan hệ
Phép θ - Kết
- Cho hai lược đồ quan hệ Q1 và Q2 như sau
Q1(A1,A2,..,An)
Q2(B1,B2,..,Bm)
r và s lần lượt là hai quan hệ trên Q1 và Q2.
Ai và Bj lần lượt là thuộc tính của Q1 , Q2 sao
cho MGT(AI)= MGT(BJ). θ là một trong các phép
so sánh (=, <, >, ≤ , ≥, ≠ ) trên MGT(AI).
Các phép toán đại số trên quan hệ
Phép θ - Kết
- Phép θ kết giữa r và s theo điều kiện Ai θ Bj
ký hiệu là r |><| s là một quan hệ trên lược đồ
quan hệ có tập thuộc tính là Q1 ∪ Q2. gồm
những bộ thuộc tích Descartes của r và s.
Ai θ Bj

r |><| s = {t12 / ∃ t1 ∈ r1 , ∃ t2 ∈ r2 sao cho


t12.Q1+= t1 ; t12.Q2+= t2 ; t12.Ai θ t12.Bj }
Các phép toán đại số trên quan hệ
Phép θ - Kết
- Ví dụ

Ai là thuộc tính B, Bj là thuộc tính F và θ là


phép so sánh “>=”. Ta được kết quả là
quan hệ sau:
Các phép toán đại số trên quan hệ
Phép kết tự nhiên
- Nếu θ được sử dụng trong phép kết trên là
phép so sánh bằng (=) thì gọi là phép kết bằng.
Hơn nữa nếu AI ≡ Bj thì phép kết bằng này
được gọi là phép kết tự nhiên. Phép kết tự
nhiên là phép kết thường dùng nhất trong thực
tế.
Các phép toán đại số trên quan hệ
 Ví dụ
Cho lược đồ quan hệ Q(ABCD), r và s là hai quan hệ
được cho như sau.

Tìm r-s, r*s


Các phép toán đại số trên quan hệ
 Ví dụ
Cho lược đồ quan hệ Q1(ABC), Q2(DE).
Các phép toán đại số trên quan hệ
Ví dụ
Cho lược đồ quan hệ sau:
Sinhvien(MASV, HOTENSV, NU, NGAYSINH,
NOISINH,TINH, MALOP)
Lop(MALOP,TENLOP,MAKHOA)
Khoa(MAKHOA,TENKHOA)
Monhoc(MAMH,TENMH,DONVIHT)
Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,M
AKHOA)
Ketqua(MASV, MAMH, LANTHI,DIEMTHI)
Phancong(MALOP,MAMH,MAGV)
Các phép toán đại số trên quan hệ
Ví dụ
1.Lập danh sách các sinh viên lớp có mã lớp là
CDTH2A, danh sách cần MASV,HOTENSV
2.Lập danh sách sinh viên nữ và có mã khoa là
“CNTT”, danh sách cần MASV, HOTENSV.
3.Lập bảng điểm thi lần 1 của tất cả các môn cho sinh
viên lớp CDTH2A, danh sách cần MASV, HOTENSV,
TENMH, DIEMTHI.
4.Lập phiếu điểm thi lần 1 các môn cho sinh viên có
MASV=”00CDTH189”. danh sách cần MAMH,TENMH,
DONVIHT, DIEMTHI.
Các phép toán đại số trên quan hệ
 Ví dụ
1. Sinhvien: MALOP=”CDTH2A” [MASV,HOTENSV]
MALOP

2. (Sinhvien|><| Lop: NU and MAKHOA=”CNTT”)


[MASV,HOTENSV]
MASV MAMH
3. (((Sinhvien |><| Ketqua ) |><| Monhoc): MALOP =
“CDTH2A” and
LANTHI=1) [MASV,HOTENSV,TENMH, DIEMTHI]
MAMH

4. (Ketqua |><| Monhoc : MASV=‘00CDTH189' and


LANTHI=1)
[MAMH,TENMH,DONVIHT,DIEMTHI]
Các phép toán đại số trên quan hệ
 Ví dụ
Cho lược đồ quan hệ
Sinhvien(MASV, HOTENSV, NU, NGAYSINH,
NOISINH,TINH,MALOP)
Lop(MALOP,TENLOP, MAKHOA)
Khoa(MAKHOA,TENKHOA)
Monhoc(MAMH,TENMH,DONVIHT)
Giangvien(MAGV,HOTENGV,HOCVI,CHUYENN
GANH,MAKHOA)
Ketqua(MASV, MAMH, LANTHI, DIEMTHI)
Phancong(MALOP,MAMH,MAGV)
Các phép toán đại số trên quan hệ
 Ví dụ
a. Lập danh sách những sinh viên có hộ khẩu thường
trú ở tỉnh “LONG AN”, danh sách cần các
thông tin: MASV, HOTENSV, NGAYSINH, TENLOP
b. Lập danh sách các sinh viên của lớp có MALOP là
CDTH2A, danh sách cần các thông tin:
MASV, HOTENSV, NGAYSINH, TINH.
c. Lập danh sách các giảng viên có cấp học vị là THAC
SY của khoa có MAKHOA là “CNTT”,
danh sách cần: MAGV,HOTENGV, CHUYENNGANH.
d. Lập bảng điểm thi lần 1 môn học “869” cho tất cả
sinh viên thuộc hai lớp có MALOP là
“CĐTH2A” và “CĐTH2B”, danh sách cần:
MASV,HOTENSV,DIEMTHI.

You might also like