1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng cơ sở dữ liệu chương II ths lương thị ngọc khánh

116 368 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 116
Dung lượng 878,27 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

CƠ 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 3

Cá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 4

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,…

– 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 5

Thuộ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 6

Thuộ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 7

Lượ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 8

Lượ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 9

Lượ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 10

Lượ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 11

Quan 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 12

Nhậ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 13

Nhậ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 15

Siê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 16

Siê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 17

Khó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 18

Khó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 20

Ràng buộc toàn vẹn

Trang 21

CSDL mẫu

• CSDL HSSINHVIEN

– SINH_VIEN(maSV, hotenSV, nam, ngSinh, maKhoa)

- KHOA(maKhoa, tenKhoa, soCB)

soTietTH)

– KET_QUA(maSV, maMH, lanThi, diem)

Trang 22

CSDL 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 23

Khá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 24

Ví 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 25

Khá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 26

Cá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 31

Bố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 33

Thêm Sửa Xóa SinhVien + –(*) –

Trang 34

Phâ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 36

RBTV 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 37

RBTV 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 39

RBTV về phụ thuộc tồn tại

• Còn được gọi là RB về khóa ngoại

• Ví dụ:

Trang 40

RBTV 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 41

RBTV về phụ thuộc tồn tại (tt)

Trang 42

RBTV 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 43

RBTV 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 44

Ngôn ngữ SQL

Trang 46

Cá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 47

Tạ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 48

Tạ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 49

Tạ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 50

Tạ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 51

Tạo bảng – ràng buộc

• SQL Server hỗ trợ các loại ràng buộc sau:

– NULL / NOT NULL

Trang 52

Rà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 53

Rà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 54

Rà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 55

Rà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 58

Thuộ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 59

Thuộc tính IDENTITY (tt)

• Ví dụ:

CREATE TABLE ContactPhone (

Person_ID int IDENTITY(500,1) NOT NULL,

MobileNumber bigint NOT NULL

)

Trang 60

Primary 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 61

Primary 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 62

Primary Key (Khoá chính) (tt)

• Ví dụ: Tạo bảng PhongBan với khóa chính

Trang 63

Rà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 65

Khó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 66

Khóa ngoại (foreign key)

Trang 67

SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc)

DETAI (MaDT, TenDT, Chunhiem, Kinhphi)

SV_DT (MaSV, MaDT, NoiAD, KQ)

Trang 68

Khoa (makhoa, tenkhoa)

SinhVien(hosv, tensv, masv, ngaysinh, phai, makhoa)

Trang 69

Khoa (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 70

Khoa (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 71

Ràng buộc kiểm tra (Check)

Trang 72

Rà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 73

Câ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 74

Câ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 75

Câ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 79

WHERE 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 81

Thay đổi cấu trúc bảng

Trang 82

Thay đổi cấu trúc bảng (tt)

Trang 83

Thay đổ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 84

Thay đổ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 85

Thay đổ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 86

Thay đổ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 87

Thay đổ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 88

Thay đổ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 89

Thay đổ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

Ngày đăng: 03/12/2015, 00:54

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm