ĐỀ CƯƠNG CƠ SỞ DỮ LIỆUMô tả tài liều: Đây là tài liệu tổng lý thuyết cơ sở dữ liệu theo giáo trình môn Cơ sở dữ liệu của trường Đại học Mở thành phố Hồ Chí Minh. Lý thuyết đã được tóm gọn trọng tâm, có thể giúp bạn đạt được 3 chấm trở lên.
Trang 1Chương 1:
Cơ sở dữ liệu:
Là tập hợp dữ liệu
Có tính chia sẻ
Chứa dữ liệu quan hệ logic
Chứa phần tử miêu tả (mục lục dữ liệu dữ liệu)
Được thiết kế khi có nhu cầu
Chương 2:
Mô hình thực thể mối kết hợp (ER) (ch3)
Mô hình quan hệ (RDM) (ch4)
Chương 3: Mô hình thực thể mối kết hợp
Tập thực thể
Tập thực thể yếu
Kiểu liên kết
Kiểu liên kết hỗ trợ
Thuộc tính
Thuộc tính khóa Không được phép trùng
Thuộc tính đa trị Có thể có nhiều hơn 1 trị
cho 1 thể hiện của thực thể Thuộc tính tổ hợp
Thuộc tính dẫn xuất Trị của nó có thể tính được
từ các thuộc tính khác //Trong 1 thực thể không có khóa chính: tạo 1 khóa chính, là thực thể yếu và phụ thuộc thực thể khác, nhận khóa chính của thực thể kia
Trang 20 º
1 |
N <
Chương 4: Mô hình dữ liệu quan hệ
Mối liên kết 1.n: thuộc tính khóa bên 1 làm khóa ngoại bên nhiều
Mối liên kết 1.1: thuộc tính khóa bên này làm khóa ngoại bên kia nếu không có giá trị tối
thiểu/ tối đa (tối thiểu là 1 sẽ đưa qua tối thiểu là 0)
Mối liên kết n.n: tạo thành quan hệ mới có khóa chính gồm 2 thuộc tính khóa của 2
quan hệ tạo thành nó Thuộc tính mối kết hợp (nếu có) trở thành thuộc tính quan hệ mới
Thuộc tính đa trị: tạo thành quan hệ mới có khóa chính gồm thuộc tính đa trị và thuộc
tính khóa của thực thể
#: khóa ngoại
Chương 5: Đại số quan hệ và phép toán quan hệ
ĐẠI SỐ QUAN HỆ
5 toán tử cơ bản: Chọn, Chiếu, Tích đề các, Hội, Trừ
Toán tử khác: Kết, Giao, Chia
So sánh 2 bảng:
Hội, Giao, Trừ: tương thích
Tích đề các: khác / giống
Kết, Chia: có ít nhất 1 thuộc tính chung
Phép toán so sánh: ==; ! = (ℎ𝑜ặ𝑐 <>); <; <=; >; >=
Phép toán luận lý: 𝑛𝑜𝑡 (¬); 𝑎𝑛𝑑( ); 𝑜𝑟 ( )
Phép chọn:𝜎đ𝑖ề𝑢 𝑘𝑖ệ𝑛(𝑅) dòng
Phép chiếu: 𝜋𝑐𝑜𝑙1,…,𝑐𝑜𝑙𝑛(𝑅) cột
Phép hội: 𝑅 ∪ 𝑆 hoặc
Phép giao: 𝑅 ∩ 𝑆 và
Phép trừ: 𝑅 − 𝑆
Phép tích đề-các: 𝑅 X 𝑆 không trả lời đúng kết hợp phép chọn
Phép kết (Phép tích đề-các và phép chọn): dùng phép tích đề-các rồi phép chọn
Trang 3 Phép kết theta: 𝑅 ⨝ 𝑆
Phép kết tương đương:
Phép kết tự nhiên:
Phép kết ngoài:
Phép nửa kết:
Phép chia: 𝑅 ÷ 𝑆
PHÉP TOÁN QUAN HỆ
Chương 6: Thao tác dữ liệu với ngôn ngữ sql
Gtri hằng không phải số phải nằm trong nháy đơn
{}: bắt buộc có; []: ko bắt buộc
CÂU LỆNH SELECT
SELECT {*|tên cột muốn có [AS tên mới]} //các cột muốn có trong kq
FROM tên bảng [bí danh] //các bảng được dùng
[WHERE đk] //điều kiện lọc các hàng dl
[GROUP BY ds cột] //tạo nhóm các hàng có gtri giống nhau ở 1/nhiều cột
[HAVING đk cho nhóm] //đk lọc để lấy 1 số nhóm
[ORDER BY ds cột] //sắp thứ tự các hàng trong kq (ASC: tăng; DESC: giảm)
PHÉP TOÁN TRÊN MỘT QUAN HỆ
Phép chọn: SELECT * FROM R WHERE C (quan hệ R, điều kiện C)
Phép chiếu: SELECT L FROM R (thuộc tính chiếu L)
DISTINCT: loại bỏ dl trùng lặp //SELECT DISTINCT …
TênCột BETWEEN a AND b hoặc TênCột >=a AND TênCột <=b: [a, b]
TênCột IN (a, b) hoặc TênCột =a OR TênCột =b: chọn hàng có dl giống 1 trong 2 gtri
LIKE: tìm một mẫu được chỉ định
%: chuỗi từ 0 đến nhiều ký tự (%a: kết thúc với “a”; a%%: bắt đầu là “a” và có ít nhất 2 kí tự; a%o: bắt đầu là “a” và kết thúc là “o”)
_ (gạch dưới): đại diện 1 ký tự (_r%: có “r” ở vị trí thứ 2)
Trang 4 NULL: IS NULL / IS NOT NULL
CÁC HÀM THỐNG KÊ TRONG LỆNH SELECT (dùng sau SELECT và HAVING)
COUNT, MIN, MAX: dùng cho gtri số / không phải số
SUM, AVG: gtri số
COUNT (*): đếm tất cả các hàng kể cả NULL và trùng lặp
GROUP BY: Nếu sau SELECT có dùng hàm thống kê thì thường phải có GROUP
BY (nếu chỉ có các hàm thống kê thì ko cần, ngược lại thì GROUP BY các hàng không nằm trong các hàm thống kê)
HAVING: kết hợp với GROUP BY để giới hạn nhóm các hàng trả về
Truy vấn con: SELECT ở truy vấn con phải giống với điều kiện lấy của truy vấn cha;
có thể đặt trong mệnh đề WHERE, FROM, SELECT
ANY / SOME: đk TRUE khi nó thỏa với bất kỳ gtri nào của truy vấn con
ALL: đk TRUE khi nó thỏa với tất cả gtri của truy vấn con
o Nếu truy vấn con rỗng: ALL trả về TRUE, ANY trả về FALSE
SELECT … FROM …
WHERE TênCột1 > SOME/ANY/ALL (SELECT TênCột1 FROM… WHERE…)
EXISTS: chỉ TRUE khi và chỉ khi truy vấn con có tồn tại ít nhất 1 hàng; FALSE
khi truy vấn con có kq rỗng
NOT EXISTS: gtri ngược với EXISTS
SELECT … FROM …
WHERE EXISTS (SELECT * FROM… WHERE…)
PHÉP TOÁN TẬP HỢP
Khả hợp: cùng số thuộc tính và cùng miền gtri
Các bộ dl trùng sẽ bị loại bỏ ra khỏi kết quả của các phép toán tập hợp
Phép giao (INTERSECT): thuộc đồng thời cả 2 //đc thực hiện trc hết
Phép hội (UNION): tất cả //UNION ALL sẽ trả lại toàn bộ kể cả kq trùng
Phép trừ (EXCEPT): Chỉ thuộc quan hệ này, ko thuộc quan hệ kia
(SELECT TênCột FROM… WHERE…)
UNION/ INTERSECT/ EXCEPT (SELECT TênCột FROM… WHERE…)
Trang 5TRUY VẤN NHIỀU BẢNG
Dữ liệu lấy từ nhiều bảng thì kết bảng, khi đó liệt kê các bảng tham gia phép kết vào FROM
Bí danh đứng sau tên bảng
SELECT… FROM bang1 a, bang2 b WHERE a TênCột1 = b TênCột1
Câu lệnh sql thực hiện phép tích đề các
SELECT {*|columnList}
FROM table1 CROSS JOIN table2
https://quantrimang.com/join-trong-sql-server-147627
JOIN: trả về các hàng có trong cả 2 bảng
LEFT (RIGHT) JOIN: trả về các hàng nằm ở bảng bên trái (phải) và chỉ lấy ở các bảng còn lại những hàng đáp ứng được đk
FULL JOIN: trả về toàn bộ hàng ở bảng trái và phải
SELECT cột
FROM bảng1 LEFT/ RIGHT/ FULL [OUTER] JOIN bảng2
ON bảng1 Cột = bảng2 Cột
INSERT INTO TênBảng [(cột i)] VALUES (gtri i): thêm 1 hàng vào bảng (thêm đủ
dl cho các cột bắt buộc nhập dl)
INSERT INTO TênBảngA [(cột i)] SELECT (cột i) FROM TênBảngB [WHERE
đk]: thêm dữ liệu là kết quả của lệnh SELECT vào 1 bảng đã có sẵn (thêm nhiều dòng vào bảng đã có)
SELECT INTO…: thêm dl từ câu truy vấn vào 1 bảng mới
UPDATE TênBảng SET cột i= gtri i [WHERE đk]: chỉnh sửa
DELETE FROM TênBảng [WHERE đk]: xóa dữ liệu trong bảng
CASE…END […]: thay đổi mệnh đề xuất ra của SELECT
CASE biểu thức sẽ được so sánh với từng
gtri của biểu thức i
WHEN biểu thức i THEN kết quả i
ELSE kết quả khác
END
SELECT Country, CASE Country
WHEN ‘USA’ THEN N ‘MỸ’ ELSE Country //còn lại để nguyên END AS N ’Quốc gia’
FROM EMPLOYEES
Trang 6Chương 7: Định nghĩa dữ liệu với ngôn ngữ sql
https://giasutinhoc.vn/database/co-so-du-lieu/cai-dat-co-so-du-lieu-bai-4-2/
//các kiểu dl
Các loại CONSTRAINT
NOT NULL
Position VARCHAR(10) NOT NULL
Sử dụng để đảm bảo dữ liệu của cột không được nhận giá trị NULL
DEFAULT
DEFAULT (1) FOR SoLuong
NgayVay date DEFAULT GETDATE()
Gán giá trị mặc định trong trường hợp dữ liệu của cột không được nhập vào hay không được xác định (1 bảng: nhiều; 1 cột: chỉ 1)
UNIQUE
//ghi như PRIMARY KEY Sử dụng để đảm bảo dữ liệu của cột là duy nhất, không trùng lặp giá trị trên cùng 1
cột
PRIMARY KEY
(Khóa chính)
SoHoaDon int PRIMARY KEY
PRIMARY KEY (SoHoaDon, MaHang)
Dùng để thiết lập khóa chính trên bảng, xác định giá trị trên tập các cột làm khóa chính phải là duy nhất, không được trùng lặp Việc khai báo ràng buộc khóa chính yêu cầu các cột phải NOT NULL
FOREIGN KEY
(Khóa ngoại)
CONSTRAINT fk_ten
FOREIGN KEY (cộtCon i)
REFERENCES bảngMẹ (cộtMẹ i)
Dùng để thiết lập khóa ngoại trên bảng, tham chiếu đến bảng khác thông qua giá trị của cột được liên kết Giá trị của cột được liên kết phải là duy nhất trong bảng kia
CHECK
CHECK (sex IN (‘M’, ‘F’)) Bảo đảm tất cả giá trị trong cột thỏa mãn điều kiện nào đó Đây là hình thức sử
dụng phổ biến để kiểm tra tính hợp lệ của
dữ liệu (validate data)
CREATE TABLE table name //tạo bảng
( column i dataType, …
);
Trang 7 ALTER TABLE tênBảng
ADD tênCột địnhNghĩaCột; //thêm cột Hoặc ALTER tênCột DROP/SET DEFAULT (gtri); //xóa/đặt gtri cho cột Hoặc ALTER COLUMN tênCột kiểuCột; //chỉnh sửa cột
Hoặc DROP COLUMN tênCột; //xóa cột
Hoặc ADD CONSTRAINT tênRàngBuộc
DEFAULT (gtri) FOR tênCột; //thêm ràng buộc Hoặc DROP CONSTRAINT tênRàngBuộc; //xóa ràng buộc
DROP TABLE TênBảng: xóa dữ liệu và cả bảng
DECLARE @tênGánChoBiến dataType [=gtri mặc định gán cho biến]
VIEW
CREATE VIEW tênView AS //tạo view
SELECT cột 1, cột 2, …
FROM tênBảng
[WHERE đk;]
DROP VIEW tênView //xóa view
WITH CHECK OPTION; //đảm bảo rằng tất cả UPDATE & INSERT thỏa đk trong view
//////còn nhiều thứ nhưng thấy ko thi GK nên bỏ :)
Chương 8: Chuẩn hóa cơ sở dữ liệu
Phụ thuộc hàm: A & B là các thuộc tính của quan hệ R,B phụ thuộc hàm A (A xác định B) ký hiệu: A B
Bao đóng của tập X (𝑋+): tập chứa phụ thuộc hàm sinh ra từ phụ thuộc hàm X
(tìm bao đóng tìm khóa của qh R; bao đóng xđ đc hết kq R có thể là khóa chính)
TIỀN ĐỀ AMSTRONG:
1 B là tập con của A: AB
2 AB: A,CB,C
3 AB, BC: AC
4 Hợp: XY, XZ: XYZ
5 Chiếu: XYZ; XY
6 Bắc cầu giả: XY, YZW: XZW
Trang 8Bao đóng của tập phụ thuộc hàm F (𝐹+): tập phụ thuộc hàm nhỏ nhất chứa F, ko thể áp dụng Amstrong
Tập thuộc tính nguồn (TN): thuộc tính ko có ở 2 vế và thuộc tính chỉ có ở vế trái
Tập thuộc tính đích (TD): thuộc tính chỉ có ở vế trái
Tập thuộc tính trung gian (TG): thuộc tính có ở cả 2 vế
Thuật toán:
B1: tìm TN, TG
B2: TN= rỗngK= TN, kết thúc Ngược lại B3
B3: tìm tập con Xi của TG
B4: tìm siêu khóa Si: TN Xi
B5: tìm khóa bằng cách loại bỏ các siêu khóa ko tối thiểu (Si Sj loại Sj)
Ex: R (A,B,C,D,E,F) DB; AC; ADE; CF
TN= {D, A}; TG= {C}={, C} //dòng này bao gồm 3 bước 1,2,3
//B4: 𝐷𝐴 += {D, A, B, C, E, F} //khi tìm khóa chính thì cho bằng chính TN trc
𝐷𝐴𝐶 += {D, A, B, C, E, F}
//B5: DA DAC DA là khóa của R
Dạng chưa chuẩn hóa (UNF): bảng chứa 1/ nhiều nhóm lặp
Dạng chuẩn 1 (1NF): 1 ô dl1 gtri đơn trị
Dạng chuẩn 2 (2NF): 1NF, thuộc tính ko phải khóa phải phụ thuộc hàm đầy đủ
vào khóa (vế trái là SK, hoặc vế trái ko nằm trong khóa)
Dạng chuẩn 3 (3NF): 2NF, ko có phụ thuộc hàm bắc cầu vào khóa (vế trái là SK, hoặc vế phải có thuộc tính nằm trong khóa)
Dạng chuẩn BC (BCNF): vế trái là siêu khóa