Co so du lieu SQL
Chia sẻ bởi Nguyễn Trần Vũ |
Ngày 29/04/2019 |
48
Chia sẻ tài liệu: co so du lieu SQL thuộc Bài giảng khác
Nội dung tài liệu:
Khoa HTTT-Đại học CNTT
1
Đại học Công Nghệ Thông Tin
Môn: Cơ Sở Dữ Liệu
Thời lượng: 45LT+30TH
Khoa HTTT-Đại học CNTT
2
Nội dung
Bài 1: Các khái niệm của một hệ CSDL
Bài 2: Các mô hình CSDL
Bài 3: Mô hình dữ liệu quan hệ (của Codd)
Bài 4: Ngôn ngữ đại số quan hệ
Bài 5: Ngôn ngữ SQL
Bài 6: Ngôn ngữ tân từ
Bài 7: Ràng buộc toàn vẹn trong một CSDL
Bài 8: Tối ưu hóa câu hỏi bằng đại số quan hệ
Khoa HTTT-Đại học CNTT
3
Bài 1: Các khái niệm của một hệ CSDL
Khoa HTTT-Đại học CNTT
4
Bài 1: Các khái niệm của một hệ CSDL
Giới thiệu
Hệ thống tập tin (File System)
Định nghĩa một CSDL
Các đối tượng sử dụng CSDL
Hệ quản trị CSDL
Các mức của một CSDL
Khoa HTTT-Đại học CNTT
5
1. Giới thiệu
Tại sao cần phải có một cơ sở dữ liệu?
Khoa HTTT-Đại học CNTT
6
2. Hệ thống tập tin
Là tập hợp các tập tin riêng lẻ phục vụ cho một mục đích của đơn vị sử dụng.
Ưu điểm:
Triển khai ứng dụng nhanh
Khả năng đáp ứng nhanh chóng, kịp thời (vì chỉ phục vụ cho mục đích hạn hẹp)
Khuyết điểm:
Trùng lắp dữ liệu lãng phí, dữ liệu không nhất quán
Chi phí cao
Chia sẽ dữ liệu kém
Khoa HTTT-Đại học CNTT
7
3. Cơ sở dữ liệu (1)
Định nghĩa:
Cơ sở dữ liệu là một hệ thống các thông tin có cấu trúc, được lưu trữ trên các thiết bị lưu trữ nhằm thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với những mục đích khác nhau
Khoa HTTT-Đại học CNTT
8
3. Cơ sở dữ liệu (2)
Ưu điểm:
Giảm trùng lắp thông tin xuống mức thấp nhất, đảm bảo tính nhất quán và toàn vẹn dữ liệu.
Đảm bảo dữ liệu được truy xuất theo nhiều cách khác nhau.
Khả năng chia sẽ thông tin cho nhiều người, nhiều ứng dụng khác nhau.
Khoa HTTT-Đại học CNTT
9
3. Cơ sở dữ liệu (3)
Những vấn đề cần giải quyết:
Tính chủ quyền dữ liệu.
Tính bảo mật và quyền khai thác thông tin của người sử dụng
Tranh chấp dữ liệu
Đảm bảo dữ liệu khi có sự cố
Khoa HTTT-Đại học CNTT
10
4. Các đối tượng sử dụng
Người sử dụng CSDL không chuyên về lĩnh vực tin học và CSDL -> cần công cụ để họ có thể khai thác CSDL khi cần.
Chuyên viên tin học xây dựng các ứng dụng để phục vụ cho các mục đích quản lý
Quản trị CSDL: tổ chức CSDL, bảo mật, cấp quyền, sao lưu, phục hồi dữ liệu, giải quyết các tranh chấp dữ liệu …
Khoa HTTT-Đại học CNTT
11
5. Hệ quản trị cơ sở dữ liệu (1)
Hệ quản trị cơ sở dữ liệu (DBMS – DataBase Management System) là hệ thống các phần mềm hỗ trợ tích cực cho các nhà phân tích, thiết kế và khai thác CSDL.
Các DBMS thông dụng: Visual FoxPro, Microsoft Access, SQL Server, DB2, Oracle … hầu hết các DBMS hiện nay đều dựa trên mô hình quan hệ.
Khoa HTTT-Đại học CNTT
12
5. Hệ quản trị cơ sở dữ liệu (2)
Một DBMS phải có:
Ngôn ngữ giao tiếp giữa người sử dụng và CSDL
Từ điển dữ liệu (Data Dictionary)
Có biện pháp bảo mật khi có yêu cầu
Cơ chế giải quyết tranh chấp dữ liệu
Có cơ chế sao lưu (backup), phục hồi (restore)
Đảm bảo tính độc lập giữa dữ liệu và chương trình
Khoa HTTT-Đại học CNTT
13
5. Hệ quản trị cơ sở dữ liệu (3)
Ngôn ngữ giao tiếp:
Ngôn ngữ mô tả dữ liệu (DDL – Data Definition Language): cho phép khai báo cấu trúc CSDL, các mối liên hệ của dữ liệu, các quy định, ràng buộc dữ liệu.
Ngôn ngữ thao tác dữ liệu (DML – Data Manipulation Language): cho phép thực hiện thao tác thêm, xóa, sửa dữ liệu.
Ngôn ngữ truy vấn có cấu trúc (SQL – Structured Query Language): cho phép người khai thác sử dụng để truy vấn thông tin cần thiết.
Ngôn ngữ quản lý dữ liệu (DCL – Data Control Language) cho phép thay đổi cấu trúc bảng, khai báo bảo mật, cấp quyền cho người sử dụng.
Khoa HTTT-Đại học CNTT
14
6. Các mức biểu diễn 1 CSDL
Mức trong: (mức vật lý – Physical) là mức lưu trữ CSDL (cần giải quyết vấn đề gì? Dữ liệu gì? Lưu trữ như thế nào? ở đâu? Cần các chỉ mục gì? Truy xuất tuần tự hay ngẫu nhiên. Dành cho người quản trị và người sử dụng chuyên môn.
Mức quan niệm: (Conception hay Logical) cần phải lưu trữ bao nhiêu loại dữ liệu? là dữ liệu gì? mối quan hệ
Mức ngoài: của người sử dụng và các chương trình ứng dụng
Khoa HTTT-Đại học CNTT
15
6. Các mức biểu diễn 1 CSDL
Cấu trúc
ngoài 1
Cấu trúc
ngoài 2
Cấu trúc
ngoài n
Chương trình ứng dụng n
Mức
quan
niệm
hoặc
mức
logic
Mức vật lý –
Cấu trúc vật lý
CSDL
Môi trường
thực thế giới
thực
NSD1
NSD2
Khoa HTTT-Đại học CNTT
16
Bài 2: Các mô hình dữ liệu
Khoa HTTT-Đại học CNTT
17
Nội dung
Giới thiệu
Mô hình dữ liệu mạng
Mô hình thực thể mối kết hợp
Khoa HTTT-Đại học CNTT
18
1. Giới thiệu
Mô hình dữ liệu là sự trừu tượng hóa của môi trường thực, biểu diễn dữ liệu ở mức quan niệm. Giới thiệu một số mô hình như:
Mô hình dữ liệu mạng
Mô hình dữ liệu phân cấp
Mô hình dữ liệu thực thể mối kết hợp
Mô hình dữ liệu quan hệ
Mô hình dữ liệu hướng đối tượng
Khoa HTTT-Đại học CNTT
19
2. Mô hình dữ liệu mạng (1)
Mô hình dữ liệu mạng (Network Data Model) còn gọi tắt là mô hình mạng hoặc mô hình lưới là mô hình được biểu diễn bởi một đồ thị có hướng.
Mẫu tin (record)
Loại mẫu tin
Loại liên hệ (set type)
Bản số
Khoa HTTT-Đại học CNTT
20
2. Mô hình dữ liệu mạng (2)
Mẫu tin: mô tả 1 đối tượng trong thế giới thực.
(‘NV001’,’Nguyen Lam’,’Nam’,’10/10/1970’,’Dong Nai’)
Loại mẫu tin: là 1 tập các mẫu tin có cùng tính chất. Ví dụ: NHANVIEN
Ký hiệu:
Loại liên hệ: mô tả sự liên kết giữa 1 loại mẫu tin chủ và 1 loại mẫu tin thành viên
Ký hiệu:
NHANVIEN
Tham gia
CONGVIEC
Khoa HTTT-Đại học CNTT
21
2. Mô hình dữ liệu mạng (3)
Bản số: chỉ ra số lượng các mẫu tin tham gia trong mối liên hệ
(1:1) (one-to-one): mỗi mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên.
(1:n) (one-to-many): mỗi mẫu tin của loại mẫu tin chủ kết hợp với 1 hay nhiều mẫu tin thành viên.
(n:1) (many-to-one): nhiều mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên.
(Recursive): một loại mẫu tin chủ cũng có thể đồng thời là loại mẫu tin thành viên với chính nó. Loại liên hệ này là Đệ quy
Khoa HTTT-Đại học CNTT
22
2. Mô hình dữ liệu mạng (4)
PHONG
CONGVIEC
NHANVIEN
LYLICH
gồm
có
quản lý
trực tiếp
cùng làm
n:1
1:1
1:n
1:n
Khoa HTTT-Đại học CNTT
23
2. Mô hình dữ liệu mạng (5)
Mô hình dữ liệu mạng:
Tương đối đơn giản
Dễ sử dụng
Không thích hợp biểu diễn CSDL có quy mô lớn
Khả năng diễn đạt ngữ nghĩa kém
Khoa HTTT-Đại học CNTT
24
2. Mô hình dữ liệu mạng (6)
Bài tập:
Xây dựng mô hình dữ liệu mạng cho cơ sở dữ liệu quản lý bán hàng trong một siêu thị (giáo viên mô tả hiện trạng, xác định các yêu cầu)
Khoa HTTT-Đại học CNTT
25
3. Mô hình thực thể mối kết hợp
3.1 Giới thiệu
3.2 Loại thực thể, thực thể
3.3 Thuộc tính của loại thực thể
3.4 Khoá của loại thực thể
3.5 Loại mối kết hợp, mối kết hợp
3.6 Thuộc tính của loại mối kết hợp
3.7 Bản số
3.8 Mô hình ER mở rộng
Khoa HTTT-Đại học CNTT
26
3.1 Giới thiệu
Mô hình thực thể mối kết hợp (Entity-Relationship Model viết tắc ER) được CHEN giới thiệu năm 1976.
Mô hình ER được sử dụng nhiều trong thiết kế dữ liệu ở mức quan niệm.
Khoa HTTT-Đại học CNTT
27
3.2 Loại thực thể
Định nghĩa: loại thực thể (Entity Type) là những loại đối tượng hay sự vật của thế giới thực tồn tại cụ thể cần được quản lý.
Ví dụ : HOCVIEN, LOP, MONHOC, …
Ký hiệu:
HOCVIEN
LOP
Khoa HTTT-Đại học CNTT
28
3.2 Thực thể (Entity)
Định nghĩa: thực thể là một thể hiện hoặc một đối tượng của một loại thực thể.
Ví dụ: Loại thực thể là HOCVIEN có các thực thể:
(‘HV001’, ‘Nguyen Nam’, ‘1/2/1987’,’Nam’)
(‘HV002’, ‘Trần Nam’, ‘13/2/1987’, ‘Nam’)
Khoa HTTT-Đại học CNTT
29
3.3 Thuộc tính của loại thực thể
(Entity Attribute)
Định nghĩa: thuộc tính là những tính chất đặc trưng của loại thực thể cần lưu trữ.
Ví dụ: Loại thực thể HOCVIEN có các thuộc tính: Mã học viên, họ tên, giới tính, ngày sinh, nơi sinh
Ký hiệu:
HOCVIEN
Hoten
Gioitinh
Mahv
Ngaysinh
Noisinh
Khoa HTTT-Đại học CNTT
30
3.3 Các loại thuộc tính (1)
Đơn trị (Simple): mỗi thực thể chỉ có một giá trị ứng với các thuộc tính.
Ví dụ: Mahv,Hoten
Đa hợp (Composite): thuộc tính có thể được tạo thành từ nhiều thành phần.
Ví dụ: DCHI(SONHA,DUONG,PHUONG,QUAN) hay thuộc tính HOTEN(HO,TENLOT,TEN).
Đa trị (Multi-valued): thuộc tính có thể có nhiều giá trị đối với một thực thể.
Ví dụ: BANGCAP ký hiệu {BANGCAP}
Khoa HTTT-Đại học CNTT
31
3.3 Các loại thuộc tính (2)
Tóm lại, các thuộc tính đa hợp và đa trị có thể lồng nhau tùy ý.
Ví dụ: thuộc tính BANGCAP của HOCVIEN là một thuộc tính đa hợp được ký hiệu bằng
{BANGCAP(TRUONGCAP,NAM,KETQUA,
CHUYENNGANH)}
Khoa HTTT-Đại học CNTT
32
3.4. Khoá của loại thực thể
(entity type key)
Khóa của loại thực thể là thuộc tính nhận diện thực thể.
Căn cứ vào giá trị của khóa có thể xác định duy nhất một thực thể.
Ví dụ:
Mỗi học viên có một mã số duy nhất => Khoá của loại thực thể HOCVIEN là Mã học viên
Khoa HTTT-Đại học CNTT
33
Định nghĩa: loại mối kết hợp là sự kết hợp giữa hai hay nhiều loại thực thể
Ví dụ: giữa hai loại thực thể HOCVIEN và LOP có loại mối kết hợp THUOC
Ký hiệu: bằng một hình oval hoặc hình thoi
3.5 Loại mối kết hợp (1)
(relationship type)
Khoa HTTT-Đại học CNTT
34
3.5 Loại mối kết hợp (2)
Giữa hai loại thực thể có thể tồn tại nhiều hơn một loại mối kết hợp.
Ví dụ
Khoa HTTT-Đại học CNTT
35
3.5 Số ngôi của loại mối kết hợp (relationship degree)
Số ngôi của loại mối kết hợp là số loại thực thể tham gia vào loại mối kết hợp đó.
Ví dụ 1: Loại mối kết hợp Thuộc kết hợp 2 loại thực thể HOCVIEN và LOP nên có số ngôi là 2.
Ví dụ 2: Loại mối kết hợp Giảng dạy kết hợp 3 loại thực thể GIAOVIEN, MONHOC, LOP nên có số ngôi là 3.
Khoa HTTT-Đại học CNTT
36
3.5 Số ngôi của loại mối kết hợp
Khoa HTTT-Đại học CNTT
37
3.6 Thuộc tính của loại mối kết hợp
(relationship type attribute)
Thuộc tính của loại mối kết hợp bao gồm các thuộc tính khoá của các loại thực thể tham gia vào loại mối kết hợp đó. Ngoài ra còn có thể có thêm những thuộc tính bổ sung khác.
Ví dụ: Loại mối kết hợp Giảng dạy giữa ba loại thực thể GIAOVIEN, MONHOC và LOP có các thuộc tính là Magv,Mamh,Malop, ngoài ra còn có thuộc tính riêng là Hocky, Nam
Khoa HTTT-Đại học CNTT
38
Hocky
Nam
Khoa HTTT-Đại học CNTT
39
3.7 Bản số
(relationship cardinality)
Loại mối kết hợp thể hiện liên kết giữa các thực thể, mỗi liên kết được gọi là một nhánh.
Định nghĩa: bản số của nhánh là số lượng tối thiểu và số lượng tối đa các thực thể thuộc nhánh đó tham gia vào loại mối kết hợp.
Ký hiệu: (bản số tối thiểu, bản số tối đa)
Ví dụ: Loại thực thể NhanVien và DeAn có loại mối kết hợp ThamGia.
Khoa HTTT-Đại học CNTT
40
Khoa HTTT-Đại học CNTT
41
(1,1)
(1,n)
(0,1)
(1,1)
Khoa HTTT-Đại học CNTT
42
3.7 Mô hình ER mở rộng
3.7.1 Chuyên biệt hoá / Tổng quát hóa
3.7.2 Mối kết hợp đệ quy
3.7.3 Loại thực thể yếu
Khoa HTTT-Đại học CNTT
43
3.7.1 Chuyên biệt hóa (tổng quát hóa)
ConNguoi
HocVi
NgayVL
NgayNH
Khóa
SoCMND
HoTen
...
Khoa HTTT-Đại học CNTT
44
3.7.2 Mối kết hợp đệ quy
Định nghĩa: là loại mối kết hợp được tạo thành từ cùng một loại thực thể (hay một loại thực thể có loại mối kết hợp với chính nó)
Ví dụ: Mỗi nhân viên có một người quản lý trực tiếp và người quản lý đó cũng là một nhân viên
Khoa HTTT-Đại học CNTT
45
Định nghĩa:
Là loại thực thể không có thuộc tính khóa
Phải tham gia trong một loại mối kết hợp xác định trong đó có một loại thực thể chủ.
Ký hiệu:
Ví dụ: loại thực thể LANTHI có thuộc tính Lần và tham gia trong loại mối kết hợp Thi với loại thực thể HOCVIEN và MONHOC là loại thực thể yếu.
Thực thể
3.7.3 Loại thực thể yếu
Khoa HTTT-Đại học CNTT
46
3.7.3 Loại thực thể yếu
HOCVIEN
LANTHI
(1,n)
(1,n)
MONHOC
(1,n)
Khoa HTTT-Đại học CNTT
47
Bài tập
Xây dựng mô hình ER
Xây dựng mô hình ER cho CSDL quản lý giáo vụ gồm có các chức năng sau:
Lưu trữ thông tin: Học viên , giáo viên, môn học
Xếp lớp cho học viên, chọn lớp trưởng cho lớp
Phân công giảng dạy: giáo viên dạy lớp nào với môn học gì, ở học kỳ, năm học nào.
Lưu trữ kết quả thi: học viên thi môn học nào, lần thi thứ mấy, điểm thi bao nhiêu.
Khoa HTTT-Đại học CNTT
48
Bài 3: Mô hình dữ liệu quan hệ
(Relational Data Model)
Khoa HTTT-Đại học CNTT
49
Giới thiệu
Các khái niệm
2.1 Thuộc tính
2.2 Quan hệ
2.3 Bộ giá trị
2.4 Thể hiện của quan hệ
2.5 Tân từ
2.6 Phép chiếu
2.7 Khóa
2.8 Lược đồ quan hệ và lược đồ CSDL
2.9 Hiện thực mô hình ER bằng mô hình dữ liệu quan hệ.
Nội dung
Khoa HTTT-Đại học CNTT
50
1. Giới thiệu
Mô hình Dữ liệu Quan hệ (Relational Data Model) dựa trên khái niệm quan hệ.
Quan hệ là khái niệm toán học dựa trên nền tảng hình thức về lý thuyết tập hợp.
Mô hình này do TS. E. F. Codd đưa ra năm 1970.
Khoa HTTT-Đại học CNTT
51
2.1 Thuộc tính (attribute)
Thuộc tính:
Tên gọi: dãy ký tự (gợi nhớ)
Kiểu dữ liệu: Số, Chuỗi, Thời gian, Luận lý, OLE.
Miền giá trị: tập giá trị mà thuộc tính có thể nhận. Ký hiệu miền giá trị của thuộc tính A là Dom(A).
Ví dụ:GIOITINH kiểu dữ liệu là Chuỗi,miền giá trị
Dom(GIOITINH)=(‘Nam’,’Nu’)
Tại một thời điểm, một thuộc tính không có giá trị hoặc chưa xác định được giá trị => giá trị Null
Khoa HTTT-Đại học CNTT
52
2.2 Quan hệ (relation)
Định nghĩa: quan hệ là một tập hữu hạn các thuộc tính.
Ký hiệu:
Trong đó Q là tên quan hệ, là tập các thuộc tính của quan hệ Q
Ví dụ:
HOCVIEN (Mahv, Hoten, Ngsinh, Gioitinh, Noisinh, Malop)
LOP (Malop, Tenlop, Siso, Trglop, Khoa)
Khoa HTTT-Đại học CNTT
53
2.3 Bộ (tuple)
Định nghĩa: Bộ là các thông tin của một đối tượng thuộc quan hệ, được gọi là mẫu tin (record), dòng.
Quan hệ là một bảng (table) với các cột là các thuộc tính và mỗi dòng được gọi là bộ.
Một bộ của quan hệ là với
Ví dụ: HOCVIEN(Mahv, Hoten, Ngsinh, Noisinh) có q=(1003,Nguyen Van Lam, 1/1/1987,Dong Nai) nghĩa là học viên có mã số là 1003, họ tên là Nguyen Van Lam, sinh ngày 1/1/1987 ở Dong Nai
Khoa HTTT-Đại học CNTT
54
2.4 Thể hiện của quan hệ (instance)
Định nghĩa: thể hiện của một quan hệ là tập hợp các bộ giá trị của quan hệ tại một thời điểm nhất định.
Ký hiệu: thể hiện của quan hệ Q là TQ
Ví dụ: THOCVIEN là thể hiện của quan hệ HOCVIEN tại thời điểm hiện tại gồm có các bộ như sau:
Khoa HTTT-Đại học CNTT
55
2.5 Tân từ
Định nghĩa: tân từ là một quy tắc dùng để mô tả một quan hệ.
Ký hiệu: ||Q||
Ví dụ: THI (Mahv, Mamh, Lanthi, Diem) ||THI||: mỗi học viên được phép thi một môn học nhiều lần, mỗi lần thi lưu trữ học viên nào thi môn gì? lần thi thứ mấy? và điểm là bao nhiêu?
Khoa HTTT-Đại học CNTT
56
2.6 Phép chiếu (1)
Phép chiếu : Dùng để trích giá trị của một số thuộc tính trong danh sách các thuộc tính của quan hệ.
Ký hiệu: phép chiếu của quan hệ R lên tập thuộc tính A là R[A] hoặc R.A.
Ví dụ:
hv1=
hv2 =
hv3 =
Khoa HTTT-Đại học CNTT
57
2.6 Phép chiếu (2)
Phép chiếu của quan hệ HOCVIEN lên thuộc tính NoiSinh của quan hệ HOCVIEN:
HOCVIEN[Noisinh] = {‘Nghe An’,’Kien Giang’,’Tay Ninh’}
Khoa HTTT-Đại học CNTT
58
Phép chiếu lên 1 tập thuộc tính K={Hoten,Noisinh} của quan hệ HOCVIEN
HOCVIEN[Hoten, Noisinh] = {{‘Ha Duy Lap’, ‘Nghe An’},{‘Tran Ngoc Han’, ‘Kien Giang’},{‘Tran Ngoc Linh’,’Tay Ninh’}}
2.6 Phép chiếu (3)
Khoa HTTT-Đại học CNTT
59
2.6 Phép chiếu (4)
Chiếu của một bộ lên tập thuộc tính: dùng để trích chọn các giá trị cụ thể của bộ giá trị đó theo các thuộc tính được chỉ ra trong danh sách thuộc tính của một quan hệ.
Ký hiệu: chiếu của một bộ giá trị t lên tập thuộc tính A của quan hệ R là tR[A] hoặc t[A]. Nếu A có 1 thuộc tính tR.A
Ví dụ: cho quan hệ HOCVIEN với tập thuộc tính HOCVIEN+={Mahv,Hoten,Gioitinh,Noisinh,Malop}, chứa 3 bộ giá trị hv1,hv2 và hv3
Khoa HTTT-Đại học CNTT
60
Phép chiếu 1 bộ lên 1 thuộc tính
hv1[Hoten] = {‘Ha Duy Lap’}
hv1=
hv2=
hv3=
2.6 Phép chiếu (5)
Khoa HTTT-Đại học CNTT
61
2.6 Phép chiếu (6)
Phép chiếu 1 bộ lên 1 tập thuộc tính
tập thuộc tính K={Hoten, Gioitinh}
hv2[K] = {‘Tran Ngoc Han’,’Nu’}
hv1 =
hv2 =
hv3 =
Khoa HTTT-Đại học CNTT
62
2.7 Khóa
2.7.1 Siêu khóa (super key)
2.7.2 Khóa (key)
2.7.3 Khóa chính (primary key)
2.7.5 Khóa ngoại (foreign key)
Khoa HTTT-Đại học CNTT
63
2.7.1 Siêu khóa (super key) (1)
Siêu khóa : là một tập con các thuộc tính của Q+ mà giá trị của chúng có thể phân biệt 2 bộ khác nhau trong cùng một thể hiện TQ bất kỳ.
Nghĩa là: t1, t2 TQ, t1[K] t2[K] K là siêu khóa của Q.
Một quan hệ có ít nhất một siêu khóa (Q+) và có thể có nhiều siêu khóa.
Khoa HTTT-Đại học CNTT
64
2.7.1 Siêu khóa (super key) (2)
Ví dụ: các siêu khóa của quan hệ HOCVIEN là: {Mahv};{Mahv,Hoten};{Hoten};{Noisinh,Hoten}…
Khoa HTTT-Đại học CNTT
65
2.7.2 Khóa (key) (1)
Khóa : K là khóa của quan hệ R, thỏa mãn 2 điều kiện:
K là một siêu khóa.
K là siêu khóa “nhỏ nhất” (chứa ít thuộc tính nhất và khác rỗng) nghĩa là
¬K1 K, K1 , K1 là siêu khóa.
Thuộc tính tham gia vào một khóa gọi là thuộc tính khóa, ngược lại là thuộc tính không khóa.
Khoa HTTT-Đại học CNTT
66
Ví dụ: các siêu khóa của quan hệ HOCVIEN là: {Mahv};{Mahv,Hoten};{Hoten};{Hoten,Gioitinh}; {Noisinh,Hoten};{Mahv,Hoten,Gioitinh,Noisinh}…
=> thì khóa của quan hệ HOCVIEN có thể là {Mahv}; {Hoten}
Ví dụ: khóa của quan hệ GIANGDAY là K={Magv,Mamh,Malop}. Như vậy thuộc tính khóa sẽ là: Magv,Mamh,Malop.
2.7.2 Khóa (key) (2)
Khoa HTTT-Đại học CNTT
67
2.7.3 Khóa chính (primary key)
Khi cài đặt trên một DBMS cụ thể, nếu quan hệ có nhiều hơn một khóa, ta chỉ được chọn một và gọi là khóa chính
Ký hiệu: các thuộc tính nằm trong khóa chính khi liệt kê trong quan hệ phải được gạch dưới.
Ví dụ:
HOCVIEN (Mahv,Hoten,Gioitinh,Noisinh,Malop)
GIANGDAY(Magv,Mamh,Malop,Hocky,Nam)
Khoa HTTT-Đại học CNTT
68
2.7.4 Khóa ngoại (1)
Cho R(U), S(V). K1U là khóa chính của R,K2V
Ta nói K2 là khóa ngoại của S tham chiếu đến khóa chính K1 của R nếu thỏa các điều kiện sau:
K1 và K2 có cùng số lượng thuộc tính và ngữ nghĩa của các thuộc tính trong K1 và K2 cũng giống nhau.
Giữa R và S tồn tại mối quan hệ 1-n trên K1 và K2,
s S, !r R sao cho r.K1=s.K2
Khoa HTTT-Đại học CNTT
69
2.7.4 Khóa ngoại (2)
Ví dụ, cho 2 quan hệ
LOP (Malop,Tenlop,Siso,Khoahoc)
HOCVIEN (Mahv,Hoten,Gioitinh,Noisinh,Malop)
Thuộc tính Malop trong quan hệ LOP là khóa chính của quan hệ LOP. Thuộc tính Malop trong quan hệ HOCVIEN là khóa ngoại, tham chiếu đến Malop trong quan hệ LOP
Khoa HTTT-Đại học CNTT
70
2.7.4 Khóa ngoại (3)
Khoa HTTT-Đại học CNTT
71
2.8 Lược đồ quan hệ (1)
Lược đồ quan hệ nhằm mục đích mô tả cấu trúc của một quan hệ và các mối liên hệ giữa các thuộc tính trong quan hệ đó.
Cấu trúc của một quan hệ là tập thuộc tính hình thành nên quan hệ đó.
Một lược đồ quan hệ gồm một tập thuộc tính của quan hệ kèm theo một mô tả để xác định ý nghĩa và mối liên hệ giữa các thuộc tính
Khoa HTTT-Đại học CNTT
72
2.8 Lược đồ quan hệ (2)
Lược đồ quan hệ được đặc trưng bởi:
Một tên phân biệt
Một tập hợp hữu hạn các thuộc tính (A1, …, An)
Ký hiệu của lược đồ quan hệ Q gồm n thuộc tính (A1, A2, ... An) là :
Q(A1, A2, ..., An)
Khoa HTTT-Đại học CNTT
73
2.8 Lược đồ quan hệ (3)
HOCVIEN(Mahv,Hoten,Gioitinh,Noisinh,Malop
Tân từ: mỗi học viên có một mã học viên để phân biệt với các học viên khác. Cần lưu trữ họ tên, giới tính, nơi sinh và thuộc lớp nào.
Khoa HTTT-Đại học CNTT
74
2.8 Lược đồ CSDL (1)
Là tập hợp gồm các lược đồ quan hệ và các mối liên hệ giữa chúng trong cùng một hệ thống quản lý.
Khoa HTTT-Đại học CNTT
75
HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP)
Tân từ: mỗi học viên phân biệt với nhau bằng mã học viên, lưu trữ họ tên, ngày sinh, giới tính, nơi sinh, thuộc lớp nào.
LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN)
Tân từ: mỗi lớp gồm có mã lớp, tên lớp, học viên làm lớp trưởng của lớp, sỉ số lớp và giáo viên chủ nhiệm.
KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA)
Tân từ: mỗi khoa cần lưu trữ mã khoa, tên khoa, ngày thành lập khoa và trưởng khoa (cũng là một giáo viên thuộc khoa).
MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA)
Tân từ: mỗi môn học cần lưu trữ tên môn học, số tín chỉ lý thuyết, số tín chỉ thực hành và khoa nào phụ trách.
DIEUKIEN (MAMH, MAMH_TRUOC)
Tân từ: có những môn học học viên phải có kiến thức từ một số môn học trước.
Lược đồ CSDL quản lý sinh viên
Khoa HTTT-Đại học CNTT
76
GIAOVIEN(MAGV,HOTEN,HOCVI,HOCHAM,GIOITINH,NGSINH,NGVL,
HESO, MUCLUONG, MAKHOA)
Tân từ: mã giáo viên để phân biệt giữa các giáo viên, cần lưu trữ họ tên, học vị, học hàm, giới tính, ngày sinh, ngày vào làm, hệ số, mức lương và thuộc một khoa.
GIANGDAY(MALOP,MAMH,MAGV,HOCKY, NAM,TUNGAY,DENNGAY)
Tân từ: mỗi học kỳ của năm học sẽ phân công giảng dạy: lớp nào học môn gì do giáo viên nào phụ trách.
KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA)
Tân từ: lưu trữ kết quả thi của học viên: học viên nào thi môn học gì, lần thi thứ mấy, ngày thi là ngày nào, điểm thi bao nhiêu và kết quả là đạt hay không đạt.
Khoa HTTT-Đại học CNTT
77
Bài 4: Ngôn ngữ đại số quan hệ
Khoa HTTT-Đại học CNTT
78
Nội dung
Giới thiệu
Biểu thức đại số quan hệ
Các phép toán
Biểu thức đại số quan hệ
Ví dụ
Khoa HTTT-Đại học CNTT
79
1. Giới thiệu
Đại số quan hệ (ĐSQH) có nền tảng toán học (cụ thể là lý thuyết tập hợp) để mô hình hóa CSDL quan hệ. Đối tượng xử lý là các quan hệ trong cơ sở dữ liệu quan hệ.
Chức năng:
Cho phép mô tả các phép toán rút trích dữ liệu từ các quan hệ trong cơ sở dữ liệu quan hệ.
Cho phép tối ưu quá trình rút trích bằng các phép toán có sẵn của lý thuyết tập hợp.
Khoa HTTT-Đại học CNTT
80
2. Biểu thức ĐSQH
Biểu thức ĐSQH là một biểu thức gồm các phép toán ĐSQH.
Biểu thức ĐSQH được xem như một quan hệ (không có tên).
Có thể đặt tên cho quan hệ được tạo từ một biểu thức ĐSQH.
Có thể đổi tên các thuộc tính của quan hệ được tạo từ một biểu thức ĐSQH.
Khoa HTTT-Đại học CNTT
81
3. Các phép toán
3.1 Giới thiệu
3.2 Phép chọn
3.3 Phép chiếu
3.4 Phép gán
3.5 Các phép toán trên tập hợp
3.6 Phép kết
3.7 Phép chia
3.8 Hàm tính toán và gom nhóm
Khoa HTTT-Đại học CNTT
82
3.1 Giới thiệu (1)
Có năm phép toán cơ bản:
Chọn ( ) hoặc ( : )
Chiếu ( ) hoặc ( [] )
Tích ( )
Hiệu ( )
Hội ( )
Khoa HTTT-Đại học CNTT
83
3.1 Giới thiệu (2)
Các phép toán khác không cơ bản nhưng hữu ích:
Giao ( )
Kết ( )
Chia ( )
Phép bù ( )
Đổi tên ( )
Phép gán ( )
Kết quả sau khi thực hiện các phép toán là các quan hệ, do đó có thể kết hợp giữa các phép toán để tạo nên phép toán mới.
Khoa HTTT-Đại học CNTT
84
3.2 Phép chọn (Selection)
Trích chọn các bộ (dòng) từ quan hệ R. Các bộ được trích chọn phải thỏa mãn điều kiện chọn p.
Ký hiệu:
Định nghĩa: p(t):thỏa điều kiện p
Kết quả trả về là một quan hệ, có cùng danh sách thuộc tính với quan hệ R. Không có kết quả trùng.
Phép chọn có tính giao hoán
Khoa HTTT-Đại học CNTT
85
Lược đồ CSDL quản lý giáo vụ
HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP)
LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN)
KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA)
MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA)
DIEUKIEN (MAMH, MAMH_TRUOC)
GIAOVIEN(MAGV,HOTEN,HOCVI,HOCHAM,GIOITINH,NGSINH,NGVL,
HESO, MUCLUONG, MAKHOA)
GIANGDAY(MALOP,MAMH,MAGV,HOCKY, NAM,TUNGAY,DENNGAY)
KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA)
Khoa HTTT-Đại học CNTT
86
3.2 Ví dụ phép chọn
Tìm những học viên “Nam’ có nơi sinh ở ‘TpHCM’
(Gioitinh=‘Nam’)(Noisinh=‘TpHCM’)(HOCVIEN)
Khoa HTTT-Đại học CNTT
87
3.3 Phép chiếu (Project)
Sử dụng để trích chọn giá trị một vài thuộc tính của quan hệ
Ký hiệu:
trong đó Ai là tên các thuộc tính được chiếu.
Kết quả trả về một quan hệ có k thuộc tính theo thứ tự như liệt kê. Các dòng trùng nhau chỉ lấy một.
Phép chiếu không có tính giao hoán
Khoa HTTT-Đại học CNTT
88
3.3 Ví dụ
Tìm mã số, họ tên những học viên “Nam’ có nơi sinh ở ‘TpHCM’
Mahv,Hoten(Gioitinh=‘Nam’)(Noisinh=‘TpHCM’)(HOCVIEN)
Khoa HTTT-Đại học CNTT
89
3.4 Phép gán (Assignment)
Dùng để diễn tả câu truy vấn phức tạp.
Ký hiệu: A B
Ví dụ:
R(HO,TEN,LUONG) HONV,TENNV,LUONG(NHANVIEN)
Kết quả bên phải của phép gán được gán cho biến quan hệ nằm bên trái.
Khoa HTTT-Đại học CNTT
90
3.5 Các phép toán tập hợp
3.5.1 Giới thiệu
3.5.2 Phép hội
3.5.3 Phép trừ
3.5.4 Phép giao
3.5.5 Phép tích
Khoa HTTT-Đại học CNTT
91
3.5.1 Giới thiệu
Các phép toán thực hiện trên 2 quan hệ xuất phát từ lý thuyết tập hợp của toán học: phép hội (RS), phép giao (RS), phép trừ (R-S), phép tích (RS).
Đối với các phép hội, giao, trừ, các quan hệ R và S phải khả hợp:
Số lượng thuộc tính của R và S phải bằng nhau:
R(A1,A2,…An) và S(B1,B2,…Bn)
Miền giá trị của thuộc tính phải tương thích
dom(Ai)=dom(Bi)
Quan hệ kết quả của phép hội, giao, trừ có cùng tên thuộc tính với quan hệ đầu tiên.
Khoa HTTT-Đại học CNTT
92
3.5.2 Phép hội (Union)
DOT1DOT2
Ký hiệu: RS
Định nghĩa: trong đó R,S là hai quan hệ khả hợp.
Ví dụ: Học viên được khen thưởng đợt 1 hoặc đợt 2
Khoa HTTT-Đại học CNTT
93
3.5.3 Phép trừ (Set Difference)
Ký hiệu: R-S
Định nghĩa: trong đó R,S là hai quan hệ khả hợp.
Ví dụ: Học viên được khen thưởng đợt 1 nhưng không được khen thường đợt 2
DOT1- DOT2
Khoa HTTT-Đại học CNTT
94
3.5.4 Phép giao (Set-Intersection)
Ký hiệu: RS
Định nghĩa: trong đó R,S là hai quan hệ khả hợp. Hoặc RS = R – (R – S)
Ví dụ: Học viên được khen thưởng cả hai đợt 1 và 2
DOT1 DOT2
Khoa HTTT-Đại học CNTT
95
3.5.5 Phép tích (1)
Ký hiệu: RS
Định nghĩa:
Nếu R có n bộ và S có m bộ thì kết quả là n*m bộ
KQ(A1,A2,…Am,B1,B2,…Bn) R(A1,A2,…Am) S(B1,B2,…Bn)
Phép tích thường dùng kết hợp với các phép chọn để kết hợp các bộ có liên quan từ hai quan hệ.
Ví dụ: từ hai quan hệ HOCVIEN và MONHOC, có tất cả những trường hợp nào “học viên đăng ký học môn học”, giả sử không có bất kỳ điều kiện nào
Khoa HTTT-Đại học CNTT
96
3.5.5 Phép tích (2)
HOCVIENMONHOC
Khoa HTTT-Đại học CNTT
97
3.6 Phép kết
3.6.1 Phép kết
3.6.2 Phép kết bằng, phép kết tự nhiên
3.6.3 Phép kết ngoài
Khoa HTTT-Đại học CNTT
98
3.6.1 Phép kết (Theta-Join) (1)
Theta-join (): Tương tự như phép tích kết hợp với phép chọn. Điều kiện chọn gọi là điều kiện kết.
Ký hiệu:
trong đó R,S là các quan hệ, p là điều kiện kết
Các bộ có giá trị NULL tại thuộc tính kết nối không xuất hiện trong kết quả của phép kết.
Phép kết với điều kiện tổng quát gọi là -kết với là một trong những phép so sánh (,,,,,)
Khoa HTTT-Đại học CNTT
99
3.6.1 Phép kết (2)
Khoa HTTT-Đại học CNTT
100
3.6.2 Phép kết bằng, kết tự nhiên
Nếu là phép so sánh bằng (=), phép kết gọi là phép kết bằng (equi-join).
Ký hiệu:
Nếu điều kiện của equi-join là các thuộc tính giống nhau thì gọi là phép kết tự nhiên (natural-join). Khi đó kết quả của phép kết loại bỏ bớt 1 cột (bỏ 1 trong 2 cột giống nhau)
Ký hiệu: hoặc
Khoa HTTT-Đại học CNTT
101
3.6.3 Phép kết ngoài (outer join)
Mở rộng phép kết để tránh mất thông tin
Thực hiện phép kết và sau đó thêm vào kết quả của phép kết các bộ của quan hệ mà không phù hợp với các bộ trong quan hệ kia.
Có 3 loại:
Left outer join R S
Right outer join R S
Full outer join R S
Ví dụ: In ra danh sách tất cả các học viên và điểm số của các môn học mà học viên đó thi (nếu có)
Khoa HTTT-Đại học CNTT
102
3.6.3 Phép kết ngoài (2)
HOCVIEN KETQUATHI
mahv
Khoa HTTT-Đại học CNTT
103
Định nghĩa:
R và S là hai quan hệ, R+ và S+ lần lượt là tập thuộc tính của R và S. Điều kiện S+ là tập con không bằng của R+. Q là kết quả phép chia giữa R và S, Q+ = R+ - S+
Có thể diễn đạt bằng phép toán đại số như sau:
3.7 Phép chia (Division)
Khoa HTTT-Đại học CNTT
104
3.7 Phép chia (2)
KETQUA
MONHOC
KETQUAMONHOC
Khoa HTTT-Đại học CNTT
105
3.8 Hàm tính toán và gom nhóm (1)
Hàm tính toán gồm các hàm: avg(giatri), min(giatri), max(giatri), sum(giatri), count(giatri).
Phép toán gom nhóm:
E là biểu thức đại số quan hệ
Gi là thuộc tính gom nhóm (rỗng, nếu không gom nhóm)
Fi là hàm tính toán
Ai là tên thuộc tính
Khoa HTTT-Đại học CNTT
106
3.8 Hàm tính toán và gom nhóm (2)
Điểm thi cao nhất, thấp nhất, trung bình của môn CSDL ?
Điểm thi cao nhất, thấp nhất, trung bình của từng môn ?
Khoa HTTT-Đại học CNTT
107
Bài tập
Lược đồ CSDL quản lý bán hàng gồm có các quan hệ sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Khoa HTTT-Đại học CNTT
108
Mô tả các câu truy vấn sau bằng ĐSQH
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến 40.000
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2007.
Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “BB01” và “BB02”.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất không bán được trong năm 2006.
Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất
Khoa HTTT-Đại học CNTT
109
Câu 1
In ra danh sách các sản phẩm (MASP, TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến 40.000.
Khoa HTTT-Đại học CNTT
110
Câu 2
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
Khoa HTTT-Đại học CNTT
111
Câu 3
In ra danh sách các sản phẩm do “Trung Quoc” sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2007.
Hoặc
Khoa HTTT-Đại học CNTT
112
Câu 4
Tìm các số hóa đơn đã mua cùng lúc các sản phẩm có mã số “BB01” và “BB02”.
Hoặc
Khoa HTTT-Đại học CNTT
113
Câu 5
In ra danh sách các sản phẩm do “TrungQuoc” sản xuất không bán được trong năm 2006.
Khoa HTTT-Đại học CNTT
114
Câu 6
Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất
Khoa HTTT-Đại học CNTT
115
Bài 5: Ngôn ngữ SQL
Khoa HTTT-Đại học CNTT
116
Nội dung
Giới thiệu
Các ngôn ngữ giao tiếp
Ngôn ngữ định nghĩa dữ liệu
Ngôn ngữ thao tác dữ liệu
Ngôn ngữ truy vấn dữ liệu có cấu trúc
Ngôn ngữ điều khiển dữ liệu
Khoa HTTT-Đại học CNTT
117
Là ngôn ngữ chuẩn để truy vấn và thao tác trên CSDL quan hệ
Là ngôn ngữ phi thủ tục
Khởi nguồn của SQL là SEQUEL - Structured English Query Language, năm 1974)
Các chuẩn SQL
SQL89
SQL92 (SQL2)
SQL99 (SQL3)
1. Giới thiệu
Khoa HTTT-Đại học CNTT
118
2. Các ngôn ngữ giao tiếp
Ngôn ngữ định nghĩa dữ liệu (Data Definition Language - DDL): cho phép khai báo cấu trúc bảng, các mối quan hệ và các ràng buộc.
Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML): cho phép thêm, xóa, sửa dữ liệu.
Ngôn ngữ truy vấn dữ liệu (Structured Query Language – SQL): cho phép truy vấn dữ liệu.
Ngôn ngữ điều khiển dữ liệu (Data Control Language – DCL): khai báo bảo mật thông tin, cấp quyền và thu hồi quyền khai thác trên cơ sở dữ liệu.
Khoa HTTT-Đại học CNTT
119
3.1 Lệnh tạo bảng (CREATE)
3.1.1 Cú pháp
3.1.2 Một số kiểu dữ liệu
3.2 Lệnh sửa cấu trúc bảng (ALTER)
3.2.1 Thêm thuộc tính
3.2.2 Sửa kiểu dữ liệu của thuộc tính
3.2.3 Xoá thuộc tính
3.2.4 Thêm ràng buộc toàn vẹn
3.2.5 Xoá ràng buộc toàn vẹn
3.3 Lệnh xóa bảng (DROP)
3. Ngôn ngữ định nghĩa dữ liệu
Khoa HTTT-Đại học CNTT
120
3.1.1 Cú pháp
CREATE TABLE
(
[not null],
[not null],
…
[not null],
khai báo khóa chính, khóa ngoại, ràng buộc
)
3.1 Lệnh tạo bảng
Khoa HTTT-Đại học CNTT
121
3.1 Lệnh tạo bảng (2)
3.1.2 Một số kiểu dữ liệu
Khoa HTTT-Đại học CNTT
122
3.1 Lệnh tạo bảng (3)
Lược đồ CSDL quản lý bán hàng gồm có các quan hệ sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK, CMND)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Khoa HTTT-Đại học CNTT
123
3.1 Lệnh tạo bảng (4)
Create table KHACHHANG
(
MAKH char(4) primary key,
HOTEN varchar(40),
DCHI varchar(50),
SODT varchar(20),
NGSINH smalldatetime,
DOANHSO money,
NGDK smalldatetime,
CMND varchar(10)
)
Khoa HTTT-Đại học CNTT
124
3.1 Lệnh tạo bảng (5)
Create table CTHD
(
SOHD int foreign key
references HOADON(SOHD),
MASP char(4) foreign key
references SANPHAM(MASP),
SL int,
constraint PK_CTHD primary key (SOHD,MASP)
)
Khoa HTTT-Đại học CNTT
125
3.2.1 Thêm thuộc tính
ALTER TABLE tênbảng ADD têncột kiểudữliệu
Ví dụ: thêm cột Ghi_chu vào bảng khách hàng
ALTER TABLE KHACHHANG ADD GHI_CHU varchar(20)
3.2.2 Sửa kiểu dữ liệu thuộc tính
ALTER TABLE tênbảng ALTER COLUMN têncột kiểudữliệu_mới
Lưu ý:
Không phải sửa bất kỳ kiểu dữ liệu nào cũng được
3.2 Sửa cấu trúc bảng(1)
Khoa HTTT-Đại học CNTT
126
Ví dụ: Sửa Cột Ghi_chu thành kiểu dữ liệu varchar(50)
ALTER TABLE KHACHHANG ALTER COLUMN GHI_CHU varchar(50)
Nếu sửa kiểu dữ liệu của cột Ghi_chu thành varchar(5), mà trước đó đã nhập giá trị cho cột Ghi_chu có độ dài hơn 5ký tự thì không được phép.
Hoặc sửa từ kiểu chuỗi ký tự sang kiểu số, …
3.2.3 Xóa thuộc tính
ALTER TABLE tên_bảng DROP COLUMN tên_cột
Ví dụ: xóa cột Ghi_chu trong bảng KHACHHANG
ALTER TABLE NHANVIEN DROP COLUMN Ghi_chu
3.2 Sửa cấu trúc bảng(2)
Khoa HTTT-Đại học CNTT
127
3.2.4 Thêm ràng buộc toàn vẹn
ALTER TABLE
ADD CONSTRAINT
UNIQUE tên_cột
PRIMARY KEY (tên_cột)
FOREIGN KEY (tên_cột) REFERENCES tên_bảng (cột_là_khóa_chính) [ON DELETE CASCADE] [ON UPDATE CASCADE]
CHECK (tên_cột điều_kiện)
3.2 Sửa cấu trúc bảng(3)
Khoa HTTT-Đại học CNTT
128
Ví dụ
ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NV PRIMARY KEY (MANV)
ALTER TABLE CTHD ADD CONSTRAINT FK_CT_SP FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP)
ALTER TABLE SANPHAM ADD CONSTRAINT CK_GIA CHECK (GIA >=500)
ALTER TABLE KHACHHANG ADD CONSTRAINT UQ_KH UNIQUE (CMND)
3.2 Sửa cấu trúc bảng(4)
Khoa HTTT-Đại học CNTT
129
3.2.5 Xóa ràng buộc toàn vẹn
ALTER TABLE tên_bảng DROP CONSTRAINT tên_ràng_buộc
Ví dụ:
Alter table CTHD drop constraint FK_CT_SP
Alter table SANPHAM drop constraint ck_gia
Lưu ý: đối với ràng buộc khóa chính, muốn xóa ràng buộc này phải xóa hết các ràng buộc khóa ngoại tham chiếu tới nó
3.2 Sửa cấu trúc bảng(5)
Khoa HTTT-Đại học CNTT
130
Cú pháp
DROP TABLE tên_bảng
Ví dụ: xóa bảng KHACHHANG.
DROP TABLE KHACHHANG
Lưu ý: khi muốn xóa một bảng phải xóa tất cả những khóa ngoại tham chiếu tới bảng đó trước.
3.3 Lệnh xóa bảng
Khoa HTTT-Đại học CNTT
131
Gồm các lệnh:
4.1 Lệnh thêm dữ liệu (INSERT)
4.2 Lệnh sửa dữ liệu (UPDATE)
4.3 Lệnh xóa dữ liệu (DELETE)
4. Ngôn ngữ thao tác dữ liệu
Khoa HTTT-Đại học CNTT
132
Cú pháp
INSERT INTO tên_bảng (cột1,…,cộtn) VALUES (giá_trị_1,…., giá_trị_n)
INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2,…, giá_trị_n)
Ví dụ:
insert into SANPHAM values(`BC01`,`But chi`, `cay`, `Singapore`, 3000)
insert into SANPHAM(masp,tensp,dvt,nuocsx,gia) values (`BC01`,`But chi`,`cay`,`Singapore`,3000)
4.1 Thêm dữ liệu
Khoa HTTT-Đại học CNTT
133
Cú pháp
UPDATE tên_bảng
SET cột_1 = giá_trị_1, cột_2 = giá_trị_2 ….
[WHERE điều_kiện]
Lưu ý: cẩn thận với các lệnh xóa và sửa, nếu không có điều kiện ở WHERE nghĩa là xóa hoặc sửa tất cả.
Ví dụ: Tăng giá 10% đối với những sản phẩm do “Trung Quoc” sản xuất
UPDATE SANPHAM
SET Gia = Gia*1.1
WHERE Nuocsx=‘Trung Quoc’
4.2 Sửa dữ liệu
Khoa HTTT-Đại học CNTT
134
4.3 Xóa dữ liệu
Cú pháp
DELETE FROM tên_bảng [WHERE điều_kiện]
Ví dụ:
Xóa toàn bộ nhân viên
DELETE FROM NHANVIEN
Xóa những sản phẩm do Trung Quốc sản xuất có giá thấp hơn 10000
DELETE FROM SANPHAM
WHERE (Gia <10000) and (Nuocsx=‘Trung Quoc’)
Khoa HTTT-Đại học CNTT
135
5. Ngôn ngữ truy vấn dữ liệu có cấu trúc
5.1 Câu truy vấn tổng quát
5.2 Truy vấn đơn giản
5.3 Phép kết
5.4 Đặt bí danh, sử dụng *, distinct
5.5 Các toán tử
5.6 Câu truy vấn con (subquery)
5.7 Phép chia
5.8 Hàm tính toán, gom nhóm
Khoa HTTT-Đại học CNTT
136
SELECT [DISTINCT] *|tên_cột | hàm
FROM bảng
[WHERE điều_kiện]
[GROUP BY tên_cột]
[HAVING điều_kiện]
[ORDER BY tên_cột ASC | DESC]
5.1Câu truy vấn tổng quát
Khoa HTTT-Đại học CNTT
137
5.2 Truy vấn đơn giản(1)
SELECT
Tương đương phép chiếu của ĐSQH
Liệt kê các thuộc tính cần hiển thị trong kết quả
WHERE
Tương ứng với điều kiện chọn trong ĐSQH
Điều kiện liên quan tới thuộc tính, sử dụng các phép nối luận lý AND, OR, NOT, các phép toán so sánh, BETWEEN
FROM
Liệt kê các quan hệ cần thiết, các phép kết
Khoa HTTT-Đại học CNTT
138
5.2 Truy vấn đơn giản(2)
Tìm masp, tensp do “Trung Quoc” sản xuất có giá từ 20000 đến 30000
Select masp,tensp
From SANPHAM
Where nuocsx=‘Trung Quoc’
and gia between 20000 and 30000
Khoa HTTT-Đại học CNTT
139
5.3 Phép kết(1)
Inner Join, Left Join, Right Join, Full Join
Ví dụ:
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
select KHACHHANG.makh,hoten
from KHACHHANG inner join HOADON on KHACHHANG.makh=HOADON.makh
where nghd=`1/1/2007`
Khoa HTTT-Đại học CNTT
140
5.3 Phép kết (2)
Ví dụ: In ra danh sách tất cả các hóa đơn và họ tên của khách hàng mua hóa đơn đó (nếu có)
Select sohd, hoten
From HOADON left join KHACHHANG on HOADON.makh=KHACHHANG.makh
Select sohd, hoten
From HOADON ,KHACHHANG
where HOADON.makh*=KHACHHANG.makh
Khoa HTTT-Đại học CNTT
141
5.4 Đặt bí danh, sử dụng *, distinct
Đặt bí danh – Alias: cho thuộc tính và quan hệ: tên_cũ AS tên_mới
Select manv,hoten as [ho va ten] From NHANVIEN
Liệt kê tất cả các thuộc tính của quan hệ:
Select * from Nhanvien
Select NHANVIEN.* from NHANVIEN
Distinct: trùng chỉ lấy một lần
Select distinct nuocsx from SANPHAM
Sắp xếp kết quả hiển thị: Order by
Select * from SANPHAM order by nuocsx, gia DESC
Khoa HTTT-Đại học CNTT
142
5.5 Toán tử truy vấn(1)
Toán tử so sánh: =, >,<,>=,<=,<>
Toán tử logic: AND, OR, NOT
Phép toán: +, - ,* , /
BETWEEN …. AND
IS NULL, IS NOT NULL
LIKE (_ %)
IN, NOT IN
EXISTS , NOT EXISTS
SOME, A
1
Đại học Công Nghệ Thông Tin
Môn: Cơ Sở Dữ Liệu
Thời lượng: 45LT+30TH
Khoa HTTT-Đại học CNTT
2
Nội dung
Bài 1: Các khái niệm của một hệ CSDL
Bài 2: Các mô hình CSDL
Bài 3: Mô hình dữ liệu quan hệ (của Codd)
Bài 4: Ngôn ngữ đại số quan hệ
Bài 5: Ngôn ngữ SQL
Bài 6: Ngôn ngữ tân từ
Bài 7: Ràng buộc toàn vẹn trong một CSDL
Bài 8: Tối ưu hóa câu hỏi bằng đại số quan hệ
Khoa HTTT-Đại học CNTT
3
Bài 1: Các khái niệm của một hệ CSDL
Khoa HTTT-Đại học CNTT
4
Bài 1: Các khái niệm của một hệ CSDL
Giới thiệu
Hệ thống tập tin (File System)
Định nghĩa một CSDL
Các đối tượng sử dụng CSDL
Hệ quản trị CSDL
Các mức của một CSDL
Khoa HTTT-Đại học CNTT
5
1. Giới thiệu
Tại sao cần phải có một cơ sở dữ liệu?
Khoa HTTT-Đại học CNTT
6
2. Hệ thống tập tin
Là tập hợp các tập tin riêng lẻ phục vụ cho một mục đích của đơn vị sử dụng.
Ưu điểm:
Triển khai ứng dụng nhanh
Khả năng đáp ứng nhanh chóng, kịp thời (vì chỉ phục vụ cho mục đích hạn hẹp)
Khuyết điểm:
Trùng lắp dữ liệu lãng phí, dữ liệu không nhất quán
Chi phí cao
Chia sẽ dữ liệu kém
Khoa HTTT-Đại học CNTT
7
3. Cơ sở dữ liệu (1)
Định nghĩa:
Cơ sở dữ liệu là một hệ thống các thông tin có cấu trúc, được lưu trữ trên các thiết bị lưu trữ nhằm thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với những mục đích khác nhau
Khoa HTTT-Đại học CNTT
8
3. Cơ sở dữ liệu (2)
Ưu điểm:
Giảm trùng lắp thông tin xuống mức thấp nhất, đảm bảo tính nhất quán và toàn vẹn dữ liệu.
Đảm bảo dữ liệu được truy xuất theo nhiều cách khác nhau.
Khả năng chia sẽ thông tin cho nhiều người, nhiều ứng dụng khác nhau.
Khoa HTTT-Đại học CNTT
9
3. Cơ sở dữ liệu (3)
Những vấn đề cần giải quyết:
Tính chủ quyền dữ liệu.
Tính bảo mật và quyền khai thác thông tin của người sử dụng
Tranh chấp dữ liệu
Đảm bảo dữ liệu khi có sự cố
Khoa HTTT-Đại học CNTT
10
4. Các đối tượng sử dụng
Người sử dụng CSDL không chuyên về lĩnh vực tin học và CSDL -> cần công cụ để họ có thể khai thác CSDL khi cần.
Chuyên viên tin học xây dựng các ứng dụng để phục vụ cho các mục đích quản lý
Quản trị CSDL: tổ chức CSDL, bảo mật, cấp quyền, sao lưu, phục hồi dữ liệu, giải quyết các tranh chấp dữ liệu …
Khoa HTTT-Đại học CNTT
11
5. Hệ quản trị cơ sở dữ liệu (1)
Hệ quản trị cơ sở dữ liệu (DBMS – DataBase Management System) là hệ thống các phần mềm hỗ trợ tích cực cho các nhà phân tích, thiết kế và khai thác CSDL.
Các DBMS thông dụng: Visual FoxPro, Microsoft Access, SQL Server, DB2, Oracle … hầu hết các DBMS hiện nay đều dựa trên mô hình quan hệ.
Khoa HTTT-Đại học CNTT
12
5. Hệ quản trị cơ sở dữ liệu (2)
Một DBMS phải có:
Ngôn ngữ giao tiếp giữa người sử dụng và CSDL
Từ điển dữ liệu (Data Dictionary)
Có biện pháp bảo mật khi có yêu cầu
Cơ chế giải quyết tranh chấp dữ liệu
Có cơ chế sao lưu (backup), phục hồi (restore)
Đảm bảo tính độc lập giữa dữ liệu và chương trình
Khoa HTTT-Đại học CNTT
13
5. Hệ quản trị cơ sở dữ liệu (3)
Ngôn ngữ giao tiếp:
Ngôn ngữ mô tả dữ liệu (DDL – Data Definition Language): cho phép khai báo cấu trúc CSDL, các mối liên hệ của dữ liệu, các quy định, ràng buộc dữ liệu.
Ngôn ngữ thao tác dữ liệu (DML – Data Manipulation Language): cho phép thực hiện thao tác thêm, xóa, sửa dữ liệu.
Ngôn ngữ truy vấn có cấu trúc (SQL – Structured Query Language): cho phép người khai thác sử dụng để truy vấn thông tin cần thiết.
Ngôn ngữ quản lý dữ liệu (DCL – Data Control Language) cho phép thay đổi cấu trúc bảng, khai báo bảo mật, cấp quyền cho người sử dụng.
Khoa HTTT-Đại học CNTT
14
6. Các mức biểu diễn 1 CSDL
Mức trong: (mức vật lý – Physical) là mức lưu trữ CSDL (cần giải quyết vấn đề gì? Dữ liệu gì? Lưu trữ như thế nào? ở đâu? Cần các chỉ mục gì? Truy xuất tuần tự hay ngẫu nhiên. Dành cho người quản trị và người sử dụng chuyên môn.
Mức quan niệm: (Conception hay Logical) cần phải lưu trữ bao nhiêu loại dữ liệu? là dữ liệu gì? mối quan hệ
Mức ngoài: của người sử dụng và các chương trình ứng dụng
Khoa HTTT-Đại học CNTT
15
6. Các mức biểu diễn 1 CSDL
Cấu trúc
ngoài 1
Cấu trúc
ngoài 2
Cấu trúc
ngoài n
Chương trình ứng dụng n
Mức
quan
niệm
hoặc
mức
logic
Mức vật lý –
Cấu trúc vật lý
CSDL
Môi trường
thực thế giới
thực
NSD1
NSD2
Khoa HTTT-Đại học CNTT
16
Bài 2: Các mô hình dữ liệu
Khoa HTTT-Đại học CNTT
17
Nội dung
Giới thiệu
Mô hình dữ liệu mạng
Mô hình thực thể mối kết hợp
Khoa HTTT-Đại học CNTT
18
1. Giới thiệu
Mô hình dữ liệu là sự trừu tượng hóa của môi trường thực, biểu diễn dữ liệu ở mức quan niệm. Giới thiệu một số mô hình như:
Mô hình dữ liệu mạng
Mô hình dữ liệu phân cấp
Mô hình dữ liệu thực thể mối kết hợp
Mô hình dữ liệu quan hệ
Mô hình dữ liệu hướng đối tượng
Khoa HTTT-Đại học CNTT
19
2. Mô hình dữ liệu mạng (1)
Mô hình dữ liệu mạng (Network Data Model) còn gọi tắt là mô hình mạng hoặc mô hình lưới là mô hình được biểu diễn bởi một đồ thị có hướng.
Mẫu tin (record)
Loại mẫu tin
Loại liên hệ (set type)
Bản số
Khoa HTTT-Đại học CNTT
20
2. Mô hình dữ liệu mạng (2)
Mẫu tin: mô tả 1 đối tượng trong thế giới thực.
(‘NV001’,’Nguyen Lam’,’Nam’,’10/10/1970’,’Dong Nai’)
Loại mẫu tin: là 1 tập các mẫu tin có cùng tính chất. Ví dụ: NHANVIEN
Ký hiệu:
Loại liên hệ: mô tả sự liên kết giữa 1 loại mẫu tin chủ và 1 loại mẫu tin thành viên
Ký hiệu:
NHANVIEN
Tham gia
CONGVIEC
Khoa HTTT-Đại học CNTT
21
2. Mô hình dữ liệu mạng (3)
Bản số: chỉ ra số lượng các mẫu tin tham gia trong mối liên hệ
(1:1) (one-to-one): mỗi mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên.
(1:n) (one-to-many): mỗi mẫu tin của loại mẫu tin chủ kết hợp với 1 hay nhiều mẫu tin thành viên.
(n:1) (many-to-one): nhiều mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên.
(Recursive): một loại mẫu tin chủ cũng có thể đồng thời là loại mẫu tin thành viên với chính nó. Loại liên hệ này là Đệ quy
Khoa HTTT-Đại học CNTT
22
2. Mô hình dữ liệu mạng (4)
PHONG
CONGVIEC
NHANVIEN
LYLICH
gồm
có
quản lý
trực tiếp
cùng làm
n:1
1:1
1:n
1:n
Khoa HTTT-Đại học CNTT
23
2. Mô hình dữ liệu mạng (5)
Mô hình dữ liệu mạng:
Tương đối đơn giản
Dễ sử dụng
Không thích hợp biểu diễn CSDL có quy mô lớn
Khả năng diễn đạt ngữ nghĩa kém
Khoa HTTT-Đại học CNTT
24
2. Mô hình dữ liệu mạng (6)
Bài tập:
Xây dựng mô hình dữ liệu mạng cho cơ sở dữ liệu quản lý bán hàng trong một siêu thị (giáo viên mô tả hiện trạng, xác định các yêu cầu)
Khoa HTTT-Đại học CNTT
25
3. Mô hình thực thể mối kết hợp
3.1 Giới thiệu
3.2 Loại thực thể, thực thể
3.3 Thuộc tính của loại thực thể
3.4 Khoá của loại thực thể
3.5 Loại mối kết hợp, mối kết hợp
3.6 Thuộc tính của loại mối kết hợp
3.7 Bản số
3.8 Mô hình ER mở rộng
Khoa HTTT-Đại học CNTT
26
3.1 Giới thiệu
Mô hình thực thể mối kết hợp (Entity-Relationship Model viết tắc ER) được CHEN giới thiệu năm 1976.
Mô hình ER được sử dụng nhiều trong thiết kế dữ liệu ở mức quan niệm.
Khoa HTTT-Đại học CNTT
27
3.2 Loại thực thể
Định nghĩa: loại thực thể (Entity Type) là những loại đối tượng hay sự vật của thế giới thực tồn tại cụ thể cần được quản lý.
Ví dụ : HOCVIEN, LOP, MONHOC, …
Ký hiệu:
HOCVIEN
LOP
Khoa HTTT-Đại học CNTT
28
3.2 Thực thể (Entity)
Định nghĩa: thực thể là một thể hiện hoặc một đối tượng của một loại thực thể.
Ví dụ: Loại thực thể là HOCVIEN có các thực thể:
(‘HV001’, ‘Nguyen Nam’, ‘1/2/1987’,’Nam’)
(‘HV002’, ‘Trần Nam’, ‘13/2/1987’, ‘Nam’)
Khoa HTTT-Đại học CNTT
29
3.3 Thuộc tính của loại thực thể
(Entity Attribute)
Định nghĩa: thuộc tính là những tính chất đặc trưng của loại thực thể cần lưu trữ.
Ví dụ: Loại thực thể HOCVIEN có các thuộc tính: Mã học viên, họ tên, giới tính, ngày sinh, nơi sinh
Ký hiệu:
HOCVIEN
Hoten
Gioitinh
Mahv
Ngaysinh
Noisinh
Khoa HTTT-Đại học CNTT
30
3.3 Các loại thuộc tính (1)
Đơn trị (Simple): mỗi thực thể chỉ có một giá trị ứng với các thuộc tính.
Ví dụ: Mahv,Hoten
Đa hợp (Composite): thuộc tính có thể được tạo thành từ nhiều thành phần.
Ví dụ: DCHI(SONHA,DUONG,PHUONG,QUAN) hay thuộc tính HOTEN(HO,TENLOT,TEN).
Đa trị (Multi-valued): thuộc tính có thể có nhiều giá trị đối với một thực thể.
Ví dụ: BANGCAP ký hiệu {BANGCAP}
Khoa HTTT-Đại học CNTT
31
3.3 Các loại thuộc tính (2)
Tóm lại, các thuộc tính đa hợp và đa trị có thể lồng nhau tùy ý.
Ví dụ: thuộc tính BANGCAP của HOCVIEN là một thuộc tính đa hợp được ký hiệu bằng
{BANGCAP(TRUONGCAP,NAM,KETQUA,
CHUYENNGANH)}
Khoa HTTT-Đại học CNTT
32
3.4. Khoá của loại thực thể
(entity type key)
Khóa của loại thực thể là thuộc tính nhận diện thực thể.
Căn cứ vào giá trị của khóa có thể xác định duy nhất một thực thể.
Ví dụ:
Mỗi học viên có một mã số duy nhất => Khoá của loại thực thể HOCVIEN là Mã học viên
Khoa HTTT-Đại học CNTT
33
Định nghĩa: loại mối kết hợp là sự kết hợp giữa hai hay nhiều loại thực thể
Ví dụ: giữa hai loại thực thể HOCVIEN và LOP có loại mối kết hợp THUOC
Ký hiệu: bằng một hình oval hoặc hình thoi
3.5 Loại mối kết hợp (1)
(relationship type)
Khoa HTTT-Đại học CNTT
34
3.5 Loại mối kết hợp (2)
Giữa hai loại thực thể có thể tồn tại nhiều hơn một loại mối kết hợp.
Ví dụ
Khoa HTTT-Đại học CNTT
35
3.5 Số ngôi của loại mối kết hợp (relationship degree)
Số ngôi của loại mối kết hợp là số loại thực thể tham gia vào loại mối kết hợp đó.
Ví dụ 1: Loại mối kết hợp Thuộc kết hợp 2 loại thực thể HOCVIEN và LOP nên có số ngôi là 2.
Ví dụ 2: Loại mối kết hợp Giảng dạy kết hợp 3 loại thực thể GIAOVIEN, MONHOC, LOP nên có số ngôi là 3.
Khoa HTTT-Đại học CNTT
36
3.5 Số ngôi của loại mối kết hợp
Khoa HTTT-Đại học CNTT
37
3.6 Thuộc tính của loại mối kết hợp
(relationship type attribute)
Thuộc tính của loại mối kết hợp bao gồm các thuộc tính khoá của các loại thực thể tham gia vào loại mối kết hợp đó. Ngoài ra còn có thể có thêm những thuộc tính bổ sung khác.
Ví dụ: Loại mối kết hợp Giảng dạy giữa ba loại thực thể GIAOVIEN, MONHOC và LOP có các thuộc tính là Magv,Mamh,Malop, ngoài ra còn có thuộc tính riêng là Hocky, Nam
Khoa HTTT-Đại học CNTT
38
Hocky
Nam
Khoa HTTT-Đại học CNTT
39
3.7 Bản số
(relationship cardinality)
Loại mối kết hợp thể hiện liên kết giữa các thực thể, mỗi liên kết được gọi là một nhánh.
Định nghĩa: bản số của nhánh là số lượng tối thiểu và số lượng tối đa các thực thể thuộc nhánh đó tham gia vào loại mối kết hợp.
Ký hiệu: (bản số tối thiểu, bản số tối đa)
Ví dụ: Loại thực thể NhanVien và DeAn có loại mối kết hợp ThamGia.
Khoa HTTT-Đại học CNTT
40
Khoa HTTT-Đại học CNTT
41
(1,1)
(1,n)
(0,1)
(1,1)
Khoa HTTT-Đại học CNTT
42
3.7 Mô hình ER mở rộng
3.7.1 Chuyên biệt hoá / Tổng quát hóa
3.7.2 Mối kết hợp đệ quy
3.7.3 Loại thực thể yếu
Khoa HTTT-Đại học CNTT
43
3.7.1 Chuyên biệt hóa (tổng quát hóa)
ConNguoi
HocVi
NgayVL
NgayNH
Khóa
SoCMND
HoTen
...
Khoa HTTT-Đại học CNTT
44
3.7.2 Mối kết hợp đệ quy
Định nghĩa: là loại mối kết hợp được tạo thành từ cùng một loại thực thể (hay một loại thực thể có loại mối kết hợp với chính nó)
Ví dụ: Mỗi nhân viên có một người quản lý trực tiếp và người quản lý đó cũng là một nhân viên
Khoa HTTT-Đại học CNTT
45
Định nghĩa:
Là loại thực thể không có thuộc tính khóa
Phải tham gia trong một loại mối kết hợp xác định trong đó có một loại thực thể chủ.
Ký hiệu:
Ví dụ: loại thực thể LANTHI có thuộc tính Lần và tham gia trong loại mối kết hợp Thi với loại thực thể HOCVIEN và MONHOC là loại thực thể yếu.
Thực thể
3.7.3 Loại thực thể yếu
Khoa HTTT-Đại học CNTT
46
3.7.3 Loại thực thể yếu
HOCVIEN
LANTHI
(1,n)
(1,n)
MONHOC
(1,n)
Khoa HTTT-Đại học CNTT
47
Bài tập
Xây dựng mô hình ER
Xây dựng mô hình ER cho CSDL quản lý giáo vụ gồm có các chức năng sau:
Lưu trữ thông tin: Học viên , giáo viên, môn học
Xếp lớp cho học viên, chọn lớp trưởng cho lớp
Phân công giảng dạy: giáo viên dạy lớp nào với môn học gì, ở học kỳ, năm học nào.
Lưu trữ kết quả thi: học viên thi môn học nào, lần thi thứ mấy, điểm thi bao nhiêu.
Khoa HTTT-Đại học CNTT
48
Bài 3: Mô hình dữ liệu quan hệ
(Relational Data Model)
Khoa HTTT-Đại học CNTT
49
Giới thiệu
Các khái niệm
2.1 Thuộc tính
2.2 Quan hệ
2.3 Bộ giá trị
2.4 Thể hiện của quan hệ
2.5 Tân từ
2.6 Phép chiếu
2.7 Khóa
2.8 Lược đồ quan hệ và lược đồ CSDL
2.9 Hiện thực mô hình ER bằng mô hình dữ liệu quan hệ.
Nội dung
Khoa HTTT-Đại học CNTT
50
1. Giới thiệu
Mô hình Dữ liệu Quan hệ (Relational Data Model) dựa trên khái niệm quan hệ.
Quan hệ là khái niệm toán học dựa trên nền tảng hình thức về lý thuyết tập hợp.
Mô hình này do TS. E. F. Codd đưa ra năm 1970.
Khoa HTTT-Đại học CNTT
51
2.1 Thuộc tính (attribute)
Thuộc tính:
Tên gọi: dãy ký tự (gợi nhớ)
Kiểu dữ liệu: Số, Chuỗi, Thời gian, Luận lý, OLE.
Miền giá trị: tập giá trị mà thuộc tính có thể nhận. Ký hiệu miền giá trị của thuộc tính A là Dom(A).
Ví dụ:GIOITINH kiểu dữ liệu là Chuỗi,miền giá trị
Dom(GIOITINH)=(‘Nam’,’Nu’)
Tại một thời điểm, một thuộc tính không có giá trị hoặc chưa xác định được giá trị => giá trị Null
Khoa HTTT-Đại học CNTT
52
2.2 Quan hệ (relation)
Định nghĩa: quan hệ là một tập hữu hạn các thuộc tính.
Ký hiệu:
Trong đó Q là tên quan hệ, là tập các thuộc tính của quan hệ Q
Ví dụ:
HOCVIEN (Mahv, Hoten, Ngsinh, Gioitinh, Noisinh, Malop)
LOP (Malop, Tenlop, Siso, Trglop, Khoa)
Khoa HTTT-Đại học CNTT
53
2.3 Bộ (tuple)
Định nghĩa: Bộ là các thông tin của một đối tượng thuộc quan hệ, được gọi là mẫu tin (record), dòng.
Quan hệ là một bảng (table) với các cột là các thuộc tính và mỗi dòng được gọi là bộ.
Một bộ của quan hệ là với
Ví dụ: HOCVIEN(Mahv, Hoten, Ngsinh, Noisinh) có q=(1003,Nguyen Van Lam, 1/1/1987,Dong Nai) nghĩa là học viên có mã số là 1003, họ tên là Nguyen Van Lam, sinh ngày 1/1/1987 ở Dong Nai
Khoa HTTT-Đại học CNTT
54
2.4 Thể hiện của quan hệ (instance)
Định nghĩa: thể hiện của một quan hệ là tập hợp các bộ giá trị của quan hệ tại một thời điểm nhất định.
Ký hiệu: thể hiện của quan hệ Q là TQ
Ví dụ: THOCVIEN là thể hiện của quan hệ HOCVIEN tại thời điểm hiện tại gồm có các bộ như sau:
Khoa HTTT-Đại học CNTT
55
2.5 Tân từ
Định nghĩa: tân từ là một quy tắc dùng để mô tả một quan hệ.
Ký hiệu: ||Q||
Ví dụ: THI (Mahv, Mamh, Lanthi, Diem) ||THI||: mỗi học viên được phép thi một môn học nhiều lần, mỗi lần thi lưu trữ học viên nào thi môn gì? lần thi thứ mấy? và điểm là bao nhiêu?
Khoa HTTT-Đại học CNTT
56
2.6 Phép chiếu (1)
Phép chiếu : Dùng để trích giá trị của một số thuộc tính trong danh sách các thuộc tính của quan hệ.
Ký hiệu: phép chiếu của quan hệ R lên tập thuộc tính A là R[A] hoặc R.A.
Ví dụ:
hv1=
hv2 =
hv3 =
Khoa HTTT-Đại học CNTT
57
2.6 Phép chiếu (2)
Phép chiếu của quan hệ HOCVIEN lên thuộc tính NoiSinh của quan hệ HOCVIEN:
HOCVIEN[Noisinh] = {‘Nghe An’,’Kien Giang’,’Tay Ninh’}
Khoa HTTT-Đại học CNTT
58
Phép chiếu lên 1 tập thuộc tính K={Hoten,Noisinh} của quan hệ HOCVIEN
HOCVIEN[Hoten, Noisinh] = {{‘Ha Duy Lap’, ‘Nghe An’},{‘Tran Ngoc Han’, ‘Kien Giang’},{‘Tran Ngoc Linh’,’Tay Ninh’}}
2.6 Phép chiếu (3)
Khoa HTTT-Đại học CNTT
59
2.6 Phép chiếu (4)
Chiếu của một bộ lên tập thuộc tính: dùng để trích chọn các giá trị cụ thể của bộ giá trị đó theo các thuộc tính được chỉ ra trong danh sách thuộc tính của một quan hệ.
Ký hiệu: chiếu của một bộ giá trị t lên tập thuộc tính A của quan hệ R là tR[A] hoặc t[A]. Nếu A có 1 thuộc tính tR.A
Ví dụ: cho quan hệ HOCVIEN với tập thuộc tính HOCVIEN+={Mahv,Hoten,Gioitinh,Noisinh,Malop}, chứa 3 bộ giá trị hv1,hv2 và hv3
Khoa HTTT-Đại học CNTT
60
Phép chiếu 1 bộ lên 1 thuộc tính
hv1[Hoten] = {‘Ha Duy Lap’}
hv1=
hv2=
hv3=
2.6 Phép chiếu (5)
Khoa HTTT-Đại học CNTT
61
2.6 Phép chiếu (6)
Phép chiếu 1 bộ lên 1 tập thuộc tính
tập thuộc tính K={Hoten, Gioitinh}
hv2[K] = {‘Tran Ngoc Han’,’Nu’}
hv1 =
hv2 =
hv3 =
Khoa HTTT-Đại học CNTT
62
2.7 Khóa
2.7.1 Siêu khóa (super key)
2.7.2 Khóa (key)
2.7.3 Khóa chính (primary key)
2.7.5 Khóa ngoại (foreign key)
Khoa HTTT-Đại học CNTT
63
2.7.1 Siêu khóa (super key) (1)
Siêu khóa : là một tập con các thuộc tính của Q+ mà giá trị của chúng có thể phân biệt 2 bộ khác nhau trong cùng một thể hiện TQ bất kỳ.
Nghĩa là: t1, t2 TQ, t1[K] t2[K] K là siêu khóa của Q.
Một quan hệ có ít nhất một siêu khóa (Q+) và có thể có nhiều siêu khóa.
Khoa HTTT-Đại học CNTT
64
2.7.1 Siêu khóa (super key) (2)
Ví dụ: các siêu khóa của quan hệ HOCVIEN là: {Mahv};{Mahv,Hoten};{Hoten};{Noisinh,Hoten}…
Khoa HTTT-Đại học CNTT
65
2.7.2 Khóa (key) (1)
Khóa : K là khóa của quan hệ R, thỏa mãn 2 điều kiện:
K là một siêu khóa.
K là siêu khóa “nhỏ nhất” (chứa ít thuộc tính nhất và khác rỗng) nghĩa là
¬K1 K, K1 , K1 là siêu khóa.
Thuộc tính tham gia vào một khóa gọi là thuộc tính khóa, ngược lại là thuộc tính không khóa.
Khoa HTTT-Đại học CNTT
66
Ví dụ: các siêu khóa của quan hệ HOCVIEN là: {Mahv};{Mahv,Hoten};{Hoten};{Hoten,Gioitinh}; {Noisinh,Hoten};{Mahv,Hoten,Gioitinh,Noisinh}…
=> thì khóa của quan hệ HOCVIEN có thể là {Mahv}; {Hoten}
Ví dụ: khóa của quan hệ GIANGDAY là K={Magv,Mamh,Malop}. Như vậy thuộc tính khóa sẽ là: Magv,Mamh,Malop.
2.7.2 Khóa (key) (2)
Khoa HTTT-Đại học CNTT
67
2.7.3 Khóa chính (primary key)
Khi cài đặt trên một DBMS cụ thể, nếu quan hệ có nhiều hơn một khóa, ta chỉ được chọn một và gọi là khóa chính
Ký hiệu: các thuộc tính nằm trong khóa chính khi liệt kê trong quan hệ phải được gạch dưới.
Ví dụ:
HOCVIEN (Mahv,Hoten,Gioitinh,Noisinh,Malop)
GIANGDAY(Magv,Mamh,Malop,Hocky,Nam)
Khoa HTTT-Đại học CNTT
68
2.7.4 Khóa ngoại (1)
Cho R(U), S(V). K1U là khóa chính của R,K2V
Ta nói K2 là khóa ngoại của S tham chiếu đến khóa chính K1 của R nếu thỏa các điều kiện sau:
K1 và K2 có cùng số lượng thuộc tính và ngữ nghĩa của các thuộc tính trong K1 và K2 cũng giống nhau.
Giữa R và S tồn tại mối quan hệ 1-n trên K1 và K2,
s S, !r R sao cho r.K1=s.K2
Khoa HTTT-Đại học CNTT
69
2.7.4 Khóa ngoại (2)
Ví dụ, cho 2 quan hệ
LOP (Malop,Tenlop,Siso,Khoahoc)
HOCVIEN (Mahv,Hoten,Gioitinh,Noisinh,Malop)
Thuộc tính Malop trong quan hệ LOP là khóa chính của quan hệ LOP. Thuộc tính Malop trong quan hệ HOCVIEN là khóa ngoại, tham chiếu đến Malop trong quan hệ LOP
Khoa HTTT-Đại học CNTT
70
2.7.4 Khóa ngoại (3)
Khoa HTTT-Đại học CNTT
71
2.8 Lược đồ quan hệ (1)
Lược đồ quan hệ nhằm mục đích mô tả cấu trúc của một quan hệ và các mối liên hệ giữa các thuộc tính trong quan hệ đó.
Cấu trúc của một quan hệ là tập thuộc tính hình thành nên quan hệ đó.
Một lược đồ quan hệ gồm một tập thuộc tính của quan hệ kèm theo một mô tả để xác định ý nghĩa và mối liên hệ giữa các thuộc tính
Khoa HTTT-Đại học CNTT
72
2.8 Lược đồ quan hệ (2)
Lược đồ quan hệ được đặc trưng bởi:
Một tên phân biệt
Một tập hợp hữu hạn các thuộc tính (A1, …, An)
Ký hiệu của lược đồ quan hệ Q gồm n thuộc tính (A1, A2, ... An) là :
Q(A1, A2, ..., An)
Khoa HTTT-Đại học CNTT
73
2.8 Lược đồ quan hệ (3)
HOCVIEN(Mahv,Hoten,Gioitinh,Noisinh,Malop
Tân từ: mỗi học viên có một mã học viên để phân biệt với các học viên khác. Cần lưu trữ họ tên, giới tính, nơi sinh và thuộc lớp nào.
Khoa HTTT-Đại học CNTT
74
2.8 Lược đồ CSDL (1)
Là tập hợp gồm các lược đồ quan hệ và các mối liên hệ giữa chúng trong cùng một hệ thống quản lý.
Khoa HTTT-Đại học CNTT
75
HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP)
Tân từ: mỗi học viên phân biệt với nhau bằng mã học viên, lưu trữ họ tên, ngày sinh, giới tính, nơi sinh, thuộc lớp nào.
LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN)
Tân từ: mỗi lớp gồm có mã lớp, tên lớp, học viên làm lớp trưởng của lớp, sỉ số lớp và giáo viên chủ nhiệm.
KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA)
Tân từ: mỗi khoa cần lưu trữ mã khoa, tên khoa, ngày thành lập khoa và trưởng khoa (cũng là một giáo viên thuộc khoa).
MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA)
Tân từ: mỗi môn học cần lưu trữ tên môn học, số tín chỉ lý thuyết, số tín chỉ thực hành và khoa nào phụ trách.
DIEUKIEN (MAMH, MAMH_TRUOC)
Tân từ: có những môn học học viên phải có kiến thức từ một số môn học trước.
Lược đồ CSDL quản lý sinh viên
Khoa HTTT-Đại học CNTT
76
GIAOVIEN(MAGV,HOTEN,HOCVI,HOCHAM,GIOITINH,NGSINH,NGVL,
HESO, MUCLUONG, MAKHOA)
Tân từ: mã giáo viên để phân biệt giữa các giáo viên, cần lưu trữ họ tên, học vị, học hàm, giới tính, ngày sinh, ngày vào làm, hệ số, mức lương và thuộc một khoa.
GIANGDAY(MALOP,MAMH,MAGV,HOCKY, NAM,TUNGAY,DENNGAY)
Tân từ: mỗi học kỳ của năm học sẽ phân công giảng dạy: lớp nào học môn gì do giáo viên nào phụ trách.
KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA)
Tân từ: lưu trữ kết quả thi của học viên: học viên nào thi môn học gì, lần thi thứ mấy, ngày thi là ngày nào, điểm thi bao nhiêu và kết quả là đạt hay không đạt.
Khoa HTTT-Đại học CNTT
77
Bài 4: Ngôn ngữ đại số quan hệ
Khoa HTTT-Đại học CNTT
78
Nội dung
Giới thiệu
Biểu thức đại số quan hệ
Các phép toán
Biểu thức đại số quan hệ
Ví dụ
Khoa HTTT-Đại học CNTT
79
1. Giới thiệu
Đại số quan hệ (ĐSQH) có nền tảng toán học (cụ thể là lý thuyết tập hợp) để mô hình hóa CSDL quan hệ. Đối tượng xử lý là các quan hệ trong cơ sở dữ liệu quan hệ.
Chức năng:
Cho phép mô tả các phép toán rút trích dữ liệu từ các quan hệ trong cơ sở dữ liệu quan hệ.
Cho phép tối ưu quá trình rút trích bằng các phép toán có sẵn của lý thuyết tập hợp.
Khoa HTTT-Đại học CNTT
80
2. Biểu thức ĐSQH
Biểu thức ĐSQH là một biểu thức gồm các phép toán ĐSQH.
Biểu thức ĐSQH được xem như một quan hệ (không có tên).
Có thể đặt tên cho quan hệ được tạo từ một biểu thức ĐSQH.
Có thể đổi tên các thuộc tính của quan hệ được tạo từ một biểu thức ĐSQH.
Khoa HTTT-Đại học CNTT
81
3. Các phép toán
3.1 Giới thiệu
3.2 Phép chọn
3.3 Phép chiếu
3.4 Phép gán
3.5 Các phép toán trên tập hợp
3.6 Phép kết
3.7 Phép chia
3.8 Hàm tính toán và gom nhóm
Khoa HTTT-Đại học CNTT
82
3.1 Giới thiệu (1)
Có năm phép toán cơ bản:
Chọn ( ) hoặc ( : )
Chiếu ( ) hoặc ( [] )
Tích ( )
Hiệu ( )
Hội ( )
Khoa HTTT-Đại học CNTT
83
3.1 Giới thiệu (2)
Các phép toán khác không cơ bản nhưng hữu ích:
Giao ( )
Kết ( )
Chia ( )
Phép bù ( )
Đổi tên ( )
Phép gán ( )
Kết quả sau khi thực hiện các phép toán là các quan hệ, do đó có thể kết hợp giữa các phép toán để tạo nên phép toán mới.
Khoa HTTT-Đại học CNTT
84
3.2 Phép chọn (Selection)
Trích chọn các bộ (dòng) từ quan hệ R. Các bộ được trích chọn phải thỏa mãn điều kiện chọn p.
Ký hiệu:
Định nghĩa: p(t):thỏa điều kiện p
Kết quả trả về là một quan hệ, có cùng danh sách thuộc tính với quan hệ R. Không có kết quả trùng.
Phép chọn có tính giao hoán
Khoa HTTT-Đại học CNTT
85
Lược đồ CSDL quản lý giáo vụ
HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP)
LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN)
KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA)
MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA)
DIEUKIEN (MAMH, MAMH_TRUOC)
GIAOVIEN(MAGV,HOTEN,HOCVI,HOCHAM,GIOITINH,NGSINH,NGVL,
HESO, MUCLUONG, MAKHOA)
GIANGDAY(MALOP,MAMH,MAGV,HOCKY, NAM,TUNGAY,DENNGAY)
KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA)
Khoa HTTT-Đại học CNTT
86
3.2 Ví dụ phép chọn
Tìm những học viên “Nam’ có nơi sinh ở ‘TpHCM’
(Gioitinh=‘Nam’)(Noisinh=‘TpHCM’)(HOCVIEN)
Khoa HTTT-Đại học CNTT
87
3.3 Phép chiếu (Project)
Sử dụng để trích chọn giá trị một vài thuộc tính của quan hệ
Ký hiệu:
trong đó Ai là tên các thuộc tính được chiếu.
Kết quả trả về một quan hệ có k thuộc tính theo thứ tự như liệt kê. Các dòng trùng nhau chỉ lấy một.
Phép chiếu không có tính giao hoán
Khoa HTTT-Đại học CNTT
88
3.3 Ví dụ
Tìm mã số, họ tên những học viên “Nam’ có nơi sinh ở ‘TpHCM’
Mahv,Hoten(Gioitinh=‘Nam’)(Noisinh=‘TpHCM’)(HOCVIEN)
Khoa HTTT-Đại học CNTT
89
3.4 Phép gán (Assignment)
Dùng để diễn tả câu truy vấn phức tạp.
Ký hiệu: A B
Ví dụ:
R(HO,TEN,LUONG) HONV,TENNV,LUONG(NHANVIEN)
Kết quả bên phải của phép gán được gán cho biến quan hệ nằm bên trái.
Khoa HTTT-Đại học CNTT
90
3.5 Các phép toán tập hợp
3.5.1 Giới thiệu
3.5.2 Phép hội
3.5.3 Phép trừ
3.5.4 Phép giao
3.5.5 Phép tích
Khoa HTTT-Đại học CNTT
91
3.5.1 Giới thiệu
Các phép toán thực hiện trên 2 quan hệ xuất phát từ lý thuyết tập hợp của toán học: phép hội (RS), phép giao (RS), phép trừ (R-S), phép tích (RS).
Đối với các phép hội, giao, trừ, các quan hệ R và S phải khả hợp:
Số lượng thuộc tính của R và S phải bằng nhau:
R(A1,A2,…An) và S(B1,B2,…Bn)
Miền giá trị của thuộc tính phải tương thích
dom(Ai)=dom(Bi)
Quan hệ kết quả của phép hội, giao, trừ có cùng tên thuộc tính với quan hệ đầu tiên.
Khoa HTTT-Đại học CNTT
92
3.5.2 Phép hội (Union)
DOT1DOT2
Ký hiệu: RS
Định nghĩa: trong đó R,S là hai quan hệ khả hợp.
Ví dụ: Học viên được khen thưởng đợt 1 hoặc đợt 2
Khoa HTTT-Đại học CNTT
93
3.5.3 Phép trừ (Set Difference)
Ký hiệu: R-S
Định nghĩa: trong đó R,S là hai quan hệ khả hợp.
Ví dụ: Học viên được khen thưởng đợt 1 nhưng không được khen thường đợt 2
DOT1- DOT2
Khoa HTTT-Đại học CNTT
94
3.5.4 Phép giao (Set-Intersection)
Ký hiệu: RS
Định nghĩa: trong đó R,S là hai quan hệ khả hợp. Hoặc RS = R – (R – S)
Ví dụ: Học viên được khen thưởng cả hai đợt 1 và 2
DOT1 DOT2
Khoa HTTT-Đại học CNTT
95
3.5.5 Phép tích (1)
Ký hiệu: RS
Định nghĩa:
Nếu R có n bộ và S có m bộ thì kết quả là n*m bộ
KQ(A1,A2,…Am,B1,B2,…Bn) R(A1,A2,…Am) S(B1,B2,…Bn)
Phép tích thường dùng kết hợp với các phép chọn để kết hợp các bộ có liên quan từ hai quan hệ.
Ví dụ: từ hai quan hệ HOCVIEN và MONHOC, có tất cả những trường hợp nào “học viên đăng ký học môn học”, giả sử không có bất kỳ điều kiện nào
Khoa HTTT-Đại học CNTT
96
3.5.5 Phép tích (2)
HOCVIENMONHOC
Khoa HTTT-Đại học CNTT
97
3.6 Phép kết
3.6.1 Phép kết
3.6.2 Phép kết bằng, phép kết tự nhiên
3.6.3 Phép kết ngoài
Khoa HTTT-Đại học CNTT
98
3.6.1 Phép kết (Theta-Join) (1)
Theta-join (): Tương tự như phép tích kết hợp với phép chọn. Điều kiện chọn gọi là điều kiện kết.
Ký hiệu:
trong đó R,S là các quan hệ, p là điều kiện kết
Các bộ có giá trị NULL tại thuộc tính kết nối không xuất hiện trong kết quả của phép kết.
Phép kết với điều kiện tổng quát gọi là -kết với là một trong những phép so sánh (,,,,,)
Khoa HTTT-Đại học CNTT
99
3.6.1 Phép kết (2)
Khoa HTTT-Đại học CNTT
100
3.6.2 Phép kết bằng, kết tự nhiên
Nếu là phép so sánh bằng (=), phép kết gọi là phép kết bằng (equi-join).
Ký hiệu:
Nếu điều kiện của equi-join là các thuộc tính giống nhau thì gọi là phép kết tự nhiên (natural-join). Khi đó kết quả của phép kết loại bỏ bớt 1 cột (bỏ 1 trong 2 cột giống nhau)
Ký hiệu: hoặc
Khoa HTTT-Đại học CNTT
101
3.6.3 Phép kết ngoài (outer join)
Mở rộng phép kết để tránh mất thông tin
Thực hiện phép kết và sau đó thêm vào kết quả của phép kết các bộ của quan hệ mà không phù hợp với các bộ trong quan hệ kia.
Có 3 loại:
Left outer join R S
Right outer join R S
Full outer join R S
Ví dụ: In ra danh sách tất cả các học viên và điểm số của các môn học mà học viên đó thi (nếu có)
Khoa HTTT-Đại học CNTT
102
3.6.3 Phép kết ngoài (2)
HOCVIEN KETQUATHI
mahv
Khoa HTTT-Đại học CNTT
103
Định nghĩa:
R và S là hai quan hệ, R+ và S+ lần lượt là tập thuộc tính của R và S. Điều kiện S+ là tập con không bằng của R+. Q là kết quả phép chia giữa R và S, Q+ = R+ - S+
Có thể diễn đạt bằng phép toán đại số như sau:
3.7 Phép chia (Division)
Khoa HTTT-Đại học CNTT
104
3.7 Phép chia (2)
KETQUA
MONHOC
KETQUAMONHOC
Khoa HTTT-Đại học CNTT
105
3.8 Hàm tính toán và gom nhóm (1)
Hàm tính toán gồm các hàm: avg(giatri), min(giatri), max(giatri), sum(giatri), count(giatri).
Phép toán gom nhóm:
E là biểu thức đại số quan hệ
Gi là thuộc tính gom nhóm (rỗng, nếu không gom nhóm)
Fi là hàm tính toán
Ai là tên thuộc tính
Khoa HTTT-Đại học CNTT
106
3.8 Hàm tính toán và gom nhóm (2)
Điểm thi cao nhất, thấp nhất, trung bình của môn CSDL ?
Điểm thi cao nhất, thấp nhất, trung bình của từng môn ?
Khoa HTTT-Đại học CNTT
107
Bài tập
Lược đồ CSDL quản lý bán hàng gồm có các quan hệ sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Khoa HTTT-Đại học CNTT
108
Mô tả các câu truy vấn sau bằng ĐSQH
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến 40.000
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2007.
Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “BB01” và “BB02”.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất không bán được trong năm 2006.
Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất
Khoa HTTT-Đại học CNTT
109
Câu 1
In ra danh sách các sản phẩm (MASP, TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến 40.000.
Khoa HTTT-Đại học CNTT
110
Câu 2
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
Khoa HTTT-Đại học CNTT
111
Câu 3
In ra danh sách các sản phẩm do “Trung Quoc” sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2007.
Hoặc
Khoa HTTT-Đại học CNTT
112
Câu 4
Tìm các số hóa đơn đã mua cùng lúc các sản phẩm có mã số “BB01” và “BB02”.
Hoặc
Khoa HTTT-Đại học CNTT
113
Câu 5
In ra danh sách các sản phẩm do “TrungQuoc” sản xuất không bán được trong năm 2006.
Khoa HTTT-Đại học CNTT
114
Câu 6
Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất
Khoa HTTT-Đại học CNTT
115
Bài 5: Ngôn ngữ SQL
Khoa HTTT-Đại học CNTT
116
Nội dung
Giới thiệu
Các ngôn ngữ giao tiếp
Ngôn ngữ định nghĩa dữ liệu
Ngôn ngữ thao tác dữ liệu
Ngôn ngữ truy vấn dữ liệu có cấu trúc
Ngôn ngữ điều khiển dữ liệu
Khoa HTTT-Đại học CNTT
117
Là ngôn ngữ chuẩn để truy vấn và thao tác trên CSDL quan hệ
Là ngôn ngữ phi thủ tục
Khởi nguồn của SQL là SEQUEL - Structured English Query Language, năm 1974)
Các chuẩn SQL
SQL89
SQL92 (SQL2)
SQL99 (SQL3)
1. Giới thiệu
Khoa HTTT-Đại học CNTT
118
2. Các ngôn ngữ giao tiếp
Ngôn ngữ định nghĩa dữ liệu (Data Definition Language - DDL): cho phép khai báo cấu trúc bảng, các mối quan hệ và các ràng buộc.
Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML): cho phép thêm, xóa, sửa dữ liệu.
Ngôn ngữ truy vấn dữ liệu (Structured Query Language – SQL): cho phép truy vấn dữ liệu.
Ngôn ngữ điều khiển dữ liệu (Data Control Language – DCL): khai báo bảo mật thông tin, cấp quyền và thu hồi quyền khai thác trên cơ sở dữ liệu.
Khoa HTTT-Đại học CNTT
119
3.1 Lệnh tạo bảng (CREATE)
3.1.1 Cú pháp
3.1.2 Một số kiểu dữ liệu
3.2 Lệnh sửa cấu trúc bảng (ALTER)
3.2.1 Thêm thuộc tính
3.2.2 Sửa kiểu dữ liệu của thuộc tính
3.2.3 Xoá thuộc tính
3.2.4 Thêm ràng buộc toàn vẹn
3.2.5 Xoá ràng buộc toàn vẹn
3.3 Lệnh xóa bảng (DROP)
3. Ngôn ngữ định nghĩa dữ liệu
Khoa HTTT-Đại học CNTT
120
3.1.1 Cú pháp
CREATE TABLE
(
…
khai báo khóa chính, khóa ngoại, ràng buộc
)
3.1 Lệnh tạo bảng
Khoa HTTT-Đại học CNTT
121
3.1 Lệnh tạo bảng (2)
3.1.2 Một số kiểu dữ liệu
Khoa HTTT-Đại học CNTT
122
3.1 Lệnh tạo bảng (3)
Lược đồ CSDL quản lý bán hàng gồm có các quan hệ sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK, CMND)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
Khoa HTTT-Đại học CNTT
123
3.1 Lệnh tạo bảng (4)
Create table KHACHHANG
(
MAKH char(4) primary key,
HOTEN varchar(40),
DCHI varchar(50),
SODT varchar(20),
NGSINH smalldatetime,
DOANHSO money,
NGDK smalldatetime,
CMND varchar(10)
)
Khoa HTTT-Đại học CNTT
124
3.1 Lệnh tạo bảng (5)
Create table CTHD
(
SOHD int foreign key
references HOADON(SOHD),
MASP char(4) foreign key
references SANPHAM(MASP),
SL int,
constraint PK_CTHD primary key (SOHD,MASP)
)
Khoa HTTT-Đại học CNTT
125
3.2.1 Thêm thuộc tính
ALTER TABLE tênbảng ADD têncột kiểudữliệu
Ví dụ: thêm cột Ghi_chu vào bảng khách hàng
ALTER TABLE KHACHHANG ADD GHI_CHU varchar(20)
3.2.2 Sửa kiểu dữ liệu thuộc tính
ALTER TABLE tênbảng ALTER COLUMN têncột kiểudữliệu_mới
Lưu ý:
Không phải sửa bất kỳ kiểu dữ liệu nào cũng được
3.2 Sửa cấu trúc bảng(1)
Khoa HTTT-Đại học CNTT
126
Ví dụ: Sửa Cột Ghi_chu thành kiểu dữ liệu varchar(50)
ALTER TABLE KHACHHANG ALTER COLUMN GHI_CHU varchar(50)
Nếu sửa kiểu dữ liệu của cột Ghi_chu thành varchar(5), mà trước đó đã nhập giá trị cho cột Ghi_chu có độ dài hơn 5ký tự thì không được phép.
Hoặc sửa từ kiểu chuỗi ký tự sang kiểu số, …
3.2.3 Xóa thuộc tính
ALTER TABLE tên_bảng DROP COLUMN tên_cột
Ví dụ: xóa cột Ghi_chu trong bảng KHACHHANG
ALTER TABLE NHANVIEN DROP COLUMN Ghi_chu
3.2 Sửa cấu trúc bảng(2)
Khoa HTTT-Đại học CNTT
127
3.2.4 Thêm ràng buộc toàn vẹn
ALTER TABLE
ADD CONSTRAINT
UNIQUE tên_cột
PRIMARY KEY (tên_cột)
FOREIGN KEY (tên_cột) REFERENCES tên_bảng (cột_là_khóa_chính) [ON DELETE CASCADE] [ON UPDATE CASCADE]
CHECK (tên_cột điều_kiện)
3.2 Sửa cấu trúc bảng(3)
Khoa HTTT-Đại học CNTT
128
Ví dụ
ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NV PRIMARY KEY (MANV)
ALTER TABLE CTHD ADD CONSTRAINT FK_CT_SP FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP)
ALTER TABLE SANPHAM ADD CONSTRAINT CK_GIA CHECK (GIA >=500)
ALTER TABLE KHACHHANG ADD CONSTRAINT UQ_KH UNIQUE (CMND)
3.2 Sửa cấu trúc bảng(4)
Khoa HTTT-Đại học CNTT
129
3.2.5 Xóa ràng buộc toàn vẹn
ALTER TABLE tên_bảng DROP CONSTRAINT tên_ràng_buộc
Ví dụ:
Alter table CTHD drop constraint FK_CT_SP
Alter table SANPHAM drop constraint ck_gia
Lưu ý: đối với ràng buộc khóa chính, muốn xóa ràng buộc này phải xóa hết các ràng buộc khóa ngoại tham chiếu tới nó
3.2 Sửa cấu trúc bảng(5)
Khoa HTTT-Đại học CNTT
130
Cú pháp
DROP TABLE tên_bảng
Ví dụ: xóa bảng KHACHHANG.
DROP TABLE KHACHHANG
Lưu ý: khi muốn xóa một bảng phải xóa tất cả những khóa ngoại tham chiếu tới bảng đó trước.
3.3 Lệnh xóa bảng
Khoa HTTT-Đại học CNTT
131
Gồm các lệnh:
4.1 Lệnh thêm dữ liệu (INSERT)
4.2 Lệnh sửa dữ liệu (UPDATE)
4.3 Lệnh xóa dữ liệu (DELETE)
4. Ngôn ngữ thao tác dữ liệu
Khoa HTTT-Đại học CNTT
132
Cú pháp
INSERT INTO tên_bảng (cột1,…,cộtn) VALUES (giá_trị_1,…., giá_trị_n)
INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2,…, giá_trị_n)
Ví dụ:
insert into SANPHAM values(`BC01`,`But chi`, `cay`, `Singapore`, 3000)
insert into SANPHAM(masp,tensp,dvt,nuocsx,gia) values (`BC01`,`But chi`,`cay`,`Singapore`,3000)
4.1 Thêm dữ liệu
Khoa HTTT-Đại học CNTT
133
Cú pháp
UPDATE tên_bảng
SET cột_1 = giá_trị_1, cột_2 = giá_trị_2 ….
[WHERE điều_kiện]
Lưu ý: cẩn thận với các lệnh xóa và sửa, nếu không có điều kiện ở WHERE nghĩa là xóa hoặc sửa tất cả.
Ví dụ: Tăng giá 10% đối với những sản phẩm do “Trung Quoc” sản xuất
UPDATE SANPHAM
SET Gia = Gia*1.1
WHERE Nuocsx=‘Trung Quoc’
4.2 Sửa dữ liệu
Khoa HTTT-Đại học CNTT
134
4.3 Xóa dữ liệu
Cú pháp
DELETE FROM tên_bảng [WHERE điều_kiện]
Ví dụ:
Xóa toàn bộ nhân viên
DELETE FROM NHANVIEN
Xóa những sản phẩm do Trung Quốc sản xuất có giá thấp hơn 10000
DELETE FROM SANPHAM
WHERE (Gia <10000) and (Nuocsx=‘Trung Quoc’)
Khoa HTTT-Đại học CNTT
135
5. Ngôn ngữ truy vấn dữ liệu có cấu trúc
5.1 Câu truy vấn tổng quát
5.2 Truy vấn đơn giản
5.3 Phép kết
5.4 Đặt bí danh, sử dụng *, distinct
5.5 Các toán tử
5.6 Câu truy vấn con (subquery)
5.7 Phép chia
5.8 Hàm tính toán, gom nhóm
Khoa HTTT-Đại học CNTT
136
SELECT [DISTINCT] *|tên_cột | hàm
FROM bảng
[WHERE điều_kiện]
[GROUP BY tên_cột]
[HAVING điều_kiện]
[ORDER BY tên_cột ASC | DESC]
5.1Câu truy vấn tổng quát
Khoa HTTT-Đại học CNTT
137
5.2 Truy vấn đơn giản(1)
SELECT
Tương đương phép chiếu của ĐSQH
Liệt kê các thuộc tính cần hiển thị trong kết quả
WHERE
Tương ứng với điều kiện chọn trong ĐSQH
Điều kiện liên quan tới thuộc tính, sử dụng các phép nối luận lý AND, OR, NOT, các phép toán so sánh, BETWEEN
FROM
Liệt kê các quan hệ cần thiết, các phép kết
Khoa HTTT-Đại học CNTT
138
5.2 Truy vấn đơn giản(2)
Tìm masp, tensp do “Trung Quoc” sản xuất có giá từ 20000 đến 30000
Select masp,tensp
From SANPHAM
Where nuocsx=‘Trung Quoc’
and gia between 20000 and 30000
Khoa HTTT-Đại học CNTT
139
5.3 Phép kết(1)
Inner Join, Left Join, Right Join, Full Join
Ví dụ:
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
select KHACHHANG.makh,hoten
from KHACHHANG inner join HOADON on KHACHHANG.makh=HOADON.makh
where nghd=`1/1/2007`
Khoa HTTT-Đại học CNTT
140
5.3 Phép kết (2)
Ví dụ: In ra danh sách tất cả các hóa đơn và họ tên của khách hàng mua hóa đơn đó (nếu có)
Select sohd, hoten
From HOADON left join KHACHHANG on HOADON.makh=KHACHHANG.makh
Select sohd, hoten
From HOADON ,KHACHHANG
where HOADON.makh*=KHACHHANG.makh
Khoa HTTT-Đại học CNTT
141
5.4 Đặt bí danh, sử dụng *, distinct
Đặt bí danh – Alias: cho thuộc tính và quan hệ: tên_cũ AS tên_mới
Select manv,hoten as [ho va ten] From NHANVIEN
Liệt kê tất cả các thuộc tính của quan hệ:
Select * from Nhanvien
Select NHANVIEN.* from NHANVIEN
Distinct: trùng chỉ lấy một lần
Select distinct nuocsx from SANPHAM
Sắp xếp kết quả hiển thị: Order by
Select * from SANPHAM order by nuocsx, gia DESC
Khoa HTTT-Đại học CNTT
142
5.5 Toán tử truy vấn(1)
Toán tử so sánh: =, >,<,>=,<=,<>
Toán tử logic: AND, OR, NOT
Phép toán: +, - ,* , /
BETWEEN …. AND
IS NULL, IS NOT NULL
LIKE (_ %)
IN, NOT IN
EXISTS , NOT EXISTS
SOME, A
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Trần Vũ
Dung lượng: |
Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)