intTypePromotion=1

Giáo trình Thiết kế cơ sở dữ liệu: Phần 2 - Trịnh Minh Tuấn (biên soạn)

Chia sẻ: Hoa La Hoa | Ngày: | Loại File: PDF | Số trang:133

0
201
lượt xem
73
download

Giáo trình Thiết kế cơ sở dữ liệu: Phần 2 - Trịnh Minh Tuấn (biên soạn)

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Phần 2 Giáo Trình thiết kế cơ sở dữ liệu tiếp tục giới thiệu đến bạn đọc nội dung từ chương V đến chương VIII. Phần này giới thiệu đến bạn đọc các vấn đề sau: Ngôn ngữ đại số quan hệ, ngôn ngữ truy vấn cơ sở dữ liệu SQL, ngôn ngữ tân từ và tối ưu hóa một câu hỏi. Giáo trình thiết kế cơ sở dữ liệu được biên soạn dưới dạng lý thuyết và bài tập thực hành giúp cho bạn đọc cũng như các bạn sinh viên dễ dàng, thuận tiện trong việc nghiên cứu và học tập.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Thiết kế cơ sở dữ liệu: Phần 2 - Trịnh Minh Tuấn (biên soạn)

  1. CHÖÔNG V NGOÂN NGÖÕ ÑAÏI SOÁ QUAN HEÄ 5.1. Daãn nhaäp. Ngoân ngöõ ñaïi soá quan heä laø ngoân ngöõ bieåu dieãn caâu hoûi veà caùc quan heä. Do caùc caùch bieåu dieãn khaùc nhau neân trong taøi lieäu naøy, ngoân ngöõ ñaïi soá quan heä ñöôïc chia laøm 3 nhoùm: Caùc pheùp toaùn taäp hôïp - caùc pheùp toaùn naøy ñöôïc bieåu dieãn nhö caùc pheùp toaùn treân taäp hôïp, caùc pheùp toaùn quan heä vaø caùc pheùp toaùn khaùc lieân quan chuû yeáu ñeán pheùp keát noái. 5.2. Caùc pheùp toaùn taäp hôïp treân caùc quan heä. Saùu pheùp toaùn cô baûn treân taäp hôïp ñöôïc aùp duïng treân taäp caùc boä giaù trò cuûa caùc quan heä, ñoù laø: Hôïp (Union), Hieäu (Minus), Giao (Intersection), Tích Ñeà-caùc (Cartesian), pheùp chia (Division) vaø pheùp buø (Complement). Giaû thieát: U =  A1, A2, A3, ... An  laø taäp caùc thuoäc tính. R vaø S laø 2 quan heä ñöôïc ñònh nghóa treân U coù cuøng thöù töï cuûa caùc thuoäc tính. Vaø ôû ñaây chuùng ta luoân luoân giaû thieát laø R vaø S coù soá löôïng höõu haïn caùc boä giaù trò. 5.2.1. Pheùp hôïp 2 quan heä (Union). Hôïp cuûa hai quan heä R vaø S - ñöôïc kyù hieäu laø R  S - laø moät quan heä Q xaùc ñònh treân taäp thuoäc tính U, coù cuøng thöù töï thuoäc tính nhö trong quan heä R vaø S, ñöôïc ñònh nghóa nhö sau: 94
  2. Q = R  S =  t / t  R hoaëc t  S  Noùi moät caùch noâm na, hôïp cuûa 2 quan heä R vaø S laø moät quan heä coù cuøng ngoâi vôùi quan heä R vaø S vôùi caùc boä giaù trò baèng goäp caùc boä giaù trò cuûa caû R vaø S; nhöõng boä giaù trò truøng nhau chæ ñöôïc giöõ laïi 1 boä. Ví duï 5.2.1: Quan heä ÑônvòA coù caùc boä giaù trò sau: MaõSoá Hoï-teân Phaùi Chöùc-danh Löông MaõÑV 100 Nguyeãn Vaên Nam Nam Giaùm ñoác 2.500.000 10 101 Hoaøng Thò Xuaân Nöõ Keá toaùn tröôûng 1.700.000 10 103 Ñaëng Ngoïc Chieán Nöõ Thö kyù 1.000.000 10 105 Phan Kyø Nhaân Nam Laùi xe 700.000 10 Quan heä ÑônvòB coù caùc boä giaù trò sau: MaõSoá Hoï-teân Phaùi Chöùc-danh Löông MaõÑV 210 Nguyeãn Thò Cao Nöõ Tröôûng phoøng 1.200.000 30 101 Hoaøng Thò Xuaân Nöõ Keá toaùn tröôûng 1.700.000 10 221 Ñoã Höõu Ngoïc Nam Phoù phoøng 1.000.000 30 233 Hoaøng Thao Nam Chuyeân vieân 1.000.000 30 Hôïp cuûa hai quan heä treân cho keát quaû laø quan heä NV-CTy coù 7 boä giaù trò sau: MaõSoá Hoï-teân Phaùi Chöùc-danh Löông MaõÑV 100 Nguyeãn Vaên Nam Nam Giaùm ñoác 2.500.000 10 101 Hoaøng Thò Xuaân Nöõ Keá toaùn tröôûng 1.700.000 10 103 Ñaëng Ngoïc Chieán Nöõ Thö kyù 1.000.000 10 105 Phan Kyø Nhaân Nam Laùi xe 700.000 10 210 Nguyeãn Thò Cao Nöõ Tröôûng phoøng 1.200.000 30 221 Ñoã Höõu Ngoïc Nam Phoù phoøng 1.000.000 30 233 Hoaøng Thao Nam Chuyeân vieân 1.000.000 30 95
  3. Boä giaù trò coù maõ soá nhaân vieân laø 101 xuaát hieän 2 laàn trong 2 quan heä ÑônvòA vaø ÑônvòB, nhöng trong quan heä NV-Cty boä naøy chæ ñöôïc giöõ laïi 1 laàn, do ñoù chæ coøn 7 boä giaù trò. 5.2.2. Pheùp tröø hai quan heä (Minus). Hieäu cuûa hai quan heä R vaø S, ñöôïc kyù hieäu laø R - S, laø moät quan heä Q xaùc ñònh treân taäp thuoäc tính U, coù cuøng thöù töï thuoäc tính nhö trong quan heä R vaø S, ñöôïc ñònh nghóa nhö sau: Q = R - S =  t / t  R vaø t  S  Noùi moät caùch noâm na, hieäu cuûa 2 quan heä R vaø S laø moät quan heä coù cuøng ngoâi vôùi quan heä R vaø S vôùi caùc boä giaù trò laø caùc boä giaù trò cuûa R sau khi ñaõ loaïi boû ñi caùc boä coù maët trong quan heä S. Ví duï 5.2.2: Vôùi hai quan heä nhö treân, hieäu cuûa ÑônvòA vaø ÑônvòB laø quan heä NV-CtyA vôùi caùc boä sau: MaõSoá Hoï-teân Phaùi Chöùc-danh Löông MaõÑV 100 Nguyeãn Vaên Nam Nam Giaùm ñoác 2.500.000 10 103 Ñaëng Ngoïc Chieán Nöõ Thö kyù 1.000.000 10 105 Phan Kyø Nhaân Nam Laùi xe 700.000 10 5.2.3. Giao cuûa 2 quan heä (Intersection). Giao cuûa hai quan heä R vaø S, ñöôïc kyù hieäu laø R  S, laø moät quan heä Q xaùc ñònh treân taäp thuoäc tính U, coù cuøng thöù töï thuoäc tính nhö trong quan heä R vaø S, ñöôïc ñònh nghóa nhö sau: Q = R  S =  t / t  R vaø t  S  96
  4. Noùi moät caùch noâm na, giao cuûa 2 quan heä R vaø S laø moät quan heä coù cuøng ngoâi vôùi quan heä R vaø S vôùi caùc boä giaù trò laø caùc boä gioáng nhau cuûa caû hai quan heä R vaø S. Ví duï 5.2.3: Vôùi hai quan heä nhö treân, hieäu cuûa ÑônvòA vaø ÑônvòB laø quan heä NV-CtyA vôùi caùc boä sau: MaõSoá Hoï-teân Phaùi Chöùc-danh Löông MaõÑV 101 Hoaøng Thò Xuaân Nöõ Keá toaùn tröôûng 1700.000 10 5.2.4. Tích Ñeà-caùc cuûa 2 quan heä (Cartesian). R (A1, A2, ..., An) vaø S (B1, B2, ..., Bm) laø hai quan heä coù soá boä giaù trò höõu haïn. Tích Ñeà-caùc cuûa hai quan heä R vaø S, ñöôïc kyù hieäu laø R x S, laø moät quan heä Q xaùc ñònh treân taäp thuoäc tính cuûa R vaø S (vôùi n + m thuoäc tính) vaø ñöôïc ñònh nghóa nhö sau: Q = R x S =  t / t coù daïng (a1, a2, ..., an, b1, b2, ..., bm) trong ñoù (a1, a2, ..., an)  R vaø (b1, b2, ..., bm)  S  Noùi moät caùch noâm na, tích Ñeà-caùc cuûa 2 quan heä R vaø S laø moät quan heä Q coù soá ngoâi baèng toång soá ngoâi cuûa R vaø S, vôùi caùc boä giaù trò goàm 2 phaàn: phaàn beân traùi laø moät boä giaù trò cuûa R vaø phaàn beân phaûi laø moät boä giaù trò cuûa S. Nhö vaäy, neáu R coù n1 boä giaù trò vaø S coù n2 boä giaù trò, thì Q seõ coù n1 x n2 boä giaù trò. Ví duï 5.2.4: R (A B C) vaø S (D E F) a1 b1 c1 d1 e1 f1 a2 b2 c2 d2 e2 f2 a3 b3 c3 97
  5. R x S = Q (A B C D E F) a1 b1 c1 d1 e1 f1 a1 b1 c1 d2 e2 f2 a2 b2 c2 d1 e1 f1 a2 b2 c2 d2 e2 f2 a3 b3 c3 d1 e1 f1 a3 b3 c3 d2 e2 f2 5.2.5. Pheùp chia hai quan heä (Division). R laø quan heä n ngoâi vaø S laø quan heä m ngoâi (n > m vaø S  ), coù m thuoäc tính chung (gioáng nhau veà maët ngöõ nghóa, hoaëc caùc thuoäc tính coù theå so saùnh ñöôïc) giöõa R vaø S. Pheùp chia 2 quan heä R vaø S, kyù hieäu laø RS, laø moät quan heä Q coù n - m ngoâi ñöôïc ñònh nghóa nhö sau: Q = RS = { t / sc: uS, (t,u)  R } Söû duïng ñònh nghóa pheùp tích Ñeà-caùc, coù theå ñònh nghóa pheùp chia hình thöùc hôn nhö sau: RS = Q sao cho Q x S  R (vôùi giaû thieát theâm laø thöù töï thuoäc tính cuûa R, S, Q laø khoâng quan troïng). Ví duï 5.2.5: R (A, B, C, D) S (C, D) RS= (A, B) a b c d c d a b a b e f e f c d b c e f c d c d c d e f a b d e 98
  6. Ví duï 5.2.6: (TS. Ñoàng Thò Bích Thuûy) Cho quan heä veà khaû naêng laùi caùc loaïi maùy bay cuûa caùc phi coâng: KHAÛ-NAÊNG (Soá-hieäu-phi-coâng, Soá-hieäu-maùy-bay) Soá-hieäu-phi-coâng Soá-hieäu-maùy-bay 32 102 30 101 30 103 32 103 33 100 30 102 31 102 30 100 31 100 Caâu hoûi: Cho bieát caùc phi coâng coù khaû naêng laùi ñöôïc caû 3 loaïi maùy bay 100, 101, vaø 103 ? Traû lôøi: Ñoù laø thöông cuûa pheùp chia quan heä KHAÛ-NAÊNG cho quan heä MAÙY-BAY (Soá-hieäu-maùy-bay): 100 101 103 Vaø keát quaû laø quan heä PHI-COÂNG (Soá-hieäu-phi-coâng) coù 1 boä giaù trò (30). 5.2.6. Pheùp buø cuûa moät quan heä (Complement). Cho quan heä R (A1, A2, ..., An) vôùi caùc mieàn giaù trò cuûa thuoäc tính Ai laø MGT(Ai). Pheùp buø cuûa quan heä R laø quan heä Q xaùc ñònh treân taäp thuoäc tính R+, kyù hieäu laø R, ñöôïc ñònh nghóa nhö sau: Q = R =  t (a1, a2, ..., an) vaø ai  MGT(Ai) i=1.. n / t  R  99
  7. Nghóa laø taäp taát caû caùc boä giaù trò coù theå coù cuûa tích Ñeà-caùc mieàn giaù trò MGT(Ai) nhöng chöa coù maët trong theå hieän cuûa quan heä R. Quan heä buø cuûa moät quan heä coù soá löôïng boä giaù trò laø raát lôùn, vì vaäy trong thöïc teá raát ít heä quaûn trò CSDL caøi ñaët pheùp toaùn naøy. Ví duï 5.2.7: Quan heä CUNG-CAÁP (Maõ-NCC, Haøng-hoùa) vôùi Maõ-NCC =  S1, S2, S3  vaø caùc Haøng-hoùa cung caáp laø  Ñinh, OÁc, Vít  Maõ-NCC Haøng-hoùa S1 Ñinh S1 Vít S2 OÁc S2 Ñinh S3 Vít Quan heä buø cuûa quan heä CUNG-CAÁP coù caùc boä giaù trò sau: Maõ-NCC Haøng-hoùa S1 OÁc S2 Vít S3 OÁc S3 Ñinh 5.3. Caùc thao taùc cô sôû treân caùc quan heä ÔÛ muïc treân chuùng ta ñaõ trình baøy moät caùch tieáp caän trong vieäc hình thaønh ngoân ngöõ truy vaán döõ lieäu (Data Query Language) qua caùc pheùp toaùn taäp hôïp treân caùc boä giaù trò cuûa caùc quan heä. Caùc pheùp toaùn ñaëc bieät treân caùc quan heä sau ñaây laø moät caùch tieáp caän khaùc trong vieäc bieåu dieãn caâu hoûi cuûa ngoân ngöõ ñaïi soá quan heä, chuùng cuõng coù 100
  8. lieân quan chaët cheõ tôùi nhöõng thao taùc cô baûn Theâm (Insert), Söûa (Update) vaø Xoùa (Delete) caùc boä giaù trò treân quan heä. 5.3.1. Pheùp chieáu (Projection) Giaû söû R laø moät quan heä xaùc ñònh treân taäp thuoäc tính U =  A1, A2, ..., An . X  U. Pheùp chieáu quan heä R treân taäp con caùc thuoäc tính X laø moät quan heä Q xaùc ñònh treân taäp thuoäc tính X, kyù hieäu laø R [X], ñöôïc ñònh nghóa nhö sau: Q = R [X]  q / t  R: q = t.X  Ñoâi khi ngöôøi ta coøn kyù hieäu pheùp chieáu quan heä R treân taäp thuoäc tính X baèng X(R). Neáu X = Ai1, Ai2, ... Aim  thì coù theå vieát cuï theå laø Ai1Ai2...Aim(R) [3]. Ngöõ nghóa: Trích töø R moät soá thuoäc tính naøo ñoù ñeå taïo thaønh moät quan heä môùi. Soá ngoâi cuûa quan heä môùi naøy baèng soá thuoäc tính cuûa taäp con X. Caùc boä giaù trò cuûa caùc coät ñöôïc trích neáu gioáng nhau seõ ñöôïc loaïi boû ñeå chæ giöõ laïi moät boä duy nhaát (trong theå hieän cuûa quan heä môùi khoâng coù 2 boä naøo gioáng nhau). Pheùp chieáu ñöôïc bieåu dieãn baèng sô ñoà nhö sau: Q X R Hình 5.3.1. Sô ñoà bieåu dieãn pheùp chieáu 101
  9. Ví duï 5.3.1: Cho quan heä veà caùc nhaân vieân ñang laøm vieäc taïi moät Coâng ty (EMPLOYEE) nhö sau: Empno Name Job Salary Comm Deptno Sex 100 Wilson Clrk 1.700 10 M 101 Smith Slsm 2.500 1.300 40 F 103 Reed Anlt 3.500 30 M 105 Watson Mngr 4.500 0 30 M 109 Allen Mngr 3.800 8.000 40 F 110 Turner Clrk 1.800 50 M 200 Chen Mngr 2.900 10 F 210 Ramirez Mngr 3.600 50 M 213 McDonnel Clrk 1.625 60 M 214 Simpson Drvr 825 60 M 215 Di Salvo Spvr 2.700 60 M 220 Schwartz Slsm 4.200 5.300 40 F Caâu hoûi: Haõy cho bieát caùc loaïi coâng vieäc maø caùc nhaân vieân cuûa Cty ñang laøm? Caâu traû lôøi: Chieáu quan heä EMPLOYEE leân thuoäc tính Job, chæ giöõ laïi caùc giaù trò khaùc nhau. Keát quaû laø moät quan heä JOBEMPLOYEE = EMPLOYEE [JOB] goàm 1 coät 6 doøng vôùi caùc giaù trò  Clrk, Slsm, Anlt, Mngr, Drvr, vaø Spvr . 5.3.2. Pheùp choïn (Selection) Pheùp choïn cho pheùp choïn löïa chæ nhöõng baûn ghi thoûa maõn moät ñieàu kieän Ñ naøo ñoù ñeå ñöa vaøo quan heä keát quaû. Ñieàu kieän Ñ chính laø moät bieåu thöùc loâgíc cho keát quaû hoaëc laø ñuùng (True) hoaëc laø sai (False) khi ñaùnh giaù treân caùc boä giaù trò cuûa quan heä nguoàn; noù laø toå hôïp cuûa caùc bieåu thöùc loâgic cô sôû. Moãi bieåu thöùc cô sôû chöùa moät pheùp so saùnh: nhoû hôn (=), baèng nhau (=) vaø khaùc ( hoaëc ) coù daïng: 102
  10. - Thuoäc tính so saùnh vôùi thuoäc tính. - Thuoäc tính so saùnh vôùi haèng (literal) Caùc bieåu thöùc loâgic cô sôû ñöôïc toå hôïp vôùi nhau bôûi caùc pheùp toaùn loâgic: pheùp “vaø” loâgic - hay coøn goïi laø pheùp noái lieàn ( - conjunction), pheùp “hoaëc” loâgic - hay coøn goïi laø pheùp noái rôøi ( - disjunction) vaø pheùp phuû ñònh ( - not). Giaû söû R (A1, A2, ... An) laø moät quan heä, vaø Ñ laø moät ñieàu kieän (hoaëc coøn goïi laø moät phaùt bieåu) döïa treân taäp con thuoäc tính R+. Ñaùnh giaù ñieàu kieän Ñ treân boä giaù trò t  R ñöôïc kyù hieäu laø E (tÑ) hoaëc ñeå ñôn giaûn, ta coù theå vieát Ñ(t). Pheùp choïn caùc baûn ghi cuûa R thoûa maõn ñieàu kieän Ñ laø moät quan heä Q coù cuøng ngoâi vôùi R, kyù hieäu laø R:Ñ, ñöôïc ñònh nghóa hình thöùc nhö sau: Q =  t  R / Ñ (t) = ñuùng  Pheùp choïn cuõng coù theå ñöôïc kyù hieäu theo C.J.Date [3] bôûi daáu sigma (): F(R). Pheùp choïn ñöôïc bieåu dieãn baèng sô ñoà nhö sau: Q Ñ R Hình 5.3.2. Sô ñoà bieåu dieãn pheùp choïn 103
  11. Ví duï 5.3.2: Cuõng vôùi quan heä EMPLOYEE nhö trong ví duï 5.3.1, ñieàu kieän choïn laø: “nhöõng ngöôøi laøm laõnh ñaïo caùc phoøng ban vaø coù möùc löông thaùng töø 3.500 $ trôû leân”. Baèng ngoân ngöõ ñaïi soá qua heä vôùi pheùp toaùn choïn, caâu hoûi ñöôïc dieãn ñaït nhö sau: EMPLOYEE : (Job = Mngr)  (Salary >= 3500) . Keát quaû laø moät quan heä goàm 3 doøng sau: Empno Name Job Salary Comm Deptno Sex 105 Watson Mngr 4.500 30 M 109 Allen Mngr 3.800 8.000 40 F 210 Ramirez Mngr 3.600 50 M 5.3.3. Pheùp keát noái hai quan heä (Join) Giaû söû coù 2 quan heä R (A1, A2, ..., An) vaø S (B1, B2, ..., Bm). t = (a1, a2, ..., an) laø moät boä giaù trò cuûa R vaø u = (b1, b2, ..., bm) laø moät boä giaù trò cuûa S. Goïi v laø boä gheùp noái u vaøo t (hay boä giaù trò t vaø u ñöôïc “xeáp caïnh nhau” ñeå taïo thaønh boä giaù trò môùi v) ñöôïc ñònh nghóa nhö sau: v = (t, u) = (a1, a2, ..., an, b1, b2, ..., bm). A  R+ vaø B  S+ laø hai thuoäc tính coù theå so saùnh ñöôïc. Goïi  laø moät trong caùc pheùp toaùn so saùnh  =, =,  . Pheùp keát noái hai quan heä (coù theå noùi taét laø pheùp keát) R vôùi S treân caùc thuoäc tính A vaø B vôùi pheùp so saùnh , vôùi giaû thieát laø giaù trò coät R[A] coù theå so saùnh ñöôïc (qua pheùp so saùnh ) vôùi moãi giaù trò cuûa coät R[B], ñöôïc ñònh nghóa qua: AB R S =  v = (t, u)  t  R , u  S vaø t.A  u.B 104
  12. Hoaëc: AB R S = (R x S) : (A  B). Pheùp keát noái 2 quan heä R vaø S coù theå xem nhö ñöôïc thöïc hieän qua 2 böôùc: Böôùc 1: Thöïc hieän tích Ñeà-caùc hai quan heä R vaø S. Böôùc 2: Choïn caùc boä giaù trò thoûa maõn ñieàu kieän A  B. Ngöõ nghóa: Ñònh nghóa treân cho ta keát quaû cuûa pheùp keát noái hai quan heä R vaø S vôùi pheùp so saùnh  treân 2 thuoäc tính A vaø B laø moät quan heä môùi, Ñoù laø keát quaû cuoái cuøng cuûa pheùp toaùn quan heä (pheùp Choïn) treân quan heä keát quaû cuûa pheùp toaùn taäp hôïp (tích Ñeà-caùc). Neáu  laø pheùp toaùn so saùnh baèng nhau (=) thì ta goïi ñoù laø pheùp keát noái baèng (Equi Join). Neáu caùc thuoäc tính so saùnh laø gioáng teân nhau thì trong keát quaû cuûa pheùp keát noái seõ loaïi boû ñi moät trong 2 thuoäc tính ñoù, khi ñoù pheùp keát noái ñöôïc goïi laø pheùp keát noái töï nhieân (Natural Join) vaø söû duïng kyù hieäu cho pheùp toaùn laø “ * “ hoaëc chæ kyù hieäu (khoâng coù A  B) ôû phía treân cuûa pheùp toaùn. Trong caùc tröôøng hôïp coøn laïi, pheùp toaùn ñöôïc goïi chung laø pheùp keát noái theta (- Join). Pheùp keát noái ñöôïc bieåu dieãn baèng sô ñoà nhö sau: Q AB R S Hình 5.3.3. Sô ñoà bieåu dieãn pheùp keát noái 105
  13. Ví duï 5.3.3: Cho 2 quan heä R vaø S vôùi caùc boä giaù trò cho trong baûng ôû coät lôùn thöù nhaát vaø thöù hai beân traùi. Keát quaû pheùp keát noái theta (-Join) cuûa 2 quan heä treân ñöôïc cho trong baûng ôû coät lôùn thöù ba döôùi ñaây: R.B  S.C R (A B C) S (C D E) R S =Q (A B C C D E) a1 1 1 1 d1 e1 a1 1 1 1 d1 e1 a2 2 1 2 d2 e2 a2 2 1 1 d1 e1 a3 2 2 3 d3 e3 a2 2 1 2 d2 e2 a3 2 2 1 d1 e1 a3 2 2 2 d2 e2 Keát quaû pheùp keát noái töï nhieân cuûa 2 quan heä R vaø S laø quan heä Q’ vôùi caùc boä giaù trò nhö sau: R S = Q (A B C D E) a1 1 1 d1 e1 a2 2 1 d1 e1 a3 2 2 d2 e2 Ví duï 5.3.4: Cho CSDL veà caùn boä - vieân chöùc Nhaø nöôùc (CBVC) vôùi caùc quan heä sau ñaây: 1. Quan heä ÑÔN-VÒ: Maõ-ÑV Teân-ñôn-vò Loaïi 10002 Tröôøng Kyõ thuaät nghieäp vuï maùy tính 3 10003 Phoøng quaûn lyù haønh chaùnh 2 10022 Vaên phoønh ñaïi dieän Thanh nieân 2 10070 Ban quaûn lyù voán sinh vieân 5 10071 Löïc löôïng quaûn lyù thò tröôøng 5 106
  14. 2. Quan heä loaïi hình toå chöùc cuûa ñôn vò LOAI-ÑV: Loaïi Teân-loaïi-hình 2 Haønh chaùnh 3 Söï nghieäp hoaøn toaøn 5 Haïch toaùn ñoäc laäp 3. Quan heä Ngaïch-CBVC: Ngaïch Teân ngaïch 01002 Chuyeân vieân chính 01003 Chuyeân vieân 01004 Caùn söï 01005 Kyõ thuaät vieân ñaùnh maùy 01008 Nhaân vieân vaên thö 01010 Laùi xe cô quan 4. Quan heä Ngaïch-Baäc-löông: Ngaïch Baäc Heä-soá-löông 01002 01 3.35 01002 02 3.63 01002 03 3.91 01003 05 2.82 01003 07 3.31 01003 08 3.56 01004 07 2.18 01004 08 2.30 01004 10 2.55 01004 11 2.68 01005 04 2.06 01005 05 2.18 01005 06 2.30 01008 11 2.12 01010 08 2.47 01010 11 2.80 01010 13 3.02 107
  15. 5. Quan heä danh saùch CBVC vôùi caùc boä giaù trò sau: Maõ-ÑV Maõ-CC Hoï-loùt Teân Giôùi Ngaøy-sinh Ngaïch Baäc Ngaøy-xeáp 10002 1000028 Traàn Töù Haûi Nam 05/09/40 01003 08 01/12/96 10002 1000040 Traàn Ngoïc Sôn Nam 04/08/57 01003 05 01/12/97 10002 1000042 Nguyeãn Vaên Sang Nam 20/04/61 01004 10 01/01/97 10002 1000043 Nguyeãn Vaên Thaønh Nam 04/10/44 01004 10 01/01/97 10002 1000065 Huyønh Thò Hoa Nöõ 06/04/61 01004 07 01/01/97 10003 1000156 Huyønh Ngoïc Thuùy Nöõ 28/10/54 01005 06 01/09/97 10003 1000134 Nguyeãn Vaên Baïc Nam 08/09/42 01010 13 01/12/97 10003 1000159 Laâ Vaên Sang Nam 15/06/50 01008 11 01/03/96 10003 1000160 Trònh Ngoïc Taâm Nam 18/11/66 01010 08 01/02/96 10022 1000218 Nguyeãn Cöûu Chaâu Nam 19/11/47 01010 11 01/10/96 10022 1000219 Nguyeãn Vaên Huøng Nam 15/05/55 01003 05 01/12/95 10022 1000220 Nguyeãn Kim Löu Nöõ 22/07/55 01004 12 01/12/95 (Caùc quan heä 4 vaø 5 ñaõ ñöôïc neâu trong caùc ví duï 4.2.3 vaø 4.2.5 trong Chöông IV, muïc 4.2). Pheùp keát noái töï nhieân 2 quan heä ÑÔN-VI vaø LOAÏI-ÑV laø moät quan heä goàm 4 thuoäc tính: Maõ-ÑV, Teân-ñôn-vò, Loaïi vaø Teân-loaïi vôùi caùc boä giaù trò sau: Maõ-ÑV Teân-ñôn-vò Loaïi Teân-loaïi-hình 10002 Tröôøng Kyõ thuaät nghieäp vuï maùy tính 3 Söï nghieäp hoaøn toaøn 10003 Phoøng quaûn lyù haønh chaùnh 2 Haønh chaùnh 10022 Vaên phoønh ñaïi dieän Thanh nieân 2 Haønh chaùnh 10070 Ban quaûn lyù voán sinh vieân 5 Haïch toaùn ñoäc laäp 10071 Löïc löôïng quaûn lyù thò tröôøng 5 Haïch toaùn ñoäc laäp  Ghi chuù : Baïn ñoïc caàn ghi nhaän laïi caùc quan heä trong ví duï naøy. Chuùng seõ ñöôïc duøng laïi trong caùc chöông tôùi. 5.4. Caùc pheùp toaùn khaùc. Muïc naøy trình baøy 3 pheùp toaùn keát noái môû roäng khaùc ñaëc bieät quan troïng, maø baûn chaát cuûa chuùng vaãn laø keát noái. Chuùng ñaõ ñöôïc caøi 108
  16. ñaët trong moät soá heä quan trò CSDL nhö MicroSoft Access, SQL- Server, Oracle. Caùc pheùp keát noái ñoù laø: Keát noái noäi (Inner Join), Keát noái traùi (Left Join) vaø Keát noái phaûi (Right Join). 5.4.1. Pheùp keát noái noäi (Inner Join). Thöïc chaát laø pheùp keát noái baèng ñaõ trình baøy treân. Tuy nhieân, ngay caû trong tröôøng hôïp hai thuoäc tính so saùnh coù cuøng teân thì keát quaû pheùp keát noái vaãn giöõ laïi 2 teân thuoäc tính ñoù. Ví duï 5.4.1.1: Cho 2 quan heä R (A, B, C) vaø S (A, D, E, F) vôùi caùc boä giaù trò nhö döôùi ñaây. Keát quaû cuûa pheùp keát noái noäi ñöôïc cho trong baûng phía beân phaûi. R.A = S.A R (A B C) S (A D E F) R S =Q (A B C A D E F) a1 b1 c1 a1 d1 e1 f1 a1 b1 1 a1 d1 e1 f1 a2 b2 c2 a2 d2 e2 f 2 a2 b2 c2 a2 d2 e2 f2 a3 b3 c3 a4 d4 e4 f 4 a7 b7 c7 a7 d7 e7 f7 a5 b5 c5 a6 d6 e6 f 6 a7 b7 c7 a7 d7 e7 f 7 Ví duï 5.4.1.2: Pheùp keát noái noäi 2 quan heä ÑÔN-VÒ vaø LOAÏI-ÑV cho keát quaû laø moät baûng sau: Maõ-ÑV Teân-ñôn-vò Loaïi Loaïi Teân-loaïi-hình 10002 Tröôøng K.thuaät nghieäp vuï maùy tính 3 3 SN hoaøn toaøn 10003 Phoøng quaûn lyù haønh chaùnh 2 2 Haønh chaùnh 10022 Vaên phoønh ñaïi dieän Thanh nieân 2 2 Haønh chaùnh 10070 Ban quaûn lyù voán sinh vieân 5 5 Haïch toaùn ñ.laäp 10071 Löïc löôïng quaûn lyù thò tröôøng 5 5 Haïch toaùn ñ.laäp 109
  17. 5.4.2. Pheùp keát noái traùi (Left Join) Giaû söû coù 2 quan heä R (A1, A2, ..., An) vaø S (B1, B2, ..., Bm). t = (a1, a2, ..., an) vaø u = (b1, b2, ..., bm) laø hai boä giaù trò cuûa R vaø S. Goïi v laø boä gheùp noái u vaøo t (hay boä giaù trò t vaø u ñöôïc “xeáp caïnh nhau”) vaø kyù hieäu laø: v = (t, u) = (a1, a2, ..., an, b1, b2, ..., bm). Boä tNULL = (NULL, NULL, ..., NULL) laø moät boä ñaëc bieät cuûa R goàm n giaù trò cuûa caùc thuoäc tính A1, A2, ..., An ñeàu laø khoâng xaùc ñònh vaø uNULL = (NULL, NULL, ..., NULL) laø moät boä ñaëc bieät cuûa S goàm m giaù trò cuûa caùc thuoäc tính B1, B2, ..., Bm ñeàu laø khoâng xaùc ñònh. A  R+ vaø B  S+ laø hai thuoäc tính coù theå so saùnh ñöôïc. Pheùp keát noái traùi hai quan heä R vôùi S treân caùc thuoäc tính A vaø B vôùi pheùp so saùnh baèng ( = ), vôùi giaû thieát laø giaù trò coät R[A] coù theå so saùnh töông ñöông ñöôïc vôùi moãi giaù trò cuûa coät S[B], ñöôïc ñònh nghóa laø: A=B R S =  v = (t, u)  (t  R , u  S vaø t.A  u.B) hoaëc (t  R, u = uNULL vôùi t.A S[B])  nghóa laø, taát caû caùc boä v coù ñöôïc nhôø caùch ñaët boä giaù trò cuûa R vaø S xeáp caïnh nhau, neáu coù giaù trò gioáng nhau treân 2 thuoäc tính keát noái; vaø caùc boä v coù ñöôïc nhôø caùch ñaët boä cuûa R vôùi caùc boä NULL cuûa S, neáu khoâng tìm ñöôïc giaù trò töông öùng cuûa thuoäc tính keát noái treân quan heä S. Ví duï 5.4.2.1: Vôùi hai quan heä R vaø S cuøng caùc boä giaù trò cuûa chuùng ñaõ ñöôïc cho trong ví duï 5.4.1, keát quaû cuûa pheùp keát noái traùi cuûa R vaø S laø: 110
  18. R.A = S.A R S = Q (A B C A D E F) a1 b1 1 a1 d1 e1 f1 a2 b2 c2 a2 d2 e2 f2 a3 b3 c3 - - - - a5 b5 c5 - - - - a7 b7 c7 a7 d7 e7 f7 Kyù hieäu daáu tröø (-) trong caùc thuoäc tính cuûa S ñöôïc hieåu laø giaù trò khoâng xaùc ñònh (giaù trò Null). Caùc doøng coù giaù trò thuoäc tính A cuûa R laø a3 vaø a5 khoâng tìm ñöôïc giaù trò cuûa thuoäc tính A töông öùng trong quan heä S, neân phaàn coøn laïi cuûa noù ñöôïc ñeå laø khoâng xaùc ñònh. Qua baûng keát quaû trình baøy treân, chuùng ta thaáy yù nghóa cuûa pheùp toaùn naøy laø nhaèm xaùc ñònh caùc boä giaù trò cuûa quan heä beân traùi nhöng khoâng coù boä giaù trò töông öùng trong quan heä phía beân phaûi. Ví duï 5.4.2.2: Giaû söû chuùng ta theâm moät boä môùi cho baûng ÑÔN-VÒ goàm coù Maõ-ÑV laø 10090, Teân-ñôn-vò laø Hoäi khuyeán noâng Quaän X vaø loaïi hình ñôn vò laø 7. Khi ñoù pheùp keát noái traùi (Left Join) hai quan heä ÑÔN-VÒ vaø LOAÏI-ÑV cho keát quaû laø quan heä coù theå hieän nhö sau: Maõ-ÑV Teân-ñôn-vò Loaïi Loaïi Teân-loaïi-hình 10002 Tröôøng K.thuaät nghieäp vuï maùy tính 3 3 SN hoaøn toaøn 10003 Phoøng quaûn lyù haønh chaùnh 2 2 Haønh chaùnh 10022 Vaên phoønh ñaïi dieän Thanh nieân 2 2 Haønh chaùnh 10070 Ban quaûn lyù voán sinh vieân 5 5 Haïch toaùn ñ.laäp 10071 Löïc löôïng quaûn lyù thò tröôøng 5 5 Haïch toaùn ñ.laäp 10090 Hoäi khuyeán noâng Quaän X 7 Null Null Bôûi vì trong quan heä LOAÏI-ÑV khoâng coù boä naøo coù giaù trò ôû coät Loaïi laø 7, do ñoù ôû doøng cuoái cuøng cuûa quan heä treân, moät boä goàm toaøn 111
  19. giaù trò NULL ôû caû hai coät Loaïi vaø Teân-loaïi-hình ñöôïc ñaët caïnh boä giaù trò môùi ñöôïc boå sung trong theå hieän cuûa quan heä ÑÔN-VÒ. ÖÙng duïng cuûa pheùp keát noái naøy coù theå thaáy roõ trong baøi toaùn quaûn lyù CBVC neâu treân: Tröôùc heát caàn xaùc ñònh nhöõng ñôn vò coù loaïi hình toå chöùc khoâng coù trong danh muïc Loaïi-ÑV. Caâu traû lôøi raát ñôn giaûn: chæ vieäc choïn ra caùc doøng cuûa baûng keát noái coù giaù trò NULL ôû coät Loaïi trong phaàn ñuoâi cuûa boä giaù trò laø NULL. Cuõng trong baøi toaùn quaûn lyù CBVC neâu treân: Theo yeâu caàu quaûn lyù, moãi CBVC coù teân trong danh saùch cuûa ñôn vò phaûi coù moät baûn khai lyù lòch, töùc laø moät boä giaù trò veà lyù lòch chi tieát. Moãi CBVC coù moät maõ soá CBVC ñeå phaân bieät vaø nhaän daïng ñoàng thôøi khoùa cuûa quan heä lyù lòch cuõng laø maõ soá naøy. Coù theå öùng duïng pheùp keát noái traùi ñeå xaùc ñònh nhöõng CBVC naøo coù teân trong danh saùch maø chöa coù lyù lòch trong CSDL. 5.4.3. Pheùp keát noái phaûi (Right Join) Vaãn vôùi caùc quan heä R, S; caùc thuoäc tính A, B; vaø caùc boä giaù trò v, t, u, tNULL, uNULL ñöôïc xaùc ñònh nhö treân. Pheùp keát noái phaûi hai quan heä R vôùi S treân caùc thuoäc tính A vaø B vôùi pheùp so saùnh =, vôùi giaû thieát laø giaù trò coät R[A] coù theå so saùnh töông ñöông ñöôïc vôùi moãi giaù trò cuûa coät S[B], ñöôïc ñònh nghóa laø: A=B R S = { v = (t, u)  (t  R , u  S vaø t.A  u.B) hoaëc (t = tNULL , u  S, vôùi t.B R[A]) } nghóa laø, taát caû caùc boä v coù ñöôïc nhôø caùch ñaët boä giaù trò cuûa R vaø S xeáp caïnh nhau neáu chuùng coù giaù trò gioáng nhau treân 2 thuoäc tính keát 112
  20. noái, vaø caùc boä NULL cuûa R vôùi caùc boä cuûa S, neáu khoâng tìm ñöôïc giaù trò töông öùng cuûa thuoäc tính keát noái treân quan heä R. Ví duï 5.4.3.1: Giaû söû vôùi caùc quan heä R vaø S cuøng caùc boä giaù trò cuûa chuùng ñöôïc xaùc ñònh nhö trong ví duï 5.4.2 neâu treân. Keát quaû cuûa pheùp keát noái phaûi R vôùi S laø quan heä vôùi caùc boä giaù trò sau: R.A = S.A R S = Q (A, B, C, A, D, E, F) a1 b1 1 a1 d1 e1 f1 a2 b2 c2 a2 d2 e2 f2 - - - a4 d4 e4 f4 - - - a6 d6 e6 f6 a7 b7 c7 a7 d7 e7 f7 Kyù hieäu daáu tröø (-) trong caùc thuoäc tính cuûa R ñöôïc hieåu laø giaù trò khoâng xaùc ñònh (giaù trò Null). Caùc doøng coù giaù trò taïi thuoäc tính A cuûa S laø a4 vaø a6 khoâng tìm ñöôïc giaù trò cuûa thuoäc tính A töông öùng trong quan heä R, do ñoù phaàn ñaàu cuûa noù ñöôïc ñeå laø khoâng xaùc ñònh. Qua baûng keát quaû trình baøy treân, chuùng ta thaáy yù nghóa cuûa pheùp toaùn naøy laø nhaèm xaùc ñònh caùc boä giaù trò cuûa quan heä beân phaûi khoâng coù boä giaù trò töông öùng trong quan heä phía beân traùi. Ví duï 5.4.3.2: Giaû söû chuùng ta theâm moät boä môùi cho quan heä LOAÏI_ÑV goàm coù maõ Loaïi laø 6, Teân-loaïi-hình laø Cô quan Ñaûng / Ñoaøn. Khi ñoù pheùp keát noái phaûi (Right Join) hai quan heä ÑÔN-VÒ vaø LOAÏI-ÑV cho keát quaû laø quan heä coù theå hieän nhö sau: 113
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2