13
1 RÀNG BUC TOÀN VN (INTERGRITY CONSTRAINT) Giáo viên: TThúc Nhu Khoa CNTT trường ðH Lc Hng ÔN THI CƠ SDLiU CSDL@Khoa CNTT 2 I. Khái nim I. Kh I. Khá i ni i nim RBTV là nhng qui ñịnh liên quan ñến dliu lưu trtrên các quan h. Các qui ñịnh cn kim tra khi thc hin các thao tác thêm, sa hay xóa dliu.

RÀNG BU ỘC TOÀN V ẸN · 5 9 CSDL@Khoa CNTT 10 CSDL@Khoa CNTT 3. RBTV - Liên b ộtrên m ột quan h ệ • Ràng bu ộc giá tr ịgi ữa các b ộtrong m ột quan h

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

1

RÀNG BUỘC TOÀN VẸN(INTERGRITY CONSTRAINT)

Giáo viên: Tạ Thúc Nhu

Khoa CNTT trường ðH Lạc Hồng

ÔN THICƠ SỞ DỮ LiỆU

CSDL@Khoa CNTT2

I. Khái ni ệmI. KhI. Kh áái nii ni ệệmm

• RBTV là nh ững qui ñịnh liên quan ñến dữ liệu lưu tr ữ trên các quan h ệ.

• Các qui ñịnh c ần ki ểm tra khi th ực hi ện các thao tác thêm, sửa hay xóa d ữ liệu.

2

CSDL@Khoa CNTT3

II. Khai báo RBTVII. Khai báo RBTV

Một RBTV ñược khai báo thông qua 5 y ếu tố sau:

1. Tên RBTV: phân bi ệt với các ràng bu ộc khác

2. Diễn gi ải: ñược phát biểu bằng ngôn ngữ tự nhiên.

3. Bối cảnh: tên các quan hệ liên quan trong RBTV

4. ðiều ki ện RBTV: ñược phát biểu bằng ngôn ngữ hình thức như ðại số quan hệ, Mã giả (pseudo code)

5. Bảng t ầm ảnh h ưởng: chỉ ñịnh thao tác cập nhật dữ liệu trên quan hệ cóhay không có ảnh hưởng ñến ràng buộc.

…………

+ [thuộc tính]

-(không ảnh hưởng)

+(cóảnh hưởng)

Q1

SửaXóaThêmThao tác

Quan hệ

CSDL@Khoa CNTT4

Các phép toán ðại số quan hệCác phép toán ðại số quan hệ

• Trên t ập hợp– Hội ∪∪∪∪ (union)

– Giao ∩∩∩∩ (intersec)

– Trừ −−−− (difference)

• Rút trích 1 ph ần của quan h ệ

– Chọn σ (selection)

– Chiếu π (projection)

• Kết hợp các quan h ệ

– Tích Cartesian ×××× (Cartesian product)

– Kết (join)

3

CSDL@Khoa CNTT5

Phép toán quan h ệPhép toán quan h ệ

• Các phép toán logic:Phủ ñịnh(¬)

Kéo theo (�)

Nối liền (∧ - Conjunction)

Nối rời (∨ - Disjunction)

• Các lượng t ừ: Với mọi ( ∀ )

Tồn tại ( ∃ )

• Biến bộ:∀ u ∈∈∈∈ NHANVIEN ∧∧∧∧ ∃∃∃∃v ∈ PHONGBAN: (u.MaPB ==== v.MaPB)

CSDL@Khoa CNTT6

III. Phân lo ại RBTVIII. Phân lo ại RBTV

• Một quan h ệ

– Ràng buộc Miền giá trị

– Ràng buộc Liên bộ

– Ràng buộc Liên thuộc tính

• Nhiều quan h ệ

– Ràng buộc Tham chiếu

– Ràng buộc Liên bộ - Liên quan hệ

– Ràng buộc Liên thuộc tính - Liên quan hệ

– Ràng buộc thuộc tính tổng hợp

– Chu trình

4

CSDL@Khoa CNTT7

1. RBTV - Miền giá trị của một thuộc tính1. RBTV - Miền giá trị của một thuộc tính

• Ràng bu ộc giá tr ị của một thu ộc tính

Ví dụ: Mã kết qu ả thi ñấu (MaKQ) g ồm 1 trong 3 giá tr ị {0, 1, 2}

CSDL@Khoa CNTT8

2. RB Liên thuộc tính trên một quan hệ2. RB Liên thuộc tính trên một quan hệ

• Ràng bu ộc giá tr ị giữa các thu ộc tính trên cùng m ột bộ

5

CSDL@Khoa CNTT9

CSDL@Khoa CNTT10

3. RBTV - Liên bộ trên một quan hệ3. RBTV - Liên bộ trên một quan hệ

• Ràng bu ộc giá tr ị giữa các b ộ trong m ột quan h ệ.

Ví dụ: Kết qu ả trận ñấu của 2 ñội ho ặc là hòa ho ặc một th ắng một thua.

• ðặc bi ệt là ràng bu ộc giá tr ị phân bi ệt trên khóa c ủa quan hệ.

6

CSDL@Khoa CNTT11

4. RB Tham chiếu4. RB Tham chiếu

• Ràng bu ộc giá tr ị tham chi ếu của khóa ngo ại ph ải tồn tại trên quan h ệ ñược tham chi ếu.

CSDL@Khoa CNTT12

5. RBTV liên b ộ - liên quan h ệ5. RBTV liên b ộ - liên quan h ệ

• Là ràng bu ộc giá tr ị giữa các b ộ trên nhi ều quan h ệ

Ví dụ: Hai ñội thi ñấu trong cùng m ột tr ận ph ải cùng phái vàcùng l ứa tuổi.

7

CSDL@Khoa CNTT13

6. RBTV liên thu ộc tính - liên quan h ệ6. RBTV liên thu ộc tính - liên quan h ệ

• Ràng bu ộc giá tr ị thu ộc tính c ủa một bộ trên quan h ệ này với giá tr ị thu ộc tính c ủa một bộ trên quan h ệ khác.

Ví dụ: VDV có l ứa tuổi không l ớn hơn lứa tuổi của ñội

CSDL@Khoa CNTT14

7. RBTV Thu ộc tính t ổng h ợp7. RBTV Thu ộc tính t ổng h ợp

• Ràng bu ộc trên các thu ộc tính ch ứa giá tr ị tổng h ợp từ các quan h ệ khác.

Ví dụ: Số ñội (SoDoi) c ủa một câu l ạc bộ phải bằng s ố bộ cócùng MaCLB trên b ảng DOI

8

CSDL@Khoa CNTT15

7. RBTV do chu trình7. RBTV do chu trình

• Ràng bu ộc trên các quan h ệ chứa giá tr ị tham chi ếu vòng tròn.

• Biểu di ễn lược ñồ CSDL theo lý thuy ết ñồ th ị:– Nút

• Quan hệ

• Thuộc tính

– Cạnh : ðường nối một ñỉnh quan hệ với một ñỉnh thuộc tính trong lược ñồ CSDL

Tên quan hệ

Tên thuộc tính

Tên quan hệ Tên thuộc tính

CSDL@Khoa CNTT16

ðồ thị lược ñồ CSDLðồ thị lược ñồ CSDL

• CLB(MACLB, TENCLB,..)

• DOI(MACLB, MADOI, PHAI,…)

• VDV(MAVDV, TENVDV, MACLB,…)

• VDVDOI(MAVDV, MADOI, ..)

TENCLB

TENVDV

DOI

MADOI

MAVDV

PHAI

VDVDOI

VDV

CLB

MALCB

9

CSDL@Khoa CNTT17

VðV chỉ ñăng ký chơi cho những ñội thuộc câu lạc bộ của VðVVðV chỉ ñăng ký chơi cho những ñội thuộc câu lạc bộ của VðV

πMAVDV,MADOI (VDVDOI) ⊆⊆⊆⊆ πMAVDV,MADOI (VDV DOI)

TENCLB

TENVDV

DOI

MADOI

MAVDV

PHAI

VDVDOI

VDV

CLB

MALCB

CSDL@Khoa CNTT18

10

CSDL@Khoa CNTT19 CSDL19

CSDL Thể Thao ðộiCSDL Thể Thao ðội

1- CLB( MaCLB , TenCLB, SoDoi)Tân từ: Mỗi CLB có 1 mã số (MACLB) phân biệt, có tên CLB (TenCLB) cũng phân biệt và có số ñội (SoDoi)

2- DOI(MaCLB, MaDoi, MaLT, Phai)Tân từ: Mỗi ñội có 1 mã số ñội (MaDoi) ñể phân biệt với các ñội khác của cùng một Câu lạc bộ (MaCLB); Mỗi ñội

thuộc về 1 lứa tuổi duy nhất (MaLT) và một phái (nam hay nữ). Tất cả các vận ñộng viên của ñội phải có cùng lứa tuổi của ñội hoặc thấp hơn lứa tuổi của ñội.

3- TD(MaTD, MaPh, NgayTD, GioTD, GioKT)Tân từ: Mỗi trận ñấu có 1 mã số (Matd) ñể phân biệt với những trận ñấu khác, diễn ra trong 1 phòng, vào 1 ngày

(NgayTD), bắt ñầu ở một giờ (GioTD) và dự kiến kết thúc tại một giờ trong ngày.

4- DOITD(MaTD, MaDoi, MaCLB, MaKQ)Tân từ: Mỗi trận ñấu (MaTD) là một cuộc gặp gỡ giữa 2 ñội (MaDoi, MaCLB). Cả 2 ñội phải thuộc cùng 1 lứa tuổi và

cùng một phái. Kết quả thi ñấu của ñội (MaKQ) ñược qui ñịnh : thua là 0, hòa là 1, thắng là 2.

5- PHONG(MaPh, DCPh, SốSân)Tân từ: Mỗi phòng có 1 mã số (MAPh) ñể phân biệt với các phòng khác, có 1 ñịa chỉ và 1 số lượng sân (SốSân)

nhất ñịnh, nơi ñó có thể diễn ra các trận ñấu.

6- LUATUOI(MaLT, TGT ðLT)Tân từ: Mỗi lứa tuổi ñược phân biệt bởi mã lứa tuổi (MaLT) và có thời gian trận ñấu dành cho lứa tuổi ñó

(TGTðLT).

7- VDV(MaVDV, TenVDV, DcVDV, MaCLB, Phai, MaLT)Tân từ: Mỗi vận ñộng viên có 1 mã số (MaVDV) dùng ñể phân biệt với các VDV khác, có 1 tên, 1 ñịa chỉ, thuộc 1

CLB, 1 phái và 1 lứa tuổi.

8- VDVDOI(MaVDV, MaDoi)Tân từ: Mỗi VðV ñăng ký chơi ở 1 ñội. Họ có thể ñăng ký vào nhiều ñội khác nhau.

CSDL@Khoa CNTT20

CSDL Thể Thao ðộiCSDL Thể Thao ðội

11

CSDL@Khoa CNTT21

CSDL Thể Thao ðộiCSDL Thể Thao ðội

CLB

MsCLB

DcCLB

Doi

MsCLB

MsDoi

MsLT

Phai

DoiTD

MsTD

MsDoi

MsCLB

KQTD

Phong

MsPh

DcPh

SoSan

TD

MsTD

MsPh

NgayGioTD

VDVDOI

MsVDV

MsDoi

VDV

MsVDV

TenVDV

DcVDV

MsCLB

Phai

MsLT

LuaTuoi

MsLT

TGTDLT

CSDL@Khoa CNTT22

CSDL “Quản lý trường mẫu giáo” (2008)CSDL “Quản lý trường mẫu giáo” (2008)

• CẤP-HỌC(MÃ-CH, TÊN-CH)Diễn giải: Mỗi cấp học có một mã số duy nhất ñể phân biệt với những cấp học khác

(MÃ-CH) và một tên gọi (TÊN-CH) duy nhất (ví dụ như mầm, chồi, lá).• LỚP-HỌC(MÃ-CH, STT-LOP, MÃ-GV, MÃ-BM)Diễn giải: Mỗi một lớp học thuộc một cấp học (MÃ-CH) và có một số thứ tự phân biệt (STT-LOP) trong cấp học ñó

(ví dụ như mầm 1, chồi 2), sẽ do một cô giáo phụ trách giảng dạy (MÃ-GV) và một cô giáo bảo mẫu (MÃ-BM) lo về việc ăn uống cho các cháu.

• CÔ-GIÁO(MÃ-CG, TÊN-CG, PHỤ-TRÁCH)Diễn giải: Mỗi cô giáo trong trường có một mã số duy nhất ñể phân biệt với những cô giáo khác (MÃ-CG), họ tên cô

giáo (TÊN-CG) và chỉ phụ trách (PHỤ-TRÁCH) một công việc giảng dạy, ký hiệu là “GD”, hay bảo mẫu, ký hiệu là “BM”, ở tại một lớp.

• MÔN-HỌC(MÃ-MH, TÊN-MH)Diễn giải: Mỗi môn học có một mã số duy nhất ñể phân biệt với những môn học khác (MÃ-MH) và một tên gọi

(TÊN-MH) duy nhất.• BÀI-HỌC(MÃ-CH, MÃ-MH, STT-BH, CHỦ-ðỀ, TUẦN, NGÀY-ðT, NGÀY-CT)Diễn giải: Mỗi một bài học thuộc một môn học (MÃ-MH) ñược giảng dạy tại một cấp học (MÃ-CH) và có một số thứ

tự (STT-BH) phân biệt trong cùng môn học ñược giảng dạy trong một cấp học (ví dụ như mầm 1, chồi 2), cómột chủ ñề về bài học (CHỦ-ðỀ) và ñược sắp xếp giảng dạy trong một tuần (TUẦN) của niên học từ ngày ñầu tuần (NGÀY-ðT) ñến ngày cuối tuần (NGÀY-CT).

Câu hỏi:1. Hãy phát biểu một cách hình thức (không mô tả ở dạng văn bản), tất cả ràng buộc toàn vẹn cùng tầm ảnh

hưởng có trên lược ñồ cơ sở dữ liệu (không cần phát biểu những ràng buộc dạng phụ thuộc hàm suy từ các khóa, dạng phụ thuộc tồn tại và ràng buộc về miền trị của thuộc tính).

2. Sử dụng ngôn ngữ SQL chuẩn, hãy viết câu truy vấn theo yêu cầu sau: Cho biết danh sách các cô giáo chưa ñược phân công cho lớp học nào.

3. Mô hình ñã cho có chứa trùng lắp thông tin? Nếu có, hãy chỉ ra một cách cụ thể và diễn giải ý nghĩa.

12

CSDL@Khoa CNTT23

Lược ñồ CSDL “ðồ gỗ nội thất” (2007)Lược ñồ CSDL “ðồ gỗ nội thất” (2007)

1. LOẠI_GỖ(MÃ_L, TÊN_L) : Mỗi loại gỗ có một mã số duy nhất ñể phân biệt với những loại gỗ khác (MÃ_L) và một tên gọi (TÊN_L) duy nhất.

2. MÀU_GỖ(MÃ_M, TÊN_M) : Mỗi màu có một mã số duy nhất ñể phân biệt với những màu khác (MÃ_M) và một tên gọi (TÊN_M) duy nhất.

3. TƯƠNG-THÍCH-GỖ-MÀU(MÃ_L, MÃ_M ) : Mỗi bộ của quan hệ liên quan ñến một loại gỗ (MÃ-L) và một màu tương thích với loại gỗ ñó (MÃ_M).

4. ðỒ-GỖ(MÃ-ðG, TÊN-ðG, MÃ-L, GIÁ-B Ộ) : Mỗi bộ ñồ gỗ có một mã số duy nhất ñể phân biệt với những bộ ñồ gỗ khác (MÃ-ðG), một tên gọi (TÊN-ðG) duy nhất, thuộc một loại gỗ duy nhất và có một giá bán trọn bộ chuẩn duy nhất (GIÁ-BỘ). Giá trọn bộ ñược xác ñịnh thấp hơn 10% tổng ñơn giá của từng thành phần cấu thành nên bộ ñó

5. THÀNH-PHẦN(MÃ-TP, TÊN-TP, KÍCH-THƯỚC) : Mỗi thành phần có một mã thành phần duy nhất (MÃ-TP) ñể phân biệt với những thành phần khác, có một tên gọi duy nhất (TÊN-TP), một kích thước duy nhất.

6. TP-LG(MÃ-TP, MÃ-L, ðƠN-GIÁ) : Mỗi thành phần (MÃ_TP) trong một loại gỗ(MÃ_L) có một ñơn giá bán duy nhất.

7. CẤU_THÀNH_ðG(MÃ_TP, MÃ_ðG, SỐ_LƯỢNG_CHUẨN) : Mỗi thành phần (MÃ_TP) liên quan ñến một bộ ñồ gỗ (MÃ_ðG) có một số lượng chuẩn cấu tạo nên bộ ñồ gỗ ñó.

CSDL@Khoa CNTT24

Câu hỏi:Câu hỏi:

1. Hãy phát bi ểu, một cách hình th ức (không mô t ả ở dạng v ăn bản), tất cảràng bu ộc toàn v ẹn cùng t ầm ảnh h ưởng c ủa nó, (không c ần phát bi ểu những ràng bu ộc dạng ph ụ thu ộc hàm suy t ừ các khóa, d ạng ph ụ thu ộc tồn tại do có khóa ngo ại ho ặc lồng khóa và ràng bu ộc về miền tr ị liên quan ñến ki ểu của thu ộc tính).

2. Hãy vi ết câu truy v ấn sau b ằng ngôn ng ữ SQL chu ẩn: Tính giá bán c ủa một bộ ñồ gỗ trang b ị cho phòng ăn, gồm một bộ bàn ăn chu ẩn với 6 ghế có mã s ố BA195 b ằng g ỗ xoan ñào màu v ẹc-ni nâu ñậm và 2 k ệ tủcó mã s ố K005 vó kích th ước ngang 90, cao 220, sâu 45 v ới 5 tấm ng ăn cho m ỗi kệ (với kích th ước nh ư yêu c ầu số tấm ng ăn trong b ộ chu ẩn là4).

3. Nếu công ty quy ết ñịnh ch ỉ bán t ất cả bộ ñồ gỗ theo c ấu thành chu ẩn, thì có ph ải ch ỉnh s ửa lược ñồ CSDL không? Hãy ch ỉ ra nh ững thu ộc tính không còn c ần thi ết, nếu có.

13

CSDL@Khoa CNTT25

Cho lược ñồ CSDL:“Olympic Tin học toàn quốc” (2005)

Cho lược ñồ CSDL:“Olympic Tin học toàn quốc” (2005)

• NỘI_DUNG_THI(#NDT, MÔ_TẢ_NDT, LOẠI)

Diễn gi ải: Mỗi nội dung thi có m ột mã s ố (#NDT) ñể phân bi ệt với nh ững n ội dung thi khác, có m ột mô t ả (MÔ_TẢ_NDT), thu ộc một lo ại (LOẠI) "cá nhân" | "t ập th ể"

• THÍ_SINH_CÁ_NHÂN(#TSCN, TÊN_TSCN, #NDT, #TSð, #G)

Diễn gi ải: Mỗi một thí sinh cá nhân có m ột mã s ố (#TSCN) ñể phân bi ệt với nh ững thí sinh khác, tên (TÊN_TSCN), ñăng ký thi một nội dung thi n ếu không ph ải làthành viên c ủa một ñội (#NDT) và ñược xếp vào m ột gi ải nếu có th ắng (#G). Nếu thí sinh cá nhân là thành viên c ủa một ñội thì có m ột mã thí sinh ñội (#TSð).

• THÍ_SINH_ðỘI(#TSð, TÊN_ð, TS_TV)

Diễn gi ải: Mỗi thí sinh ñội có m ột mã s ố duy nh ất (#TSð) ñể phân bi ệt với nh ững ñội khác, m ột tên g ọi (TÊN_ð), có m ột tổng s ố thành viên (TS_TV).

• ðK_THI_ð(#TSð, #NDT, #G)

Diễn gi ải: Một ñăng ký thi liên quan ñến một ñội và m ột nội dung thi duy nh ất (#TSð, #NDT), ñược xếp vào m ột gi ải nếu có th ắng (#G).

• GIẢI(#G, TÊN_G, TRỊ_GIÁ, #NDT, LOẠI_G)

Diễn gi ải: Mỗi gi ải có m ột mã s ố duy nh ất (#G) ñể phân bi ệt với nh ững gi ải khác, một tên g ọi (TÊN_G), có m ột tr ị giá (TR Ị_GIÁ), là gi ải của một nội dung thi (#NDT) và thu ộc một lo ại gi ải (“1”, “2”, “3”, “khuy ến khích”).

CSDL@Khoa CNTT26

Câu hỏi:Câu hỏi:

1. Hãy diễn giải ý nghĩa của một bộ thuộc quan hệTHÍ_SINH_CÁ_NHÂN khi #NDT, #G có trị “Trống”.

2. Hãy phát biểu, một cách hình thức (không mô tả ở dạng văn bản), tất cả ràng buộc toàn vẹn, ngoài ràng buộc dạng phụthuộc hàm suy từ các khóa, trong các quan hệTHÍ_SINH_CÁ_NHÂN, THÍ_SINH_ðỘI.

3. Hãy viết câu truy vấn sau bằng ngôn ngữ SQL chuẩn: Cho biết danh sách tên các thành viên thuộc ñội ñạt giải 3, kết quả phải ñược nhóm theo tên ñội và trong mỗi ñội sắp xếp theo thứ tựABC tên thành viên.

4. Mô hình ñã cho có chứa trùng lắp thông tin trong 3 quan hệNỘI_DUNG_THI, ðK_THI_ð, GIẢI? Nếu có, hãy chỉ ra một cách cụ thể và diễn giải ý nghĩa.