- Một tập hợp các phép toán thao tác trên dữ liệu như phép toán tập hợp, phép toán quan hệ, ràng buộc toàn vẹn quan hệ.. Định nghĩa Mô hình dữ liệu phân cấp Hierachical Data Model - đượ
Trang 1Trang 1
MỤC LỤC
BÀI 1: TỔNG QUAN VỀ CSDL 2
I Dữ liệu – thông tin 2
II Các ưu, khuyết điểm của CSDL 2
III Tính độc lập giữa dữ liệu và chương trình 2
IV Phân loại người dùng CSDL 3
BÀI 2: CÁC MÔ HÌNH CƠ SỞ DỮ LIỆU 3
I Sơ đồ tổng quát một hệ quản trị CSDL 3
II Thực thể - quan hệ 3
III Các mô hình CSDL 4
IV Mô hình thực thể quan hệ 4
V Mô hình dữ liệu quan hệ 5
VI Mô hình dữ liệu mạng 5
VII Mô hình dữ liệu phân cấp (dạng tree) 6
VIII Mô hình dữ liệu hướng đối tượng 6
BÀI 3: MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ 7
I Các khái niệm 7
II Ràng buộc toàn vẹn 8
III Các phép tính trên cơ sở dữ liệu quan hệ 10
BÀI 4: NGÔN NGỮ THAO TÁC DỮ LIỆU 12
I Đại số quan hệ 12
II Các phép toán trên quan hệ 12
III Các phép cơ sở trên quan hệ 13
IV Ngôn ngữ giao tiếp CSDL 14
BÀI 5: NGÔN NGỮ TRUY VẤN DỮ LIỆU 16
I.Tổng quan, các qui ước biểu diễn câu lệnh SQL 16
II Ngôn ngữ cập nhật dữ liệu 18
III Ngôn ngữ cập nhật CSDL 18
IV Ngôn ngữ truy vấn dữ liệu 19
V Nhóm lệnh tính toán, thống kê 21
BÀI 6: RÀNG BUỘC TOÀN VẸN VÀ PHỤ THUỘC HÀM 21
I RÀNG BUỘC TOÀN VẸN 21
II PHÂN LOẠI RÀNG BUỘC TOÀN VẸN 24
III PHỤ THUỘC HÀM 27
BAI 6: DẠNG CHUẨN CỦA LƯỢC ĐỒ 28
I.Một Số Khái Niệm Liên Quan Đến Các Dạng Chuẩn 28
II Dạng Chuẩn Một (First Normal Form) 29
III.Dạng Chuẩn 2 (second normal form) 29
IV Dạng Chuẩn 3 (third normal form) 30
V .Dạng Chuẩn BC (Boyce Codd normal form) 31
BÀI TẬP 32
Trang 22 Đơn vị, thông tin
Bit: Là một số có một ký số, biểu diễn bằng số 0, hoặc số 1
Một ký tự hoặc byte là một số gồm 8 bit liên tục
Trường: Là một tập các byte có liên quan Tên người có thể được cấu tạo bởi các trường tên, tên lót, họ Một trường là đơn vị nhỏ nhất có ý nghĩa đối với người sử dụng
Mẫu tin: Là một tập các trường có liên hệ với nhau
Tập tin: Là một tập các mẫu tin, trong đó các mẫu tin đều chứa một loại dữ liệu đặc biệt và những dữ liệu này có liên hệ với nhau theo một cách nào đó
II Các ưu, khuyết điểm của CSDL
1 Ưu điểm:
- Giảm thiểu dữ liệu thừa
- Bảo đảm tính toàn vẹn của dữ liệu
- Bảo đảm tính độc lập của dữ liệu
- Bảo vệ an toàn dữ liệu
- Duy trì tính nhất quản của dữ liệu
- Chi phí huấn luyện
- Phụ thuộc vào công nghệ của CSDL
III Tính độc lập giữa dữ liệu và chương trình
Khi có sự thay đổi dữ liệu (như sửa đổi cấu trúc lưu trữ các bảng dữ liệu, thêm các chỉ mục (Index) ) thì các chương trình ứng dụng (Application) đang chạy trên CSDL đó vẫn không cần phải được viết lại, hay cũng không làm ảnh hưởng đến những NSD khác
Sơ đồ tổng quát về CSDL
Trang 3Trang 3
IV Phân loại người dùng CSDL
Người dùng trong HQTCSDL gồm có 4 kiểu:
* Người quản trị CSDL thực hiện các công việc quản lý và bảo trì CSDL như sau:
- Sự chính xác và toàn vẹn dữ liệu, và bảo mật dữ liệu
- Thực hiện các công việc sao lưu và phục hồi dữ liệu
- Giữ liên lạc thường xuyên với người lập trình, người dùng, người phát triển ứng dụng để kịp thời cập nhật CSDL
- Bảo đảm sự hoạt động của CSDL và HQTCSDL
* Người phát triển và lập trình ứng dụng là những người rành về máy tính có trách nhiệm
thiết kế và tạo các chương trình ứng dụng dành cho người dùng cuối cùng
* Người dùng cuối: là những người có thể không rành về máy tính nhưng nắm rõ về các
nghiệp vụ mà ứng dụng triển khai
BÀI 2: CÁC MÔ HÌNH CƠ SỞ DỮ LIỆU
I Sơ đồ tổng quát một hệ quản trị CSDL
II Thực thể - quan hệ
Trang 41 Thực thể
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ý
2 Quan hệ
Sự thể hiện của lược đồ quan hệ Q ở một thời điểm nào đó được gọi là quan hệ, rõ ràng là
trên một lược đồ quan hệ có thể định nghĩa rất nhiều quan hệ Thường ta dùng các ký hiệu như R, S, Q để chỉ các lược đồ quan hệ, còn quan hệ được định nghĩa trên nó tương ứng được ký hiệu là là r, s, q
- Mô hình dữ liệu phân cấp
- Mô hình hướng đối tượng
IV Mô hình thực thể quan hệ
1 Định nghĩa
Mối liên hệ giữa các tập thực thể là một danh sách có thứ tự của các tập thực thể
Một tập thực thể đặc biệt có thể xuất hiện nhiều lần trong danh sách Danh sách các tập thực thể này là khái niệm ở mức lược đồ của một mối liên hệ
Mô hình thực thể quan hệ được CHEN giới thiệu năm 1976
Mô hình này được sử dụng nhiều trong thiết kế dữ liệu mức khái niệm
Loại thực thể (Entity Type) là những loại đối tượng, sự vật của thế giới thực tồn tại cụ thể
cần được quản lý
Thực thể (Entity) là một thể hiện của loại thực thể
Ví dụ: Trong loại thực thể HOCSINH có thực thể:
- (HS001, ‘Nguyễn Văn A’,’20/11/1993’, ‘Nam’)
- (HS002, ‘Trần Thị C’,’02/10/1992’, ‘Nữ’)
Thuộc tính: là những tính chất đặc trưng của một loại thực thể
Ví dụ: Loại thực thể HOCSINH có các thuộc tính:
MAHS, HOTEN, NGAYSINH, GIOITINH, NOISINH…
- Thuộc tính nhận diện: là thuộc tính để phân biệt thực thể này với thực thể kia trong tập
Trang 5Trang 5
Đa hợp (Composite): thuộc tính được tạo từ nhiều thành phần
Ví dụ: DIACHI (Sonha, tenduong, phuong, quan)
Chú ý: các thuộc tính đa trị và đa hợp có thể lồng nhau tùy ý
Ví dụ: {BANGCAP(TRUONGCAP, KETQUA,CHUYENNGANH)}
Khóa: Khóa của loại thực thể là thuộc tính để nhận dạng thực thể.Căn cứ vào đó để xác
định duy nhất một thực thể
Ví dụ: Mỗi HOCSINH có một mã duy nhất để phân biệt HS này với HS kia
Loại kết hợp (quan hệ): là mối kết hợp, sự liên kết giữa hai hay nhiều loại thực thể
Bản số của nhánh là số lượng tối thiểu và số lượng tối đa tham gia vào mối kết hợp.Ký
hiệu (số lượng tối thiểu, tối đa) – (1,n)
Loại thực thể yếu - Là loại thực thể không có khóa chính
- Phải tham gia trong một loại mối kết hợp xác định trong đó phải có một loại thực thể chủ
Ví dụ: Thân nhân là một loại thực thể yếu có các thuộc tính HOTEN, NGAYSINH,
QUANHE và tham gia và mối kết hợp Có với thực thể chủ NHANVIEN
V Mô hình dữ liệu quan hệ
1 Định nghĩa mô hình
Mô hình CSDL quan hệ do E.F Codd đề xuất năm 1971, mô hình này bao gồm:
- Một hệ thống các ký hiệu để mô tả dữ liệu dưới dạng dòng và cột như quan hệ, bộ, thuộc tính, khóa chính, khoá ngoại,
- Một tập hợp các phép toán thao tác trên dữ liệu như phép toán tập hợp, phép toán quan hệ, ràng buộc toàn vẹn quan hệ
VI Mô hình dữ liệu mạng
Mẫu tin: Mô tả đối tượng trong thế giới thực
Ví dụ: (‘NV001’, ‘Nguyễn Văn Tuấn’, 02/02/1942’, ‘Nam’)
Loại mẫu tin: Là tập các mẫu tin cùng tính chất
Ví dụ: Tập hợp các mẫu tin về nhân viên trong công ty tạo thành NHANVIEN
Loại liên hệ: Mô tả sự liên kết giữa 1 loại mẫu tin chủ và loại mẫu tin thành viên
Ví dụ: Nhân viên (tham gia)công việc
Bản số: chỉ ra số lượng các mẫu tin tham gia trong các mối quan hệ
- 1-1 (one to one): một mẫu tin từ loại mẫu tin chủ kết hợp với 1 mẫu tin của loại mẫu tin thành viên
- 1- n (one to many): 1 mẫu tin từ loại mẫu tin chủ kết hợp với 1 hoặc nhiều loại 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 1 loại mẫu tin thành viên
- Recursive: một 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 gọi là Đệ quy
Trang 62 Đặc điểm của mô hình dữ liệu mạng
- Tương đối đơn giản
- Dễ sử dụng
- Không thích hợp với việc biểu diễn CSDL có quy mô lớn
- Khả năng diễn đạt ngôn ngữ kém
VII Mô hình dữ liệu phân cấp (dạng tree)
1 Định nghĩa
Mô hình dữ liệu phân cấp (Hierachical Data Model) - được gọi tắt là mô hình phân cấp (Hierachical Model): Mô hình là một cây (Tree), trong đó mỗi nút của cây biểu diễn một thực thể, giữa nút con và nút cha được liên hệ với nhau theo một mối quan hệ xác định
2 Loại mẫu tin:
(Recorde Type) là mẫu đặc trưng cho 1 loại đối tượng riêng biệt Chẳng hạn như trong việc quản lý nhân sự tại một đơn vị, đối tượng cần phản ảnh của thế giới thực có thể là Phòng, Nhân viên, Công việc, lý lịch do đó có các loại mẫu tin đặc trưng cho từng đối tượng này Trong đồ thị biểu diễn mô hình mạng mỗi loại mẫu tin được biểu diễn bởi một hình chữ nhật, một thể hiện (Instance) của một loại mẫu tin được gọi là bản ghi.Trong ví dụ trên loại mẫu tin Phòng có các mẫu tin là các phòng, ban trong đơn vị; loại mẫu tin nhân viên có các mẫu tin là các nhân viên đang làm việc tại các phòng ban của cơ quan
3 Loại mối liên hệ:
Kiểu liên hệ là phân cấp, theo cách:
• Mẫu tin thành viên chỉ đóng vai trò thành viên của một mối liên hệ duy nhất, tức là nó thuộc một chủ duy nhất Như vậy, mối liên hệ từ mẫu tin chủ tới các mẫu tin thành viên là 1¸n, và từ mẫu tin (hay bản ghi - record) thành viên với mẫu tin chủ là 1¸1
• Giữa 2 loại mẫu tin chỉ tồn tại 1 mối liên hệ duy nhất
VIII Mô hình dữ liệu hướng đối tượng
Mô hình dữ liệu hướng đối tượng (Object Oriented Data Model) ra đời từ cuối những năm
80 và đầu những năm 90
Đây là loại mô hình tiên tiến nhất hiện nay dựa trên cách tiếp cận hướng đối tượng đã quen thuộc trong các phương pháp lập trình hướng đối tượng, nó sử dụng các khái niệm như lớp (class), sự kế thừa (inheritance), kế thừa bội (tức là kết thừa từ nhiều lớp cơ sở multi-inheritance) Đặc trưng cơ bản của cách tiếp cận này là tính đóng gói (encapsulation), tính
đa hình (polymorphism) và tính tái sử dụng (Reusability)
Trang 7Trang 7
BÀI 3: MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ
I Các khái niệm
1 Thuộc tính
Tên gọi: Dãy ký tự gợi nhớ
- Kiểu dữ liệu: Sổ, chuỗi, ngày tháng, luận lý…
- Miền giá trị: Tập giá trị mà thuộc tính đó có thể nhận Ký hiệu Dom(A)
Ví dụ: Thuộc tính GIOITINH, kiểu dữ liệu chuổi Miền giá trị: Dom(GIOITINH) = “Nam, Nữ”
- Trong cùng đối tượng không có 2 thuộc tính cùng tên
2 Lược đồ quan hệ
Tất cả các thuộc tính cần quản lý của đối tượng cùng mối liên hệ giữa chúng gọi là lược đồ quan hệ
Ví dụ: HOCVIEN (MAHV, HOTEN, NGSINH, GIOITINH, NOISINH, MALOP)
LOP (MALOP, TENLOP, SISO, TRGLOP, KHOA)
Nhiều lược đồ quan hệ cùng nằm trong một hệ thống quản lý gọi là lược đồ cơ sở dữ liệu
3 Tân từ
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 lưu trữ học viên nào học môn gì? Thi lần thứ mấy và điểm là bao nhiêu?
4 Bộ
Đị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ệ của một bảng (table) với các cột gọi là thuộc tính và theo hàng gọi là bộ
Ví dụ: Mỗi bộ của quan hệ Q(A1, A2,…… , An) là q(a1, a2,…… , an) với giá trị € Dom(A)
5 Thể hiện của quan hệ
Đị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
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:
6 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ó thể có ít nhất một siêu khóa hay nhiều siêu khóa
Ví dụ: các siêu khóa của quan hệ HOCVIEN là:
{Mahv};{Mahv,Hoten};
{Hoten};{Noisinh,Hoten}
Siêu khóa có ít thuộc tính nhất được gọi là Khóa hay Khóa chỉ định
1 lược đồ quan hệ có thể có nhiều khóa
- Trong lược đồ quan hệ, 1 khóa được chọn làm khóa chính (primary key)
Trang 8- Thuộc tính có tham gia vào khóa được gọi là thuộc tính khóa, ngược lại, được gọi là thuộc tính không khóa
7 Khóa ngoại
- 1 tập thuộc tính được gọi là Khóa ngoại của Lược đồ quan hệ Q nếu và chỉ nếu nó nó là
tập thuộc tính của Q+ và là khóa của lược đồ quan hệ khác
Ví dụ : Cho lược đồ cơ sở dữ liệu Quản Lý Sinh Viên, các lược đồ quan hệ :
Q1= SINHVIEN(MaSV,Ho,Ten,DiemTB)
Q2= HOCPHAN(MaHP,TenHP,SoTinChi)
Q3= DANGKY_HOCPHAN(MaSV,MaHP)
{MaSV} là khóa của Q1
{MaHP} là khóa của Q2
{MaSV,MaHP} là khóa của Q3
{MaSV}, {MaHP} là các khóa ngoại của Q3
Trong thiết kế CSDL, nhà thiết kế thường dựa vào các Tân từ để xác định khóa cho Lược
đồ quan hệ
II Ràng buộc toàn vẹn
1 Định nghĩa ràng buộc toàn vẹn
Ràng buộc toàn vẹn là các quy định điều kiện từ ứng dụng thực tế, các điều kiện này là bất biến
=> Vì thế phải luôn đảm bảo cơ sở dữ liệu thỏa ràng buộc toàn vẹn sau mỗi thao tác làm thay đổi tình trạng của cơ sở dữ liệu
2 Các đặc trưng của ràng buộc
- Mô tả chặt chẽ ý nghĩa của ràng buộc toàn vẹn
Nội dung được phát biểu bằng ngôn ngữ tự nhiên hoặc ngôn ngữ hình thức (ngôn ngữ tân
từ, đại số quan hệ, mã giã)
- Ngôn ngữ tự nhiên: dễ hiểu, nhưng không chặt chẽ, logic
- Những thuộc tính là khóa chính không được sửa giá trị
- Trước khi xét thao tác thực hiện có thể vi phạm ràng buộc hay không thì CSDL phải thỏa mãn ràng buộc toàn vẹn trước
- Thêm xét trên một bộ của quan hệ Sửa và xóa xét trên từng thuộc tính của quan hệ
Ràng buộc Ri Thêm Xóa Sửa
Quan hệ 1
……
Trang 9Trang 9
-: Không ảnh hưởng
+(A): Ảnh hưởng khi sửa thuộc tính A
-(*): Không ảnh hưởng do thao tác không thực hiện được
4 Ràng buộc bối cảnh trên một quan hệ
a Ràng buộc miền giá trị
Là một tập các giá trị mà thuộc tính có thể nhận được
R1: Điểm của HV chỉ có thể từ 1-> 10
hv HOCVIEN: hv.DIEM {1 10}
b Ràng buộc liên thuộc tính
Là ràng buộc giữa các thuộc tính với nhau trong cùng một bộ của quan hệ
R2: Ngày bắt đầu đi dạy luôn nhỏ hơn ngày kết thúc
gd GIANGDAY: gd.TUNGAY < gd.DENNGAY
Là ràng buộc trên cũng nhiều bộ của quan hệ có thể liên quan đến nhiều thuộc tính
R3: Các giáo viên có cùng học vị, cùng hệ số lương thì mức lương là như nhau
5 Ràng buộc bối cảnh nhiều quan hệ
a Ràng buộc tham chiếu
Là ràng buộc quy định giá trị thuộc tính một bộ của quan hệ R (khóa ngoại) phải phụ thuộc vào sự tồn tại của bộ trong quan hệ S (khóa chính)
RBTV tham chiếu hay còn gọi là RB phụ thuộc tồn tại hay RV khóa ngoại
Học viên thi một môn nào đó thì môn đó phải có trong bảng môn học
R2: Ràng buộc liên bộ liên thuộc tính
Ngày mà giáo viên đó dạy một môn học phải sau ngày vào làm
Nếu gv GIAOVIEN: gd.Magv = gv.Magv thì gv.NGVL gd.TUNGAY
Trang 10b Ràng buộc toàn vẹn do thuộc tính tổng hợp
Là ràng buộc giữa các thuộc tính các bộ trên những quan hệ khác nhau
Thuộc tính tổng hợp là những thuộc tính được tính toán từ giá trị của các thuộc tính khác, các bộ khác
Ví dụ : SANPHAM(Masp, Tensp, Nuocsx, Gia)
KHACHHANG(Makh, Hoten, Doanhso)
HOADON(Sohd, Nghd,Makh,Trigia)
CTHD(Sohd,Masp,Soluong,Gia)
– Trị giá của một hóa đơn bằng tổng thành tiền của các chi tiết thuộc hóa đơn đó
III Các phép tính trên cơ sở dữ liệu quan hệ
Trang 12BÀI 4: NGÔN NGỮ THAO TÁC DỮ LIỆU
- 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
3 Biểu thức đại số quan hệ
- 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 quan hệ
- 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
II Các phép toán trên quan hệ
t phải 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 chất giao hoán
Ví dụ : Cho LĐ CSDL Quản lý giáo vụ như sau:
HOCVIEN(MAHV, HO,TEN, NGAYSINH, GIOITINH, NOI SINH, MALOP)
LOP(MALOP, TENLOP, TRUONGLOP, SISO, MAGVCN)
KHOA(MAKHOA, TENKHOA, NGAYTLAP, TRUONGKHOA)
MONHOC(MAMH, TENMH, TCLT, TCTH, MAKHOA)
GIAOVIEN(MAGV, TENGV, HOCVI, HOCHAM, GIOITINH, NGAYSINH, NGVAOLAM, HESO, MUCLUONG, MAKHOA)
GIANGDAY(MALOP, MAMH, MAGV, HOCKY, NAM, TUNGAY, DENNGAY)
KQTHI(MAHV, MAMH, LANTHI, NGAYTHI, DIEM, KQ)
Thực hiện chọn những HS có giới tính là "Nam" và NOISINH ở "TPHCM"
Trang 13HOCVIEN►Mahv Trglop ◄LOP
Nếu điều kiện kết có 2 cột giống nhau thì bỏ bớt một cột
HOCVIEN> Mahv < KETQUATHI
HOCVIEN * Mahv KETQUATHI
3 Phép kết ngoài
2 Phép chiếu
Sử dụng để trích chọn giá trị một và thuộc tính của quan hệ
Ký hiệu (A1, A2 Ak)(R)
Trong đó A1, A2, Ak là các thuộc tính được chiếu
Kết quả của phép tính 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 chất giao hoán
Ví dụ:
Tìm mã số, họ tên của những học viên “Nam” và có nơi sinh ở “TPHCM”
Dùng để biểu diễn các câu truy vấn phức tạp
Ký hiệu A B
Ví dụ:
R(HO,TEN, LUONG) NV, TENNV, LUONG) (NHANVIEN)
Bên trái là biến quan hệ mới, kết quả nằm bên tay phải sẽ được gán vào quan hệ mới ở bên trái
1 Phép kết (Theta join)
Phép tính này giống như phép tích dercarts 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
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
Trang 14Left outer join
Right outer join
Full outer join
Ví dụ: In ra danh sách của học viên và điểm số mà học viên đó tham gia thi
KETQUATHI
HOCVIEN
Kết quả hiển thị sau khi kết
IV Ngôn ngữ giao tiếp CSDL
Là ngôn ngữ chuẩn dùng để thao tác và truy vấn 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
1 Ngôn ngữ mô tả dữ liệu (Data Definition Language)
Là ngôn định nghĩa CSDL cho phép khai báo cấu trúc bảng, các mối liên hệ và các ràng buộc
a Lệnh tạo bảng
b Một số kiểu dữ liệu
Là một phép kết dùng để tránh trường hợp mất thông tin
- Thực hiện phép kết sau đó thêm vào kết quả các bộ của quan hệ mà không phù hợp với các
bộ của quan hệ kia
Trang 15Trang 15
Sử dụng các kiểu dữ liệu và cấu trúc tạo bảng tạo các bảng dữ liệu sau đây trong SQL Server
Ví dụ: Tạo bảng CTHD
2 Ngôn ngữ thao tác dữ liệu (Data Manipulation Language)
Là ngôn ngữ sử dụng các câu lệnh SQL để thao tác trên CSDL như: Thêm, Sửa, Xóa
Ví dụ:
Thêm một Khách hàng vào bảng KHACHHANG
INSERT INTO (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK, CMND) Values (“KH02”, “Nguyen Van A”, “123 Hà Tây”, “ 0925364785”, “20/11/1983”, 25365,
“25/12/2006”, “273083815”
3 Ngôn ngữ truy vấn dữ liệu (Structured Query Language)
Là ngôn ngữ sử dụng các câu lệnh truy vấn và nhóm lệnh gom nhóm cũng như các hàm tính toán, thống kê để tìm kiếm và chọn lọc dữ liệu cần thiết theo mong muốn,
4 Ngôn ngữ quản lý dữ liệu
Thay đổi cấu trúc của các bảng dữ liệu
Khai báo bảo mật thông tin
Quyền hạn của người dùng trong khai thác CSDL
Trang 16BÀI 5: NGÔN NGỮ TRUY VẤN DỮ LIỆU
I.Tổng quan, các qui ước biểu diễn câu lệnh SQL
1 Định nghĩa
SQL = Structured Query Language
- Là ngôn ngữ dùng để truy vấn dữ liệu
- Ngôn ngữ = cú pháp (cấu trúc ngữ pháp) + các từ khóa (từ vựng) + hàm lập sẵn
- Là 1 công cụ giao tiếp của HQTCSDL
Là cầu nối giữa:
- Nhà phát triển (Lập trình viên ) và Hệ quản trị CSDL
- Người dùng cuối (End-user) và Hệ quản trị CSDL
2 Qui ước biểu diễn
- Chuỗi (String) : được đặt trong dấu nháy kép hoặc đơn
- Ngày tháng (date/time) : được đặt trong cặp dấu #, giữa ngày – tháng – năm là dấu phân
cách “-” hoặc “/”, tên tháng có thể là số (1-12) hoặc viết tắt 3 chữ cái đầu
Trang 17se Tru
e
And Luật và (5>2) And
(2>5) (5>2) And (5>4)
Fal
se Tru
e
Or Luật hay (5>2) Or
(2>5) (2>5) Or (4>5)
Tru
e Fal
? : đại diện cho một ký tự bất kỳ
# : đại diện cho 1 ký tự số
[A1,A2,…] : đại diện cho 1 ký
tự thuộc tập {A1, A2, …}
[A1 – A2] : đại diện cho 1 ký tự
Trang 18WHERE DIEMTB>= IIF(GIOITINH=‘Nam’,6.5,6)
Hàm Date: Trả về ngày giờ của hệ thống
SELECT *
WHERE NGAYLAP >= (DATE()-5)
Hàm Day(<biểu thức ngày>) : trả về chỉ số của ngày trong <biểu thức ngày>
Ví dụ : Day(#12/2/2005#) 12
Hàm Month(<biểu thức ngày>) : trả về chỉ số của tháng trong <biểu thức ngày>
Hàm Year(<biểu thức ngày>) : trả về chỉ số của năm trong <biểu thức ngày>
Hàm Len(<giá trị chuỗi>) : trả về độ dài của chuỗi
Left(s,n) : trả về chuỗi gồm n ký tự bên trái của chuỗi s
Right(s,n) : trả về chuỗi gồm n ký tự bên phải của chuỗi s
Mid(s,i,n) : trả về chuỗi con của chuỗi s gồm n ký tự kể từ vị trí i
II Ngôn ngữ cập nhật dữ liệu
1 Thêm thuộc tính vào quan hệ
ALTER TABLE SINHVIEN ADD COLUMN GIOITINH TEXT(10)
2 Sửa kiểu dữ liệu của thuộc tính
ALTER TABLE SINHVIEN ALTER COLUMN GIOITINH BOOLEAN
3 Xóa thuộc tính
ALTER TABLE SINHVIEN DROP COLUMN GIOITINH
4 Xóa ràng buộc khóa chính
ALTER TABLE SINHVIEN DROP CONSTRAINT k1
5 Thêm ràng buộc khóa chính
ALTER TABLE SINHVIEN ADD CONSTRAINT k1 PRIMARY KEY (MASV)
6 Thêm ràng buộc miền giá trị lên thuộc tính
ALTER TABLE SINHVIEN ADD CONSTRAINT k3 CHECK (DIEMTB>=0 AND
DIEMTB<=10)
III Ngôn ngữ cập nhật CSDL
1 Thêm một trường dữ liệu mới
INSERT INTO <TÊN BẢNG>(
Trang 19Trang 19
Nếu có thuộc tính nào trong lược đồ quan hệ <TÊN BẢNG> không được khai báo trong
<TÊN BẢNG>(…) và VALUES(…) thì giá trị của bộ mới được thêm vào ứng với thuộc tính đó sẽ được đặt bằng Null
2 Sửa trường dữ liệu mới
UPDATE <TÊN BẢNG> SET
3 Xóa một trường dữ liệu mới
DELETE FROM <TÊN BẢNG>
WHERE <ĐIỀU KIỆN>
Lưu ý trong việc sửa, xóa trường dữ liệu cần phải có điều kiện where để tránh cập nhật dữ liệu sai
Ví dụ:
IV Ngôn ngữ truy vấn dữ liệu
Cấu trúc chung của một câu truy vấn
SELECT [DISTINCT] {<tên cột> | <biểu thức> [,]} | *
FROM {<tên bảng> | <tên view> [,]}
[WHERE <biểu thức điều kiện>]
[GROUP BY {<tên cột> | <tên biểu thức> [,]} [HAVING <biểu thức điều kiện>]]
[ORDER BY {<tên cột> | <tên biểu thức> [ASC | DESC] [,]}
Ví dụ 1 : Chọn tất cả sinh viên có điểm trung bình >= 6.5
SELECT * FROM SINHVIEN WHERE DIEMTB >= 6.5;
Ví dụ 2 : Chọn 10 sinh viên có điểm trung bình cao nhất
SELECT TOP 10 FROM SINHVIEN;
Ví dụ 3 : Chọn 10% sinh viên có điểm trung bình cao nhất
SELECT TOP 10% FROM SINHVIEN;
Ví dụ 4 : Chọn có loại bỏ các bộ trùng : chọn các mức điểm khác nhau mà các sinh viên đã đạt được
SELECT DISTINCT DIEMTB FROM SINHVIEN;
Trang 20Lưu ý : Dấu ; cho biết đã kết thúc câu lệnh SQL
AND S.MASV= DK.MASV
AND DK.MAHP= HP.MAHP;
Là chọn các dữ liệu theo điều kiện và sắp xếp thứ tự theo thuộc tính
Ví dụ 1 : Tìm tất cả các tên sinh viên đã đăng ký học phần có mã là CSDL, sắp thứ tự kết quả trả về theo tên tăng dần, họ tăng dần và mã sinh viên giảm dần
SELECT MASV,HO,TEN
FROM (SINHVIEN INNER JOIN DANGKY_HOCPHAN ON
SINHVIEN.MASV = DANGKY_HOCPHAN.MASV
WHERE MAHP = ‘CSDL’
ORDER BY TEN ASC, HO ASC, MASV DESC;
Lưu ý : Khi thuộc tính giữa các bảng được truy vấn sau từ khóa From không trùng tên thì ta
có thể ghi tường minh tên thuộc tính, mà không cần phải ghi :
<Tên bảng>.<Tên thuộc tính>
Ví dụ 2 : Tìm tất cả các tên sinh viên đã đăng ký học phần ít nhất 3 học phần trở lên
SELECT SINHVIEN.MASV, SINHVIEN.HOTEN
DANGKY_HOCPHAN.MASV=SINHVIEN.MASV
GROUPBY SINHVIEN.MASV,SINHVIEN.HOTEN
HAVING COUNT(DANGKY_HOCPHAN.MAHP)>4
3 Truy vấn lồng nhau (truy vấn con)
Là câu lệnh truy vấn mà trong biểu thức điều kiện của WHERE hoặc HAVING là câu truy vấn khác
Ví dụ 1 : Lấy về thông tin của sinh viên có điểm trung bình cao nhất
SELECT MASV,HOTEN
WHERE DIEMTB >=
Trang 21Trang 21
ANY, SOME : Kết quả các bộ trả về của query cha so sánh với 1 trong (bất kỳ) các bộ của
query con
ALL : Kết quả các bộ trả về của query cha so sánh với tất cả các bộ của query con
IN : Kết quả các bộ trả về của query cha bằng với 1 trong (bất kỳ) các bộ của query con NOT IN : Kết quả các bộ trả về của query cha không bằng với bất kỳ bộ nào của query con EXISTS / NOT EXISTS : Kết quả các bộ trả về của query cha được thỏa khi query con có
tồn tại ít nhất 1 bộ / không tồn tại bộ nào
Ví dụ 2 : Lấy về thông tin của các sinh viên có đăng ký môn học CSDL
SELECT MASV,HOTEN
(SELECT MASV FROM DANGKY_HOCPHAN WHERE MAHP=‘CSDL’)
Ví dụ 3: Trả về điểm trung bình cộng của các sinh viên nếu như có ít nhất 1 sinh viên có điểm trung bình >= 5
Hàm Sum: Tính tổng của các giá trị của cột theo điều kiện sau Where
Ví dụ: Trả về tổng giá trị của các hóa đơn có ngày lập trong vòng 6 ngày gần đây
SELECT Sum(GIATRI)
WHERE NGAYLAP >= (DATE()-5)
Hàm Max: Dùng để tìm giá trị lớn nhấn của cột
Ví du: Trả về giá trị lớn nhất trong các hóa đơn có ngày lập trong vòng 6 ngày gần đây
SELECT Max(GIATRI)
WHERE NGAYLAP>=(DATE()-5)
Avg(<tên thuộc tính>) : trả về giá trị trung bình cộng của các giá trị tương ứng với <tên
thuộc tính> của các bộ thỏa điều kiện WHERE có trong quan hệ
Count(<tên thuộc tính>) : trả về số lượng các giá trị tương ứng với <tên thuộc tính> của các
bộ thỏa điều kiện WHERE và khác Null có trong quan hệ
BÀI 6: RÀNG BUỘC TOÀN VẸN VÀ PHỤ THUỘC HÀM
I RÀNG BUỘC TOÀN VẸN
1 Khái Niệm Ràng Buộc Toàn Vẹn
Trong mỗi CSDL luôn tồn tại nhiều mối liên hệ giữa các thuộc tính, giữa các bộ; sự liên hệ này có thể xảy ra trong cùng một quan hệ hoặc trong các quan hệ của một lược đồ CSDL Các mối liên hệ này là những điều kiện bất biến mà tất cả các bộ của những quan hệ có liên quan trong CSDL đều phải thoả mãn ở mọi thời điểm Những điều kiện bất biến đó được
Trang 22gọi là ràng buộc toàn vẹn Trong thực tế ràng buộc toàn vẹn là các quy tắc quản lý được áp
đặt trên các đối tượng của thế giới thực Chẳng hạn mỗi sinh viên phải có một mã sinh viên duy nhất, hai thí sinh dự thi vào một trường phải có số báo danh khác nhau, một sinh viên
dự thi một môn học không quá 3 lần,… Nhiệm vụ của người phân tích thiết kế là phải phát hiện càng đầy đủ các ràng buộc toàn vẹn càng tốt và mô tả chúng một cách chính xác trong
hồ sơ phân tích thiết kế - đó là một việc làm rất quan trọng Ràng buộc toàn vẹn được xem như là một công cụ để diễn đạt ngữ nghĩa của CSDL Một CSDL được thiết kế cồng kềnh nhưng nó thể hiện được đầy đủ ngữ nghĩa của thực tế vẫn có giá trị cao hơn rất nhiều so với một cách thiết kế gọn nhẹ nhưng nghèo nàn về ngữ nghĩa vì thiếu các ràng buộc toàn vẹn của CSDL
Công việc kiểm tra ràng buộc toàn vẹn thường được tiến hành vào thời điểm cập nhật dữ liệu ( thêm, sửa, xoá) Những ràng buộc toàn vẹn phát sinh phải cần được ghi nhận và xử lý một cách tường minh (thường là bởi một hàm chuẩn hoặc một đoạn chương trình)
Ràng buộc toàn vẹn và kiểm tra sự vi phạm ràng buộc toàn vẹn là hai trong số những vấn đề quan trọng trong quá trình phân tích thiết kế cơ sở dữ liệu, nếu không quan tâm đúng mức đến những vấn đề trên, thì có thể dẫn đến hậu quả nghiêm trọng về tính an toàn và toàn vẹn
dữ liệu , đặc biệt là đối với những cơ sở dữ liệu lớn
2 Các Yếu Tố Của Ràng Buộc Toàn Vẹn
Mỗi ràng buộc toàn vẹn có bốn yếu tố: điều kiện, bối cảnh, bảng tầm ảnh hưởng và hành động phải cần thực hiện khi phát hiện có ràng buộc toàn vẹn bị vi phạm:
a Điều kiện
Điều kiện của ràng buộc toàn vẹn là sự mô tả, và biểu diễn hình thức nội dung của nó Điều kiện của một ràng buộc toàn vẹn R có thể được biểu diễn bằng ngôn ngữ tự nhiên, ngôn ngữ đại số quan hệ, ngôn ngữ mã giả, ngôn ngữ truy vấn SQL,… ngoài ra điều kiện của ràng buộc toàn vẹn cũng có thể được biểu diễn bằng phụ thuộc hàm
Sau đây là một số ràng buộc toàn vẹn trên lược đồ CSDL quản lý sinh viên
Mỗi lớp học phải có một mã số duy nhất để phân biệt với các lớp học khác trong trường Mỗi lớp học phải thuộc về một khoa của trường Mỗi sinh viên có một mã số sinh viên duy nhất, không trùng với bất cứ sinh viên nào trong trường
Mỗi học viên phải đăng ký vào một lớp học trong trường
Mỗi học viên chỉ được thi tối đa 3 lần cho mỗi môn học
Tổng số học viên của một lớp phải lớn hơn hoặc bằng số lượng đếm được của một lớp tại một thời điểm nào đó
b Bối cảnh
Bối cảnh của ràng buộc toàn vẹn là những quan hệ mà ràng buộc đó có hiệu lực hay nói một cách khác, đó là những quan hệ cần phải được kiểm tra khi tiến hành cập nhật dữ liệu Bối cảnh của một ràng buộc toàn vẹn có thể là một hoặc nhiều quan hệ
Chẳng hạn với ràng buộc toàn vẹn R trên thì bối cảnh của nó là quan hệ Sinhvien
c3.Bảng tầm ảnh hưởng
Trong quá trình phân tích thiết kế một CSDL, người phân tích cần lập bảng tầm ảnh hưởng
Trang 23Trang 23
hành cập nhật dữ liệu Thời điểm cần phải kiểm tra ràng buộc toàn vẹn chính là thời điểm cập nhật dữ liệu
Một bảng tầm ảnh hưởng của một ràng buộc toàn vẹn có dạng sau:
Bảng này chứa toàn các ký hiệu + , – hoặc -(*)
Chẳng hạn + tại (dòng r1, cột Thêm) thì có nghĩa là khi thêm một bộ vào quan hệ r1 thì
-Không được sửa thuộc tính khoá
-Nếu không bị vi phạm do không được phép sửa đổi thì ký hiệu là -(*)
d.Hành động cần phải có khi phát hiện có RBTV bị vi phạm:
khi một ràng buộc toàn vẹn bị vi phạm, cần có những hành động thích hợp Thông thường
có 2 giải pháp:
Thứ nhất: Đưa ra thông báo và yêu cầu sửa chữa dữ liệu của các thuộc tính cho phù hợp với quy tắc đảm bảo tính nhất quán dữ liệu Thông báo phải đầy đủ và phải thân thiện với người
sử dụng Giải pháp này là phù hợp cho việc xử lý thời gian thực
Thứ hai:Từ chối thao tác cập nhật Giải pháp này là phù hợp đối với việc xử lý theo lô Việc
từ chối cũng phải được lưu lại bằng những thông báo đầy đủ, rõ ràng vì sao thao tác bị từ chối và cần phải sữa lại những dữ liệu nào ?
Khóa nội, khoá ngoại, giá trị NOT NULL là những ràng buộc toàn vẹn miền giá trị của các thuộc tính Những ràng buộc toàn vẹn này là những ràng buộc toàn vẹn đơn giản trong CSDL
Các hệ quản trị cơ sở dữ liệu thường có các cơ chế tự động kiểm tra các ràng buộc toàn vẹn
về miền giá trị của khoa nội, khoá ngoại, giá trị NOT NULL
Việc kiểm tra ràng buộc toàn vẹn có thể tiến hành vào những thời điểm sau đây
Thứ nhất: Kiểm tra ngay sau khi thực hiện một thao tác cặp nhật CSDL
Thao tác cặp nhật chỉ được xem là hợp lệ nếu như nó không vi phạm bất cứ một ràng buộc toàn vẹn nào , nghĩa là nó không làm mất tính toàn vẹn của CSDL Nếu vi phạm ràng buộc toàn vẹn , thao tác cặp nhật bị coi là không hợp lệ và sẽ bị hệ thống huỷ bỏ (hoặc có một xử
lý thích hợp nào đó)
Trang 24Thứ hai: Kiểm tra định kỳ hay đột xuất, nghĩa là việc kiểm tra ràng buộc toàn vẹn được tiến hành độc lập với thao tác cặp nhật dữ liệu Đối với những trường hợp vi phạm ràng buộc toàn vẹn , hệ thống có những xử lý ngầm định hoặc yêu cầu người sử dụng xử lý những sai sót một cách tường minh
II PHÂN LOẠI RÀNG BUỘC TOÀN VẸN
Trong quá trình phân tích thiết kế CSDL, người phân tích phải phát hiện tất cả các ràng buộc toàn vẹn tiềm ẩn trong CSDL đó Việc phân loại các ràng buộc toàn vẹn là rất có ích,
nó nhằm giúp cho người phân tích có được một định hướng để phát hiện các ràng buộc toàn vẹn, tránh bỏ sót Các ràng buộc toàn vẹn có thể được chia làm hai loại chính như sau: Thứ nhất: Ràng buộc toàn vẹn có phạm vi là một quan hệ bao gồm :Ràng buộc toàn vẹn miền giá trị, ràng buộc toàn vẹn liên thuộc tính, ràng buộc toàn vẹn liên bộ
Thứ hai: Ràng buộc toàn vẹn có phạm vi là nhiều quan hệ bao gồm :Ràng buộc toàn vẹn phụ thuộc tồn tại, ràng buộc toàn vẹn liên bộ - liên quan hệ, ràng buộc toàn vẹn liên thuộc tính - liên quan hệ
Để minh hoạ cho phần lý thuyết của chương này, chúng ta xét ví dụ sau đây:
Q4: Hoadon(SOHD, NGAYLAP, SODH, TRIGIAHD, NGAYXUAT)
Tân từ:
Mỗi hoá đơn tổng hợp có một mã số duy nhất là SOHD, mỗi hoá đơn bán hàng có thể gồm nhiều mặt hàng Mỗi hoá đơn xác định ngày lập hoá đơn (NGAYLAP), ứng với số đặt hàng nào (SODH) Giả sử rằng hoá đơn bán hàng theo yêu cầu của chỉ một đơn đặt hàng có mã số
là SỌDH và ngược lại , mỗi đơn đặt hàng chỉ được giải quyết chỉ trong một hoá đơn Do điều kiện khách quan có thể công ty không giao đầy đủ các mặt hàng cũng như số lượng từng mặt hàng như yêu cầu trong đơn đặt hàng nhưng không bao giờ giao vượt ngoài yêu cầu Mỗi hóa đơn xác định một trị giá của nhưng các mặt hàng trong hoá đơn (TRIGIAHD)