Các định nghĩa tt • Mô hình CSDL quan hệ gọi tắt là mô hình 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, khóa ngoại,…
Trang 1CƠ SỞ DỮ LIỆU
GV: ThS Lương Thị Ngọc Khánh
Email: ltnkhanh@it.tdt.edu.vn
Web: it.tdt.edu.vn/~ltnkhanh
Trang 3Các định nghĩa - Mở đầu
maSoSV hoTenSV ngaySinh diemTB mucHBg
Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000
Ti05023 Nguyễn Mỹ Truyền 20-02-1987 8.2 180.000
Ti05027 Phạm Thu Hoa 23-05-1987 8.5 180.000
Ti05006 Phạm Thu Hường 23-06-1987 7.8 120.000
– maSoSV, hoTenSV, ngaySinh, mucHBg được gọi là các
Trang 4Các định nghĩa (tt)
• Mô hình CSDL quan hệ gọi tắt là mô hình
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, khóa ngoại,…
– Một tập hợp các phép toán 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ệ
Trang 5Thuộc tính (attribute, arity)
• Là các đặc trưng của đối tượng
• Được phân biệt bằng tên gọi
• Phải thuộc vào một kiểu dữ liệu nhất định (số, chuỗi, ngày tháng, lôgic, hình ảnh…)
Trang 6Thuộc tính (tt)
• Miền giá trị của thuộc tính
– Ví dụ điểm thi của sinh viên chỉ là các số nguyên từ 0 đến 10
Trang 7Lược đồ quan hệ (Relation)
• Là tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với những mối
Trang 8Lược đồ quan hệ (Relation) (tt)
- Tân từ của LĐQH:
- ý nghĩa của LĐQH
- Ví dụ: với lược đồ quan hệ SV:
SV(maSoSV, hoTenSV, ngaySinh, diemTB, mucHbg)
ta có tân từ như sau:
- Mỗi sinh viên có một mã số duy nhất, mỗi mã
số xác định tất cả các thuộc tính của sinh viên
đó như họ tên, ngày sinh, mức học bổng…
Trang 9Lược đồ quan hệ (Relation) (tt)
• Nhận xét:
– khi nói cho tập thuộc tính U = {A1, A2…, An}
ta coi như cho trước lược đồ quan hệ
(LĐQH) và cùng với nó ta có quan hệ rỗng r =
– Khi lược đồ được nạp thêm ít nhất một dòng thì ta có một quan hệ khác rỗng
Trang 10Lược đồ CSDL
• Lược đồ CSDL:
– Nhiều LĐQH cùng nằm trong một hệ thống quản lý cùng với mối quan hệ giữa chúng với nhau
• Ví dụ lược đồ CSDL quản lý điểm :
SV(maSV, hotenSV, ngaySinh, maLop, tinh, hocBong)
Lop(maLop, tenLop, siSo, maKhoa)
Khoa(maKhoa, tenKhoa, soCB)
MonHoc(maMH, tenMH, soTiet)
Trang 11Quan hệ (relation)
• Là sự thể hiện của LĐQH ở một thời điểm
• Cụ thể, một quan hệ r trên LĐQH R là một tập con của tích Descartes (Đề các) của
Trang 12Nhận xét
• Quan hệ r là một bảng hai chiều:
– trên cột thứ i là các giá trị của D(Ai),
– trên mỗi dòng của bảng là bộ n giá trị của các miền giá trị của các thuộc tính Ai Một dòng chứa thông tin về một đối tượng và gọi là một
bộ (phần tử) của quan hệ
• Trên một LĐQH có thể xây dựng được nhiều QH khác nhau bằng cách thay đổi một dòng hoặc một cột
Trang 13Nhận xét (tt)
• Với cách nhìn của tập hợp việc thêm vào một dòng (cột) giống với dòng (cột) đã có
của các dòng (cột) không quan trọng
Trang 15Siêu khóa của LĐQH
• Siêu khóa của một lược đồ quan hệ R
– là một tập hợp gồm một hay nhiều thuộc tính của lược đồ R có tính chất xác định duy nhất một bộ trong mỗi thể hiện của R
– SK: siêu khóa trên r(R):
ti(SK) ≠ tj(SK), với ti, tj là hai bộ khác nhau bất kỳ trong r
Trang 16Siêu khóa của LĐQH (tt)
– Mọi tập con của U chứa một siêu khóa cũng
là siêu khóa
Trang 17Khóa của LĐQH
• Khóa của lược đồ quan hệ là một siêu khóa của lược đồ này sao cho mọi tập con
thực sự của nó không là siêu khóa
khóa là siêu khóa tối thiểu (tối tiểu)
• Ví dụ:
– Lược đồ quan hệ SV, thuộc tính maSV là khóa
• Khóa chính (primary key)
– Khóa chính là một khóa tối thiểu được người phân tích chọn để cài đặt (ký hiệu gạch chân)
Trang 18Khóa của LĐQH (tt)
• Khóa dự tuyển (candidate key)
– Các khóa dự tuyển là các khóa tối thiểu khác
mà không phải là khóa chính
• Khóa ngoài (khóa ngoại) của một lược đồ
– là một tập hợp gồm một hay nhiều thuộc tính
là khóa của một lược đồ quan hệ khác
– Ký hiệu gạch chân nét đứt
Trang 20Ràng buộc toàn vẹn
Trang 21CSDL mẫu
• CSDL HSSINHVIEN
– SINH_VIEN(maSV, hotenSV, nam, ngSinh, maKhoa)
- KHOA(maKhoa, tenKhoa, soCB)
soTietTH)
– KET_QUA(maSV, maMH, lanThi, diem)
Trang 22CSDL mẫu (tt)
• CSDL QLHANGHOA
– KHACH(maKH, tenKh, diachiKH, dienThoai, congNo)
– HANG_HOA(maHH, tenHH, dvTinh)
– DAT_HANG(soDH, maHH, soLuongDat, ngayDH, maKH)
– HOA_DON(soHD, ngayHD, soDH, trigiaHD, ngayXuat)
– CTIET_HD(soHD,maHH,giaBan, soLuongBan)
– PHIEU_THU(soPT, ngayPT, maKH, soTien)
Trang 23Khái niệm ràng buộc toàn vẹn
• Ràng buộc toàn vẹn
– Là những điều kiện bất biến mà các đối tượng của CSDL phải thỏa mãn ở bất kỳ thời điểm nào
– Là các quy tắc quản lý được áp đặt lên trên các đối tượng của thế giới thực
Trang 24Ví dụ
• Ví dụ:
Trong CSDL HSSINHVIEN ta có một số RBTV như sau:
• C1: Mỗi sinh viên có một mã số riêng biệt, không trùng với bất kỳ sinh viên nào khác
• C2: Mỗi sinh viên chỉ được thi tối đa hai lần cho một môn học
• C3: Mỗi sinh viên phải thuộc về một khoa nào đó
Trang 25Khái niệm ràng buộc toàn vẹn
• Công việc kiểm tra RBTV có thể được tiến
– ngay khi thực hiện một thao tác câp nhật CSDL (thêm, sửa, xóa…)
– định kỳ hay đột xuất
Trang 26Các yếu tố của ràng buộc toàn vẹn
• Một RBTV có ba yếu tố:
– Điều kiện (nội dung),
– Bối cảnh
– Bảng tầm ảnh hưởng
Trang 27Điều kiện của RBTV
• Điều kiện của một RBTV
– Ngôn ngữ tự nhiên
• Dễ hiểu nhưng thiếu tính chặt chẽ
– Ngôn ngữ hình thức: đại số quan hệ, mã giả (pseudo code)
• Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu
– Cũng có thể được biểu diễn bằng phụ thuộc hàm (sẽ tìm hiểu sau này)
Trang 28Điều kiện của một RBTV (tt)
Trang 29Điều kiện của một RBTV (tt)
Trang 30Điều kiện của một RBTV (tt)
Trang 31Bối cảnh của RBTV
• Bối cảnh của một RBTV C:
– là những quan hệ có khả năng bị vi phạm RBTV khi thực hiện các phép cập nhật
– có thể là một hay nhiều quan hệ
– Vd4: bối cảnh của RBTV C1 là quan hệ SinhVien
Trang 33Thêm Sửa Xóa SinhVien + –(*) –
Trang 34Phân loại ràng buộc toàn vẹn
• Các RBTV được chia làm hai loại:
• RBTV liên bộ liên quan hệ
• RBTV liên thuộc tính liên quan hệ
Trang 36RBTV về miền giá trị (tt)
• Ví dụ: ràng buộc Thời gian tham gia đề
án của một nhân viên không quá 60 giờ
Trang 37RBTV liên thuộc tính
• Thể hiện mối liên hệ giữa các thuộc tính
• Ví dụ: Trong LĐQH HoaDon, ta có RBTV
“Hàng hóa chỉ được xuất kho sau khi đã lập hóa đơn”
hd THOADON
hd.ngayHD ≤ hd.ngayXuat
Trang 38• Rất phổ biến, có mặt trong mọi LĐQH của
CSDL hỗ trợ phần tự động kiểm tra
Trang 39RBTV về phụ thuộc tồn tại
• Còn được gọi là RB về khóa ngoại
• Ví dụ:
Trang 40RBTV về phụ thuộc tồn tại (tt)
• Ví dụ
– a) Trong QH KetQua, sự tồn tại của một bộ
kq = (msv, mon, lanthi, diem) KetQua
hoàn toàn phụ thuộc vào sự tồn tại của bộ
sv SinhVien sao cho sv.maSV = msv – b) Trong QH SinhVien, sự tồn tại của bộ
sv = (‘To012’, ‘Pham Anh Hoang’, ‘true’, ‘12/06/81’, ‘To’)
hoàn toàn phụ thuộc vào sự tồn tại của một
bộ
Trang 41RBTV về phụ thuộc tồn tại (tt)
Trang 42RBTV liên thuộc tính, liên quan hệ
• Là mối liên hệ giữa các thuộc tính trong nhiều lược đồ quan hệ
Trang 43RBTV về liên bộ, liên quan hệ
• Có tác dụng đối với từng nhóm các bộ của nhiều quan hệ khác nhau (thường là hai
• Ví dụ:
– “mỗi hóa đơn bán hàng phải có ít nhất một mặt hàng” liên quan đến HoaDon và CtietHD
Trang 44Ngôn ngữ SQL
Trang 46Các kiểu dữ liệu trong SQL
• Kiểu dữ liệu là một thuộc tính, nó chỉ định kiểu của dữ liệu và dung lượng có thể lưu trữ của một đối tượng
• SQL Server hỗ trợ một số kiểu dữ liệu được cài sẵn như sau:
– Int, smallint, bigint, tinyint, numeric, money, float, double, real, datetime, char, nchar, varchar, nvarchar…
Trang 47Tạo cơ sở dữ liệu
• Sử dụng cú pháp sau để tạo một cơ sở dữ liệu trong SQL:
– CREATE DATABASE <tên csdl>
Trang 48Tạo bảng - Khái niệm bảng
• Bảng dùng để lưu trữ các thông tin của một đối tượng trong thực tế
– Gồm có dòng và cột
– Bảng trong CSDL thường có khoá chính
– Các bảng thường liên hệ với nhau bằng các mối quan hệ
• Bảng trong CSDL SQL Server (2005) có thể có các ràng buộc, trigger
Trang 49Tạo bảng
Cú pháp:
CREATE TABLE <tên bảng>(
<tên cột 1><kiểu dữ liệu>[CONSTRAINT<tên 1>], ( <tên cột 2><kiểu dữ liệu>[CONSTRAINT<tên
Trang 50Tạo bảng
• Ví dụ: Tạo bảng với lược đồ quan hệ sau:
HANGHOA (MaHG, TenHG, DVT)
Create Table Hanghoa(
MaHG char(10),
TenHG nvarchar(50),
DVT varchar(5)
)
Trang 51Tạo bảng – ràng buộc
• SQL Server hỗ trợ các loại ràng buộc sau:
– NULL / NOT NULL
Trang 52Ràng buộc null/ not null
• Đặc trưng về khả năng null của một cột quyết định các hàng trong bảng có thể chứa giá trị null cho cột đó
• Khả năng Null của một cột có thể được định nghĩa khi tạo một bảng
– Từ khóa NULL
– Từ khóa NOT NULL
Trang 53Ràng buộc null/ not null (tt)
• Ví dụ:
CREATE TABLE Nhanvien(
manv char(5) NOT NULL, tennv nvarchar(30),
manqly char(5) NULL
Trang 54Ràng buộc DEFAULT
• Ràng buộc default có thể được tạo ra tại thời điểm tạo bảng hoặc thêm sau khi bảng được tạo
• Một cột chỉ tạo được một giá trị default
• Giá trị default có thể là một hằng, một hàm
hệ thống, một biến toàn cục, hoặc một hàm do người dùng định nghĩa
Trang 55Ràng buộc DEFAULT (tt)
• Định nghĩa default trong khi tạo bảng:
CREATE TABLE <tên bảng> <tên cột> <KDL> [NULL|NOT NULL]
[CONSTRAINT <tên ràng buộc>] DEFAULT
<biểu thức>
CREATE TABLE StoreProduct(
ProductID int NOT NULL,
Name varchar(40) NOT NULL,
Price money NOT NULL DEFAULT (100)
Trang 56Định nghĩa DEFAULT (tt)
• Định nghĩa default đối với một bảng đã tồn tại:
ALTER TABLE <tên b ả ng>
ADD [CONSTRAINT <tên ràng bu ộ c>] DEFAULT <biểu thức> FOR <tên c ộ t>
Trang 57• Thuộc tính IDENTITY của SQL Server được
sử dụng để tạo ra các cột nhận dạng, chúng chứa các giá trị tự động phát sinh tuần tự để nhận dạng duy nhất mỗi hàng trong một bảng
• Một thuộc tính nhận dạng có hai thành phần:
– Giá trị khởi đầu
– Giá trị tăng
Thuộc tính IDENTITY
Trang 58Thuộc tính IDENTITY (tt)
• Cú pháp:
(column_name data_type [ IDENTITY [(seed_value, increment_value)]] NOT NULL )
– Trong đó, - seed_value là giá trị khởi đầu
– - increment_value là giá trị tăng
Trang 59Thuộc tính IDENTITY (tt)
• Ví dụ:
CREATE TABLE ContactPhone (
Person_ID int IDENTITY(500,1) NOT NULL,
MobileNumber bigint NOT NULL
)
Trang 60Primary Key (Khoá chính)
• Ràng buộc PRIMARY KEY được sử dụng
để tạo một khóa chính và đảm bảo toàn vẹn thực thể bảng
• Cú pháp để thêm một khóa chính trong khi tạo bảng:
• CREATE TABLE <tên bảng> (
<tên cột> <kiểu dữ liệu> [ CONSTRAINT
<tên RB>] PRIMARY KEY [,ds các cột còn lại] )
Trang 61Primary Key (Khoá chính) (tt)
• Ví dụ: Tạo bảng PhongBan với khóa chính
là maphong
CREATE TABLE PhongBan (
maphong int [ constraint pk_pb ] PRIMARY KEY,
tenphong navarchar(20),
trphong char(5),
diadiem nvarchar(20) )
Trang 62Primary Key (Khoá chính) (tt)
• Ví dụ: Tạo bảng PhongBan với khóa chính
Trang 63Ràng buộc UNIQUE
• Ràng buộc khóa duy nhất:
– được sử dụng để bảo đảm rằng chỉ các giá trị duy nhất được nhập vào trong cột hoặc một tập hợp các cột ( cho phép nhà phát triển chắc chắn rằng không có các giá trị trùng lặp được nhập vào)
– Được sử dụng trong câu lệnh create table để định nghĩa khóa phụ cho bảng
– Ràng buộc UNIQUE cho phép null
Trang 64• Cú pháp:
– CREATE TABLE <tên bảng> ([ds cột, ] <tên cột> <kdl> [ CONSTRAINT <tên RB>] UNIQUE [,ds cột])
• Ví dụ:
CREATE TABLE KhachHang (
makh int PRIMARY KEY,
tenkh nvarchar(30),
diachi nvarchar(30),
sodt char(10) UNIQUE )
Ràng buộc UNIQUE
Trang 65Khóa ngoại (foreign key)
• Một khóa ngoại trong một bảng là một cột
trong một bảng khác
• Ràng buộc khóa ngoại được sử dụng để đảm bảo toàn vẹn tham chiếu
Trang 66Khóa ngoại (foreign key)
Trang 67SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc)
DETAI (MaDT, TenDT, Chunhiem, Kinhphi)
SV_DT (MaSV, MaDT, NoiAD, KQ)
Trang 68Khoa (makhoa, tenkhoa)
SinhVien(hosv, tensv, masv, ngaysinh, phai, makhoa)
Trang 69Khoa (makhoa, tenkhoa)
SinhVien(hosv, tensv, masv, ngaysinh, phai, makhoa)
Create table Khoa(
makhoa char(4) primary key, tenkhoa varchar(40)
)
Create table SinhVien(
masv char(4) primary key, hosv varchar(20),
tensv varchar(10), ngaysinh datetime,
Trang 70Khoa (makhoa, tenkhoa)
SinhVien(hosv, tensv, masv, ngaysinh, phai, makhoa)
Create table Khoa(
makhoa char(4) primary key, tenkhoa varchar(40)
)
Create table SinhVien(
masv char(4) primary key, hosv varchar(20),
tensv varchar(10), ngaysinh datetime,
Trang 71Ràng buộc kiểm tra (Check)
Trang 72Ràng buộc kiểm tra (Check) (tt)
• Ví dụ: Với lược đồ quan hệ sau:
KetQua (masv, mamh, lanthi) – Yêu cầu: Sinh viên không được thi quá 3 lần cho một môn học
Create table KetQua(
masv int, mamh char(4), diem float,
lanthi int check (lanthi<3)
Trang 73Câu lệnh cập nhật dữ liệu
• Là câu lệnh dùng để cập nhật dữ liệu
• Bao gồm các câu lệnh: INSERT, UPDATE, DELETE
– Lệnh thêm dữ liệu vào bảng:
trường>)] VALUES (<DS các giá trị tương ứng>)
Trang 74Câu lệnh cập nhật dữ liệu (tt)
– Lệnh thêm dữ liệu vào bảng: (tt)
– Vd: MON (MaMH, TenMH, DVHT)
Thêm vào bảng MON với mã môn TH345, tên môn Cơ sở dữ liệu, đơn vị học trình là 5
N'Cơ sở dữ liệu',5)
Hoặc:
DVHT) VALUES ('TH345', N'Cơ sở dữ liệu',5)
Trang 75Câu lệnh cập nhật dữ liệu (tt)
• Một số lưu ý
– Thêm ký tự N trước chuỗi Unicode
• Ví dụ:
values(‘NV01’,N’Nguyễn văn Trường’,
‘Nam’)
– Thuộc tính NOT NULL
• Nếu thuộc tính được khai báo là NOT NULL thì bắt buộc phải có giá trị khi nhập 1 bộ vào bảng
Trang 77• B2: Nhập NHANVIEN
Trang 78• Sau đó nhập những nhân viên mà
đã nhập thông tin người quản lý nhân viên đó
– Cách 2:
• B1: Nhập NHANVIEN đặt manql =
Trang 79WHERE MaMH = 'TH345'
Câu lệnh cập nhật dữ liệu (tt)
Trang 80• Lệnh xóa dữ liệu khỏi bảng:
<điều kiện chọn> ]
• Vd: Xóa các môn học có số DVHT nhỏ hơn 2
DELETE FROM MON WHERE DVHT < 2
• Lưu ý: Câu lệnh delete chỉ xóa dữ liệu của bảng, cấu trúc bảng tạo bởi câu lệnh
Câu lệnh cập nhật dữ liệu (tt)
Trang 81Thay đổi cấu trúc bảng
Trang 82Thay đổi cấu trúc bảng (tt)
Trang 83Thay đổi cấu trúc bảng (tt)
• Chỉnh sửa cột trong bảng
– Cú pháp
[,<tên cột 2> <kdl2> .]
– Ví dụ: Sửa cột tennv trong bảng NhanVien
thành cột có kiểu dữ liệu là nvarchar(20)
ALTER TABLE NhanVien ALTER column tennv
nvarchar(20)
Trang 84Thay đổi cấu trúc bảng (tt)
– Ví dụ: Xóa cột diadiem trong bảng PhongBan
ALTER TABLE PhongBan DROP COLUMN
diadiem
Trang 85Thay đổi cấu trúc bảng (tt)
• Thêm RB khóa chính
– Cú pháp
(<DS các cột làm khóa chính>)
- Ví dụ: Thêm khóa chính cho bảng KetQua
ALTER TABLE KetQua ADD CONSTRAINT
pk_kq PRIMARY KEY (masv,mamh)
Trang 86Thay đổi cấu trúc bảng (tt)
• Thêm RB khóa ngoại
– Cú pháp
(<DS các c ộ t làm khóa ngo ạ i>)
chi ế u>(<ds c ộ t>)
Trang 87Thay đổi cấu trúc bảng (tt)
- Ví dụ: Thêm RB khóa ngoại cho bảng KetQua
fk_kq_sv FOREIGN KEY (masv)
Trang 88Thay đổi cấu trúc bảng (tt)
• Thêm RB kiểm tra
– Cú pháp
ki ệ n>)
- Ví dụ: Thêm RB kiểm tra đảm bảo thuộc tính phai trong bảng NhanVien chỉ nhận giá trị
“nam” hoặc “nữ”
Trang 89Thay đổi cấu trúc bảng (tt)
• Xóa ràng buộc khóa chính, khóa ngoại,
check
– Cú pháp