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

Bài giảng cơ sở dữ liệu chương 6 ràng buộc toàn vẹn

56 623 2

Đ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 56
Dung lượng 452,92 KB

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

Nội dung

Khái niệm‰RBTV Integrety Constraints xuất phát từ những qui định hay điều kiện ¾Trong thực tế ¾Trong mô hình dữ liệu y Các thao tác làm thay đổi dữ liệu không nên được thực hiện một các

Trang 1

Chương 6 Ràng buộc toàn vẹn

Trang 2

Nội dung chi tiết

‰ Khái niệm

‰ Các đặc trưng của RBTV

‰ Phân loại

‰ Cài đặt

Trang 3

Khái niệm

‰RBTV (Integrety Constraints) xuất phát từ những

qui định hay điều kiện

¾Trong thực tế

¾Trong mô hình dữ liệu

y Các thao tác làm thay đổi dữ liệu không nên được thực hiện một cách tùy tiện vì có thể đưa CSDL đến một tình trạng ‘xấu’

‰RBTV là một điều kiện được định nghĩa trên một

hay nhiều quan hệ khác nhau

‰Các RBTV là những điều kiện bất biến mà mọi thể

hiện của QH đều phải thỏa ở bất kỳ thời điểm nào

Trang 4

Khái niệm (tt)

‰Tại sao cần phải có RBTV?

¾Bảo đảm tính kết dính của các thành phần cấu tạo nên CSDL

¾Bảo đảm tính nhất quán của dữ liệu

¾Bảo đảm CSDL luôn biểu diễn đúng ngữ nghĩathực tế

‰Ví dụ

¾Mức lương của một người nhân viên không được vượt quá trưởng phòng (R1)

¾Người quản lý trực tiếp (của một nhân viên) phải

là một nhân viên trong công ty (R2)

Trang 5

Nội dung chi tiết

Trang 6

Bối cảnh

‰Bối cảnh của một RBTV

¾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

‰Ví dụ (R1)

¾Mức lương của một người nhân viên không được vượt quá trưởng phòng

y Các phép cập nhật

∗ Cập nhật lương cho nhân viên

∗ Thêm mới một NV vào một phòng ban

∗ Bổ nhiệm trưởng phòng cho một phòng ban

y Bối cảnh: NHANVIEN, PHONGBAN

Trang 8

y Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu

y Biểu diễn thông qua

∗ Đại số quan hệ

∗ Phép tính quan hệ

∗ Mã giả (pseudo code)

Trang 10

∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧

∃s ∈ NHANVIEN (t.MA_NQL = s.MANV ))

Trang 11

Bảng tầm ảnh hưởng

‰ Bảng tầm ảnh hưởng

¾Xác định thao tác cập nhật nào cần phải

kiểm tra RBTV khi được thực hiện trên

quan hệ bối cảnh

‰ Có 2 loại

¾Bảng tầm ảnh hưởng cho một RBTV

¾Bảng tầm ảnh hưởng tổng hợp

Trang 13

+ -

-+ - +

Trang 14

Nội dung chi tiết

y Liên bộ, liên quan hệ

y Liên thuộc tính, liên QH

y Thuộc tính tổng hợp

y Chu trình

Trang 15

α β

C 1 5 12

β 23

D 1 7 3 9

α β β β

β ∈ {α, β, γ} 9 ∈ {1 10}

Trang 18

RBTV - Liên bộ

‰Sự tồn tại của một hay nhiều bộ phụ thuộc vào

sự tồn tại của một hay nhiều bộ khác trong cùng quan hệ

‰Trường hợp đặc biệt

¾RB khóa chính

¾RB duy nhất (unique)

A B α

R

α β

C 1 5 12

β 23

D 1 7 3 9

α β β β

Trang 21

Ví dụ 7

‰THIDAU(NGAY, GIO, DOI, SOBAN)

‰Mỗi trận đấu là cuộc thi đấu của đúng 2 đội

¾Bối cảnh: THIDAU

¾Biểu diễn:

¾Bảng tầm ảnh hưởng

∀t ∈ THIDAU ( ∃!s ∈ THIDAU (

t ≠ s ∧ t.NGAY = s.NGAY ∧ t.GIO = s.GIO ))

Trang 22

C 1 5 12 23

D 1 7 3 9

α β β β β

Trang 23

Ở thời điểm thêm 1 bộ vào NHANVIEN, MA_NQL là null

Trang 24

Ví dụ 9

‰KHOAHOC(MAKH, TENKH, BDAU, KTHUC)

‰Mỗi khóa học kéo dài ít nhất 3 tháng

Trang 25

RBTV - Tham chiếu

‰Giá trị xuất hiện tại các thuộc tính trong một quan hệ nào đó phải tham chiếu đến giá trị khóa chính của một quan hệ khác cho trước

‰Trường hợp đặc biệt

A B α

R

α β

C 1 5 12

β 23

D 1 7 3 9

α β β β

E F 7

S

3

1 2

Bắt buộc phải tồn tại trước

Trang 26

− +

+ (MANV) THANNHAN

+

− + (MA_NVIEN)

Trang 27

RBTV - Tham chiếu (tt)

‰ RBTV tham chiếu còn gọi là phụ thuộc tồn tại

‰ Thường có bối cảnh là hai quan hệ

¾ Nhưng có trường hợp suy biến thành một QH

∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧

∃s ∈ NHANVIEN (t.MA_NQL = s.MANV ))

R2 Thêm Xóa Sửa

Trang 28

RBTV - Liên bộ, liên quan hệ

‰Là ràng buộc xảy ra giữa các bộ trên nhiều

quan hệ khác nhau

A B α

R

α β

C 1 5 12

β 23

1 7 3 9

α β β β

D

A B α

S

α

2 4 β

γ

2 2

C 7 7 3 10

Trang 29

Ví dụ 11

‰HOADON(SOHD, MAKH, NGAYHD)

‰CTHD(SOHD, MAHH, DGIA, SLG)

‰Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn

+ +

+ (SOHD) CTHD

+

Trang 30

RBTV - Liên thuộc tính, liên quan hệ

‰Là ràng buộc xãy ra giữa các thuộc tính trên nhiều quan hệ khác nhau

A B α

R

α β

C 1 5 12

β 23

D 1 7 3 9

α β β β

A B α

S

α

2 4 β

γ

2 2

C 7 7 3 10

Trang 31

R12 NHANVIEN

Thêm Xóa Sửa

− + + (NG_NHANCHUC, TRPHG) PHONGBAN

+ (NGSINH, MANV)

Trang 33

Thêm Xóa Sửa + + + (PHG)

Trang 35

MANV, MADA

MA_NVIEN, SODA

Trang 36

+ (MANV,PHG) DEAN

Trang 37

Nội dung chi tiết

Trang 39

Ví dụ (tt) Check Constraint

‰Số lượng bán hàng > 0

ALTER TABLE CHITIETDATHANG ADD

Constraint CHK_SLBAN CHECK (SOLUONG > 0),Constraint CHK_MUCGIAMGIA

CHECK( MUCGIAMGIA BETWEEN 0 and 10)

Trang 40

Ví dụ (tt) Check Constraint

‰Ngày giao hàng >= ngày dặt hàng

ALTER TABLE DONDATHANG ADD

CONSTRAINT CHK_NGAYGIAO_NGAYDAT CHECK (

NGAYGIAOHANG >= NGAYDATHANG)

Trang 41

Ví dụ 15 (tt) Check Constraint

‰ Lương của trưởng phòng phải lớn hơn 50000

TENPB VARCHAR (20) UNIQUE, MAPHG INT NOT NULL ,

TRPHG CHAR (9), NG_NHANCHUC DATETIME,

TRPHG NOT IN ( SELECT MANV FROM NHANVIEN

Trang 43

‰ Là tập hợp các lệnh được thực hiện tự động khi xuất hiện một biến cố nào đó

row-level statement-level

trước sau

giá trị mới giá trị cũ

thêm xóa sửa

Điều kiện Thỏa Tập hợp các lệnh

Không thỏa

Biến cố

Trang 44

Trigger (tt)

‰ Cú pháp

CREATE TRIGGER <Tên_trigger>

AFTER|BEFORE INSERT|UPDATE|DELETE ON <Tên_bảng> REFERENCING

NEW ROW|TABLE AS <Tên_1>

OLD ROW|TABLE AS <Tên_2>

FOR EACH ROW | FOR EACH STATEMENT

WHEN (<Điều kiện>)

<Tập_lệnh_SQL>

DROP TRIGGER <Tên_trigger>

Trang 45

Ví dụ 15

‰Lương của trưởng phòng phải lớn hơn 50000

REFERENCING

FOR EACH ROW

WHEN (50000 >= ( SELECT LUONG FROM NHANVIEN

Thông báo lỗi cho người dùng

Trang 46

Ví dụ 15 (tt)

‰ Lương của trưởng phòng phải lớn hơn 50000

CREATE TRIGGER TR_PB_UPD

AFTER UPDATE OF TRPHG ON PHONGBAN

REFERENCING

NEW ROW AS NewTuple OLD ROW AS OldTuple FOR EACH ROW

WHEN (50000 >= (SELECT LUONG FROM NHANVIEN

WHERE MANV=NewTuple.TRPHG)) UPDATE PHONGBAN

SET TRPHG=OldTuple.TRPHG WHERE TRPHG=NewTuple.TRPHG

Trang 47

Ví dụ 15 (tt)

‰ Lương của trưởng phòng phải lớn hơn 50000

CREATE TRIGGER TR_PB_UPD

AFTER UPDATE OF LUONG ON NHANVIEN

REFERENCING

NEW ROW AS NewTuple OLD ROW AS OldTuple FOR EACH ROW

WHEN (NewTuple.LUONG <= 50000 AND NewTuple.MANV IN (

SELECT TRPHG FROM PHONGBAN )) UPDATE NHANVIEN

SET LUONG=OldTuple.LUONG WHERE LUONG=NewTuple.LUONG

Trang 48

¾ Hoặc là không có lệnh nào được thực hiện

‰ Ví dụ: xử lý chuyển tiền trong ngân hàng

Giao tác Chuyển_tiền

Giảm tiền trong tài khoản người gửi Tăng tiền trong tài khoản người nhận

Nếu tất cả đều thành công thì hoàn tất giao tác

Ngược lại quay lui giao tác

Trang 49

∗ Trong khi thực hiện giao tác

∗ Trước và sau khi thực hiện giao tác

Trang 50

Nếu có một thao tác thất bại thì

Quay lui giao tác

Ngược lại

Hoàn tất giao tác

Cuối nếu

Cuối giao tác

Trang 51

Ví dụ 7 (tt)

Giao tác Xóa_trận_đấu(ngay, gio)

Với mọi s∈THIDAU (s.NGAY=ngay ∧ s.GIO=gio)

Xóa s khỏi THIDAU

Cuối với mọi Nếu có một thao tác thất bại thì

Quay lui giao tác

Ngược lại

Hoàn tất giao tác

Cuối nếu

Cuối giao tác

Trang 52

Ví dụ 11

‰ Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn

Giao tác Thêm_hóa_đơn

Thêm HOADON Thêm chi tiết thứ 1 vào CTHD Thêm chi tiết thứ 2 vào CTHD

Nếu có một thao tác thêm thất bại thì

Quay lui giao tác

Ngược lại

Hoàn tất giao tác

Cuối nếu

Cuối giao tác

Trang 53

Ví dụ 11 (tt)

Thêm HOADON Thêm chi tiết thứ 1 vào CTHD Thêm chi tiết thứ 2 vào CTHD

Nếu có một thao tác thêm thất bại thì

Quay lui giao tác

Ngược lại

Hoàn tất giao tác

Cuối nếu

Cuối giao tác

Trang 54

Stored Procedure

‰ Các DBMS thương mại cung cấp cách thức lưu trữ các hàm hay thủ tục

¾ Được lưu trữ trong lược đồ CSDL

¾ Được sử dụng trong các câu lệnh SQL

Trang 55

Ví dụ 7

‰ Mỗi trận đấu là cuộc thi đấu của đúng 2 đội

t THIDAU , s THIDAU

AS

begin tran

Thêm t vào THIDAU

Thêm s vào THIDAU

commit tran GO

EXEC Thêm_trận_đấu x, y

Trang 56

Nhận xét

‰DBMS sẽ kiểm tra RBTV

¾Sau khi một thao tác cập nhật diễn ra trên CSDL

¾Cuối mỗi giao tác

‰Nên cài đặt RBTV ở đâu ???

¾Application

¾Trigger quá nhiều → hệ thống chậm chạm

¾Stored Procedure → hiệu quả cao

Ngày đăng: 03/12/2015, 01:07

HÌNH ẢNH LIÊN QUAN

Bảng tầm ảnh hưởng - Bài giảng cơ sở dữ liệu   chương 6  ràng buộc toàn vẹn
Bảng t ầm ảnh hưởng (Trang 11)
Bảng tầm ảnh hưởng một RBTV - Bài giảng cơ sở dữ liệu   chương 6  ràng buộc toàn vẹn
Bảng t ầm ảnh hưởng một RBTV (Trang 12)
Bảng tầm ảnh hưởng tổng hợp - Bài giảng cơ sở dữ liệu   chương 6  ràng buộc toàn vẹn
Bảng t ầm ảnh hưởng tổng hợp (Trang 13)

TỪ KHÓA LIÊN QUAN

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