Tải bản đầy đủ (.pdf) (48 trang)

Co so du lieu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (988.81 KB, 48 trang )

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 1


BÀI 1: TỔNG QUAN VỀ CSDL
I. Dữ liệu – thông tin.
1. Định nghĩa của CSDL
Là một chổ chứa có tổ chức tập hợp các tập tin dữ liệu có tương quan, các mẫu tin và các
cột.
2. Đơ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.
- Tạo dễ dàng khi sử dụng.
- Tiết kiệm không gian lưu trữ.
2. Khuyết điểm:
- Tính phức tạp của CSDL.
- Chi phí cao.
- Dễ bị hư hại.
- 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 2


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 3


1. 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.

III. Các mô hình CSDL
1. Định nghĩa
Mô hình dữ liệu là sự trừu tượng hóa của môi trường thực thể, biểu diễn dữ liệu ở mức quan
niệm. Giới thiệu các mô hình dữ liệu sau:
2. Các mô hình
- Mô hình thực thể quan hệ.
- Mô hình dữ liệu quan hệ.
- Mô hình dữ liệu mạng.

- 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
thực thể.
- Thuộc tính mô tả: là thuộc tính cung cấp thông tin chi tiết hơn về thực thể trong tập thực
thể.
Đơn trị (Simple): mỗi thực thể chỉ có một giá trị ứng với thuộc tính.
Ví dụ: MAHV, HOTEN
Đa trị (Multi Value): thuộc tính có thể có nhiều giá trị đối với một thực thể.
Ví dụ: BANGCAP ký kiệu là {BANGCAP}
Trang 4



Đ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
1. Định nghĩa mô hình
Mô hình dữ liệu mạng (Network Data Model) – còn được gọi tắt là mô hình mạng hoặc mô
hình lưới (Network Model) là mô hình được biểu diễn bởi một đồ thị có hướng.
Trong mô hình này người ta đưa vào các khái niệm: mẫu tin hay bản ghi (Record), loại mẫu
tin (Record Type) và loại liên hệ (Set Type).
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 5


2. Đặ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.
2. Ví dụ
Quản lý sổ hộ khẩu ta thấy một tỉnh thành phố (thì) có nhiều quận huyện, một quận huyện
chỉ thuộc một tỉnh thành duy nhất. Một quận huyện (thì) có nhiều phường xã và một phường
xã chỉ thuộc một quận huyện duy nhất. Mỗi phường xã được chia thành nhiều địa bàn điều
tra, mỗi địa bàn chỉ thuộc một phường xã duy nhất v.v...

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ở multiinheritance). Đặ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 6


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 7


- 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.
- Ngôn ngữ hình thức: chặt chẽ, cô động.
3. Bảng tầm ảnh hưởng
- Nhằm xác định khi nào cần tiến hành kiểm tra ràng buộc toàn vẹn. Thao tác nào thực hiện
có thể vi phạm ràng buộc toàn vẹn.
- Phạm vi ảnh hưởng của một ràng buộc toàn vẹn được biểu diễn bằng bảng 2 chiều gọi là
bảng tầm ảnh hưởng.
Một số quy định chung:
- 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
……..
Quan hệ n
+: Ảnh hưởng đến RBTV
Trang 8



-: 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
Ràng buộc Thêm Xóa Sửa
R2
GIANGDAY +
+
c. Ràng buộc liên bộ
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.
gv1,gv2
GIAOVIEN:
Nếu gv1.Hocvi=gv2.Hocvi)
(gv1.Heso=gv2.Heso) thì
gv.Mucluong=gv.Mucluong
Ràng buộc Thêm Xóa Sửa
R3
GIAOVIEN +

+
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.
• k
KETQUATHI, m
MONHOC: k.Mamh = m.Mamh
•Hoặc:KETQUATHI[Mamh]
MONHOC[Mamh]
Ràng buộc Thêm Xóa Sửa
R3
KETQUA
+
-(*)
MONHOC
+
-(*)
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
gd
GIANGDAY
Nếu gv
GIAOVIEN: gd.Magv = gv.Magv thì gv.NGVL
gd.TUNGAY
Trang 9



Ràng buộc Thêm Xóa Sửa
R3
GIANGDAY +
-(TN)
GIAOVIEN +
(NVL)
b. 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ệ
1. Phép hợp (Union) : 
Cho lược đồ quan hệ Q, với các quan hệ thể hiện q1, q2
Ta có :
q1  q2 = q3 = {r : r  q1  r  q2 }
2. Phép giao (Intersection)
Phép giao : 
Cho lược đồ quan hệ Q, với các quan hệ thể hiện q1, q2
Ta có :
q1  q2 = q3 = {r : r  q1  r  q2 }
3. Phép trừ (Minus, difference)
Phép trừ : Cho lược đồ quan hệ Q, với các quan hệ thể hiện q1, q2
Ta có :
q1 - q2 = q3 = {r : r  q1  r  q2 }

4. Tích Descartes
Cho lược đồ quan hệ Q1(A1,A2,…An) có quan hệ thể hiện là q1; Q2(B1,B2,…Bm) có quan
hệ thể hiện là q2
q1 x q2 = q3 , ta có :
q3 là 1 quan hệ của Q3 với Q3+ = Q1+ + Q2+
q3 = {r : r.(Q1+) q1  r.(Q2+) q2}
Cho lược đồ quan hệ Q1(MaSV,MaMH,DiemThi), Q2(MaMH,TenMH) có các quan hệ q1,
q2 :
q1 =
MaSV MaMH DiemThi
99001

CSDL

5.0

99002

CTDL

2.0
Trang 10


99003

MANG 8.0

q2 =
MaMH TenMH

CSDL CSDL
FOX

Foxpro

 q3 =
MaSV MaMH Diem MaMH TenMH
99001 CSDL 5.0

CSDL CSDL

99001 CSDL 5.0

FOX

99002 CTDL 2.0

CSDL CSDL

99002 CTDL 2.0

FOX

99003 MANG 8.0

CSDL CSDL

99003 MANG 8.0

FOX


Foxpro
Foxpro
Foxpro

Trang 11


BÀI 4: NGÔN NGỮ THAO TÁC DỮ LIỆU
I. Đại số quan hệ.
1. Định nghĩa
Đạ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ệ.
2. 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.
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ệ
1. Phép chọn
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:
p(R)
Định nghĩa:
p(R) {t /t R, p(t)}

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
p1 (
p2(R))=
p2 (
p1(R)) =
p1 ^ p2) (R)
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".
(Gioitinh=‘Nam’)
(Noisinh=‘TpHCM’)(HOCVIEN)

Trang 12


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”.
Mahv,Hoten

(Gioitinh=‘Nam’)

(Noisinh=‘TpHCM’) (HOCVIEN)

3. Phép gán
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.

III. Các phép cơ sở trên quan hệ
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.
R >p< S
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à
điều kiện của phép kết là một trong các phép
so sánh (#, =,>,<).
Ví dụ

R
B1 B2
R> A1>B2< S
R
4
3
A1 A2 B1 B2
A1 A2
HOCVIEN ►Mahv Trglop ◄ LOP
5
7
1
8 4 3
1
2
Nếu điều kiện kết có 2 cột giống nhau thì bỏ
1
8 5 7
1
8
bớt một cột.
2. Phép kết bằng, phép kết tự nhiên.
Nếu là phép so sánh bằng (=), phép gọi là phép kết bằng (equi – join)
HOCVIEN> Mahv< KETQUATHI
HOCVIEN *MahvKETQUATHI
3. Phép kết ngoài

Trang 13



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.
Left 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

Trang 14


Kiểu
Chuỗi
Logic

Ngày
Số

SQL Server 2000
Char(n),
nchar(n),
varchar(n), nvarchar(n)
Bit
Smalldatetime,datetime
Tinyint, smallint, int,
numeric(m,n)....

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 15


BÀ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.
Ví dụ :
SELECT *
FROM SINHVIEN
WHERE MASV = “SV01”
- Số (number)
Ví dụ : 1024 ; 4.5 ; …
- 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.
Ví dụ : #12/2/2001# ; #1-Jan-94#
- Các toán tử so sánh
Toán Ý nghĩa
Ví dụ KQ
tử

Nhỏ hơn
3 < 5 True
<
<=
Nhỏ hơn hay 2 <= True
bằng
5
>
>=
=
>

Lớn hơn

2 > 5 Fals
e
Lớn hơn hay 2 >= Fals
bằng
5
e
Bằng nhau
2 = 5 Fals
e
Khác nhau
2 <> True
5

Trang 16



- Các toán tử luận lý
Toá
Ý nghĩa Ví dụ
KQ
n tử
Not Luật phủ Not (5 > 2) Fal
định
Not (2>5) se
Tru
e
And Luật và

(5>2) And Fal
(2>5)
se
(5>2) And Tru
(5>4)
e
Or Tru
Or Luật hay (5>2)
(2>5)
e
(2>5)
Or Fal
(4>5)
se
- Toán tử Between …And
Cú pháp :
Giá trị so sánh Between value2 and value3
Ví dụ :

SELECT
*
FROM
SINHVIEN
WHERE
DIEMTB BETWEEN 5 AND 6.5
- Toán tử Like
Cú pháp :
Cột so sánh LIKE < giá trị>
Các ký tự đại diện
* : đại diện cho tất cả ký tự bất
kỳ
? : đạ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ự
thuộc khoảng ký tự từ A1 đến
A2
Ví dụ: Tìm tất cả sinh viên có từ Hoa trong phần cuối của tên, ví dụ : ‘Ngọc Thoa’, ‘Đào
Hoa’, …
SELECT
*
FROM
SINHVIEN
Trang 17
WHERE
TEN LIKE ‘*Hoa’
3. Một số hàm hệ thống



Hàm IIf
Cú pháp : IIf(điều kiện,giá trị 1,giá trị 2)
Ví dụ :
SELECT
*
FROM
SINHVIEN
WHERE
DIEMTB>= IIF(GIOITINH=‘Nam’,6.5,6)
Hàm Date: Trả về ngày giờ của hệ thống.
SELECT
*
FROM
HOADON
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>(
<TÊNTHUỘCTÍNH1>,
<TÊNTHUỘCTÍNH2>,…)
VALUES(<GIÁ TRỊ 1>, <GIÁ TRỊ 2>, …)
Lưu ý :
Các giá trị trong VALUES(…) phải tương ứng với các thuộc tính trong <TÊN BẢNG>(…)

Trang 18


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
<THUỘC TÍNH 1> = <GIÁ TRỊ 1>,
<THUỘC TÍNH 2> = <GIÁ TRỊ 2>,

<THUỘC TÍNH n> = <GIÁ TRỊ n>
WHERE <ĐIỀU KIỆN>
Ví dụ:
UPDATE MONHOC SET
TCLT = 45
WHERE MAMH = ‘MH001’
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] [,]}
1. Truy vấn chọn dữ liệu
Là các câu truy vấn chọn lựa dữ liệu từ một hoặc nhiều bảng đơn giản dựa theo các điều
kiện thích hợp.

Cấu trúc
SELECT * FROM <tên bảng> WHERE
a. Chọn từ 1 bảng
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 19


Lưu ý : Dấu ; cho biết đã kết thúc câu lệnh SQL
b. Chọn từ nhiều bảng.
Ví dụ 1 : Tìm tất cả các tên học phần mà sinh viên mang mã số SV01 đã đăng ký.
SELECT
HOCPHAN.TENHP
FROM
SINHVIEN S,
DANGKY_HOCPHAN DK,
HOCPHAN HP
WHERE S.MASV = ‘SV01’
AND S.MASV= DK.MASV
AND DK.MAHP= HP.MAHP;
Cách 2:
SELECT
HOCPHAN.TENHP

FROM
(SINHVIEN INNER JOIN DANGKY_HOCPHAN ON
SINHVIEN.MASV= DANGKY_HOCPHAN.MASV)
INNER JOIN HOCPHAN ON DANGKY_HOCPHAN.MAHP = HOCPHAN.MAHP
WHERE
MASV = ‘SV01’;
2. Truy vấn chọn và sắp xếp
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
FROM
DANGKY_HOCPHAN
INNER
JOIN
SINHVIEN
ON
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
FROM
SINHVIEN
WHERE
DIEMTB >=
ALL(SELECT DIEMTB FROM SINHVIEN)
Các từ khóa trong truy vấn lồng nhau
Trang 20


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
FROM
SINHVIEN
WHERE

MASV IN
(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.
SELECT
AVG(DIEMTB)
FROM
SINHVIEN
WHERE
EXISTS(SELECT DIEMTB FROM SINHVIEN WHERE DIEMTB>=5)

V. Nhóm lệnh tính toán, thống kê
Là các lệnh dùng để tính toán và thống kê dữ liệu theo các điều kiện thích hợp. Các hàm
thông dụng: AVG, COUNT, SUM, MAX, MIN…
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)
FROM
HOADON
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)
FROM
HOADON
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 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 21


gọ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
cho một ràng buộc toàn vẹn nhằm xác định thời điểm cần phải tiến hành kiểm tra khi tiến
Trang 22


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ì
RBTV bị vi phạm.
Dấu - Tại ô (dòng r2, cột sửa) thì có nghĩa là khi sửa một bộ trên quan hệ r2 thì RBTV
không bị vi phạm.
,…
Quy ước:
-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 23


Thứ 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:
Ví dụ 4.1
Cho một CSDL C dùng để quản lý việc đặt hàng và giao hàng của một công ty. Lược đồ
CSDL C gồm các lược đồ quan hệ như sau:
Q1: Khach (MAKH, TENKH, DIACHIKH, DIENTHOAI)
Tân từ:
Mỗi khách hàng có một mã khách hàng (MAKH) duy nhất, mỗi MAKH xác định tên khách
hàng (TENKH), địa chỉ (DIACHIKH), số điện thoại (DIENTHOAI).
Q2: Hang(MAHANG,TENHANG,QUYCACH, DVTINH)
Tân từ:
Mỗi mặt hàng có một mã hàng (MAHANG) duy nhất, mỗi MAHANG xác định tên hàng
(TENHANG), quy cách hàng (QUYCACH), đơn vị tính (DVTINH).

Q3: Dathang(SODH,MAHANG, SLDAT, NGAYDH, MAKH)
Tân từ:
Mỗi mã số đặt hàng (SODH) xác định một ngày đặt hàng (NGAYDH) và mã khách hàng
tương ứng (MAKH). Biết mã số đặt hàng và mã mặt hàng thì biết được số lượng đặt
hàng(SLDAT). Mõi khách hàng trong một ngày có thể có nhiều lần đặt hàng
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)
và một ngày xuất kho giao hàng cho khách (NGAYXUAT)
Q5: Chitiethd (SOHD, MAHANG, GIABAN, SLBAN)
Trang 24


Tân từ:
Mỗi SOHD, MAHANG xác định giá bán (GIABAN) và số lượng bán (SLBAN) của một
mặt hàng trong một hoá đơn.
Q6: Phieuthu(SOPT, NGAYTHU, MAKH, SOTIEN)
Tân từ:
Mỗi phiếu thu có một số phiếu thu (SOPT) duy nhất, mỗi SOPT xác định một ngày thu
(NGAYTHU) của một khách hàng có mã khách hàng là MAKH và số tiền thu là SOTIEN.
Mỗi khách hàng trong một ngày có thể có nhiều số phiếu thu.
1. Ràng buộc toàn vẹn có bối cảnh là một quan hệ
a. Ràng Buộc Toàn Vẹn liên bộ:
+Ràng buộc toàn vẹn về khoá chính:

Đây là một trường hợp dặc biệt của Ràng Buộc toàn Vẹn liên bộ, RBTV này rất phổ biến và
thường được các hệ quản trị CSDL tự động kiểm tra.
Ví dụ 4.2:
Với r là một quan hệ trên lược đồ quan hệ Khach ta có ràng buộc toàn vẹn sau:
R1:
t1, t2 ∈ r
t1. MAKH ≠ t2. MAKH
Cuối

+Ràng buộc toàn vẹn về tính duy nhất
Ví dụ: mỗi phòng ban phải có một tên gọi duy nhất
+Ngoài ra nhiều khi ta còn gặp những RBTV khác chẳng hạn như RBTV sau trong quan hệ
sau đây.
Ví dụ:KETQUA(MASV,MAMH,LANTHI,DIEM)
Mỗi sinh viên chỉ được đăng thi mỗi môn tối đa là 3 lần.
b.Ràng Buộc Toàn Vẹn Về Miền Giá Trị
Ràng buộc toàn vẹn có liên quan đến miền giá trị của các thuộc tính trong một quan hệ.
Ràng buộc này thường gặp. Thông thường các hệ quản trị CSDL đã tự động kiểm tra (một
số) ràng buộc loại này.
Ví dụ 4.3:
Với r là một quan hệ của Hoadon ta có ràng buộc toàn vẹn sau

c. Ràng Buộc Toàn Vẹn Liên Thuộc Tính
Trang 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×