Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DESCRIERE
Baza de date prezentata prin acest proiect, furnizeaza informatii legate de aeronavele, echipajul, armamentul si misiunile in care participa un portavion.
PILOT (sub entitate), membru al echipajului care piloteaza aeronave, cheia primara este cod_echipaj MECANIC (sub entitate), membru al echipajului care repara aeronave, cheia primara este cod_echipaj AERONAVA (entitate independenta), reprezinta orice aeronava care se gaseste pe portavion , cheia primara este cod_aeronava AVION (sub entiate) reprezinta aeronavele care sunt avioane, cheia primara este cod_aeronava VANATOARE (sub sub entiate) reprezinta avioanele de vanatoare din cadrul avioanelor de pe portavion, cheia primara este cod_aeronava TRANSPORT (sub sub entiate) reprevinta avioanele de transport din cadrul avioanelor de pe portavion, cheia primara este cod_aeronava ELICOPTER (sub entiate),reprezinta elicopterele din cadrul aeronavelor de pe portavion, cheia primara este cod_aeronava ARMAMENT (entitate dependenta), reprezinta armamentul care poate fi folosit de un avion de vanatoare, cheia primara este cod_armament MISIUNE (entiate independenta), reprezinta orice misiune la care participa aeronavele de pe portavion, cheia primara este cod_misiune
ATRIBUTELE ENTITATILOR
ECHIPAJ cod_echipaj# - caracter(10) codul care identifica un membru al echipajului nume - caracter(20) numele mebrului echipajului prenume - caracter(40) prenumele mebrului echipajului grad - caracter(20) gradul militar al mebrului echipajului functie - caracter(30) functia indeplinita la bordul portavionului PILOT cod_echipaj# - caracter(10) codul care identifica un membru al echipajului ore_de_zbor intreg (4) numarul de ore de zbor corespunzatoare pilotului 2
cod_aeronava# - caracter(10) codul care identifica o aeronava de la bordul portavionului MECANIC cod_exhipaj# - caracter(10) codul care identifica un membru al echipajului specializare - caracter(30) specializarea mecanicului AERONAVA cod_aeronava# - caracter(10) codul care identifica o aeronava de la bordul portavionului denumire - caracter(30) denumirea aeronavei tip - caracter(10) tipul aeronavei (avion, elicopter, etc) greutate - intreg(4) greutatea aeronavei exprimata in tone autonomie - intreg(4) timpul de zbor in cazul unui consum mediu exprimat in ore an_fabricatie - intreg(4) anul fabricatiei AVION cod_aeronava# - caracter(10) codul care identifica o aeronava de la bordul portavionului scop - caracter(10) scopul in care aeronava este folosita (vanatoare,transport,etc) viteza maxima intreg(4) viteza maxima exprimata in km/h VANATOARE cod_aeronava# - caracter(10) codul care identifica o aeronava de la bordul portavionului raza_de_actiune TRANSPORT cod_aeronava# - caracter(10) codul care identifica o aeronava de la bordul portavionului numar_locuri intreg(4) numarul de locuri disponibile pentru transport ELICOPTER cod_aeronava# - caracter(10) codul care identifica o aeronava de la bordul portavionului rol caracter (20) rolul pe care il indeplineste elicopterul numar_locuri intreg(4) numarul de locuri disponibile pentru transport ARMAMENT cod_armament# - caracter(10) codul care identifica un tip de armament de la bordul portavionului adenumire caracter(30) denumirea tipului de arma agreutate intreg(4) greutatea exprimata in kg ascop caracter(20) - scopul in care aceasta arma este utilizata (aer-sol,aer-aer,aer-apa)
MISIUNE cod_misiune# - caracter(10) codul care identifica misiunile pe care trbuie sa le indeplineasca avioanele de la bordul portavionului denumirem caracter(20) - denumirea misiunii data_inceput data calendaristica data calendaristica la care incepe misiunea data_sfarsit - data calendaristica data calendaristica la care se incehie misiunea
DIAGRAMA ENTITATE/RELATIE
ISA
ISA
M(1)
ISA
MECANIC specializare
ISA
viteza maxima
ELICOPTER
ISA
MISIUNE cod misiune denumirem data inceput data sfarsit participa M(1) M(0)
greutate autonomie an fabricatie ARMAMENT cod armament adenumire agreutate ascop foloseste M(1)
SCHEME RELATIONALE
ECHIPAJ(cod_echipaj#,nume,prenume,grad,functie) PILOT(cod_echipaj#,ore_de_zbor,cod_aeronava) MECANIC(cod_exhipaj#,specializare) REPARA(cod_echipaj#,cod_aeronava#) AERONAVA(cod_aeronava#,denumire,tip,greutate,autonomie,an_fabricatie) AVION(cod_aeronava#,scop,viteza maxima) VANATOARE(cod_aeronava#,raza_de_actiune) 4
DIAGRAMA CONCEPTUALA
AERONAVA cod aeronava denumire tip AVION scop PILOT ore zbor piloteaza VANATOARE raza de actiune
functie
MECANIC specializare
ARMAMENT greutate autonomie cod armament an fabricatie adenumire agreutate ascop FOLOSESTE cod aeronava cod armamaent
TABELE
AERONAVA cod_aeronava# A1 A2 A3 A4
greutate 20 15 10 8
autonomie 12 35 8 5
A5 AVION cod_aeronava # A1 A2 A3 A5 VANATOARE cod_aeronava# A1 A2 A3 TRANSPORT cod_aeronava# A5 ELICOPTER cod_aeronava# A4 ECHIPAJ cod_echipaj# E1 E2 E3 E4 E5 E6 PILOT cod_echipaj# E1 E2 E5
50
20
1975
raza_de_actiune 5000 8000 12000 numar_locuri 150 rol atac nume Brown Parry Irwin Cook Berry Muffin ore_de_zbor 1200 800 2000 numar_locuri 150 prenume John James Steve David Ian Eric grad locotenent sergent sergent civil locotenent civil cod_aeronava A1 A2 A4 functia pilot pilot navigator mecanic pilot mecanic
MECANIC cod_echipaj# E4 E6
specializare reparatii motor reparatii tren aterizare data_inceput data_sfarsit 10.02.2006 15.05.2008 21.12.2005 13.01.2006 6
M3 M4 ARMAMENT cod_armament# BB1 BB2 BB3 FOLOSESTE cod_aeronava # A1 A2 A2 A3 A4 PARTICIPA cod aeronava# M1 M3 M2 M1 M4 M2 M4 M1 REPARA cod_echipaj# E4 E4 E4 E6 E6 E6 E6 E6 E4 E4
Recunoastere spatiu aerian Chinez Recuperare trupe Somalia adenumire GBU-15 SideWinder Maverick cod_armamaent# BB3 BB1 BB3 BB2 BB2 cod_aeronava# A1 A2 A2 A3 A3 A4 A4 A5 cod_aeronava# A1 A2 A3 A4 A5 A1 A2 A3 A4 A5 agreutate 500 10 14
04.01.2006 08.01.2006
OPERATORI
1) PROJECT obtine o lista cu denumirea, tipul, greutatea, si anul de fabricatie al aeronavelor. AERONAVA cod_aeronava# denumire tip greutate autonomie an fabricatie 7
A1 A2 A3 A4 A5
20 15 10 8 50
12 35 8 5 20
Proiectie in algebra relationala: Rezultat = PROJECT(AERONAVA,denumirea,tip,greutate,an_fabricatie) Proiectie in SQL(cu dubluri): SELECT denumirea,tip,greutate,an_fabricatie FROM aeronava; Proiectie in SQL(fara dubluri): SELECT DISTINCT denumirea,tip,greutate,an_fabricatie FROM aeronava; Rezultatul: denumire F/A 18 F 35 Sea Harrier AH-64 tip avion avion avion elicopter greutate 20 15 10 8 an fabricatie 1978 2003 1992 1987
2) SELECT obtine o lista cu armamentul care are o greutate mai mica de 400 de kilograme ARMAMENT cod_armament# BB1 BB2 BB3 adenumire GBU-15 SideWinder Maverick agreutate 500 10 14 ascop aer-sol aer-aer aer-sol
Selectie in algebra relationala: Rezultat =SELECT(ARMAMENT,agreutate<400) Selectie in SQL SELECT * FROM armament WHERE agreutate<400; Rezultatul: cod_armament# adenumire BB2 SideWinder BB3 Maverick agreutate 10 14 ascop aer-aer aer-sol
3) UNION obtine lista echipamemntelor de lupta (avioane si armament) de pe portavion AERONAVA cod_aeronava# A1 A2 A3 adenumire F/A 18 F 35 Sea Harrier tip avion avion avion greutate 20 15 10 autonomie 12 35 8 an fabricatie 1978 2003 1992 8
A4 A5
8 50 agreutate 500 10 14
1987 1975
Reuniune in algebra relationala: R=PROJECT(AERONAVA,denumire); S=PROJECT(ARMAMENT,adenumire); Rezultat=UNION(R,S) Reuniune in SQL: SELECT denumire FROM aeronava UNION SELECT adenumire FROM armamaent; Rezultat: denumire F/A 18 F 35 Sea Harrier AH-64 GBU-15 SideWinder Maverick 4) DIFFERENCE obtine o lista cu membrii echipajului care au gradul de sergent dar nu sunt piloti ECHIPAJ cod_echipaj# E1 E2 E3 E4 E5 nume Brown Parry Irwin Cook Berry prenume John James Dan David Ian grad locotenent sergent sergent civil locotenent functia pilot pilot navigator mecanic pilot
Diferenta in algebra relationala: R=PROJECT(SELECT(ECHIPAJ, grad=sergent),cod_echipaj,nume,prenume,grad,funtia); S=PROJECT(SELECT(ECHIPAJ, funtia=pilot),cod_echipaj,nume,prenume,grad,funtia); Rezultat = DIFFERENCE(R, S) Diferenta in SQL: SELECT * FROM echipaj WHERE grad=sergent MINUS 9
SELECT * FROM echipaj WHERE functia=pilot Rezultat: cod_echipaj# E3 nume Irwin prenume Dan grad sergent functia navigator
5) INTERSECT obtine o lista cu codurile sergentilor care sunt piloti si au mai mult de 1500 de ore de zbor ECHIPAJ cod_echipaj# E1 E2 E3 E4 E5 nume Brown Parry Irwin Cook Berry prenume John James Dan David Ian ore_de_zbor 1200 800 2000 grad locotenent sergent sergent civil locotenent cod_aeronava A1 A2 A4 functia pilot pilot navigator mecanic pilot
PILOT cod_echipaj# E1 E2 E5
Intersectie in algebra relationala: R=PROJECT(SELECT(ECHIPAJ,grad=sergent),cod_echipaj); S=PROJECT(SELECT(PILOT,ore_de_zbor>1500),cod_echipaj); Rezultat= INTERSECT(R,S) Intersectie in SQL: SELECT cod_echipaj FROM echipaj WHERE grad=sergent INTERSECT SELECT cod_echipaj FROM pilot WHERE ore_de_zbor>1500; Rezultat: cod_echipaj# E5
6) PRODUCT obtine o lista cu toate posibilitatile de participare la misiuni a aeronavelor de pe portavion AERONAVA cod_aeronava# denumire A1 F/A 18 tip avion greutate 20 autonomie 12 an fabricatie 1978 10
A2 A3 A4 A5
15 10 8 50
35 8 5 20
denumirem Furtuna in desert 2 Exercitiu NATO Recunoastere spatiu aerian Chinez Recuperare trupe Somalia
Produs cartezian in algebra relationala: R=PROJECT(AERONAVA,cod_aeronava,denumire,tip); S=PROJECT(MISIUNE,cod_misiune,denumirem); Rezultat=PRODUCT(R,S) Produs cartezian in SQL: SELECT cod_aeronava,denumire,tip,cod_misiune,denumirem FROM aeronava,misiune; Rezultat: cod_aeronava A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3 A4 A4 A4 A4 A5 A5 A5 A5 denumire F/A 18 F/A 18 F/A 18 F/A 18 F 35 F 35 F 35 F 35 Sea Harrier Sea Harrier Sea Harrier Sea Harrier AH-64 AH-64 AH-64 AH-64 A 101 A 101 A 101 A 101 tip avion avion avion avion avion avion avion avion avion avion avion avion elicpoter elicpoter elicpoter elicpoter avion avion avion avion cod_misiune M1 M2 M3 M4 M1 M2 M3 M4 M1 M2 M3 M4 M1 M2 M3 M4 M1 M2 M3 M4 denumirem Furtuna in desert 2 Exercitiu NATO Recunoastere spatiu aerian Chinez Recuperare trupe Somalia Furtuna in desert 2 Exercitiu NATO Recunoastere spatiu aerian Chinez Recuperare trupe Somalia Furtuna in desert 2 Exercitiu NATO Recunoastere spatiu aerian Chinez Recuperare trupe Somalia Furtuna in desert 2 Exercitiu NATO Recunoastere spatiu aerian Chinez Recuperare trupe Somalia Furtuna in desert 2 Exercitiu NATO Recunoastere spatiu aerian Chinez Recuperare trupe Somalia
7) DIVISION obtine codul pilotilor care zboara pe avioane fabricate dupa 1990 AERONAVA cod_aeronava# denumire A1 F/A 18 A2 F 35 tip avion avion greutate 20 15 autonomie 12 35 an fabricatie 1978 2003 11
A3 A4 A5
10 8 50
8 5 20 cod_aeronava A1 A2 A4
Diviziune in algebra relationala: R= PROJECT(PILOT,cod_echipaj,cod_aeronava); S= PROJECT(SELECT(AERONAVA,an_fabricatie>1990),cod_aeronava); Rezultat=DIVISION(R,S) Diviziune in SQL: SELECT UNIQUE cod_ehipaj FROM pilot pp WHERE NOT EXISTS (SELECT * FROM aeronava aa WHERE aeronava.an_fabricatie>1990 AND NOT EXISTS (SELECT * FROM pilot ppp WHERE aa.cod_aeronava=ppp.cod_aeronava AND pp.cod_echipaj=ppp.cod_echipaj)); Rezultat: cod_echipaj# E2 8) NATURAL JOIN obtine informatia completa despre piloti (nume, prenume, grad, ore de zbor, cod aeronava) ECHIPAJ cod_echipaj# E1 E2 E3 E4 E5 nume Brown Parry Irwin Cook Berry prenume John James Dan David Ian ore_de_zbor 1200 800 2000 grad locotenent sergent sergent civil locotenent cod_aeronava A1 A2 A4 functia pilot pilot navigator mecanic pilot
PILOT cod_echipaj# E1 E2 E5
Compunere naturala in algebra relationala: R=JOIN(ECHIPAJ,PILOT) Rezultat=PROJECT(R,nume,prenume,grad,ore_de_zbor,cod_aeronava) Compunere naturala in SQL: SELECT nume,prenume,grad,ore_de_zbor,cod_aeronava FROM echipaj a,pilot b WHERE a.cod_echipaj=b.cod_echipaj; Rezultat: 12
cod_aeronava A1 A2 A4
9) -JOIN obtine informatia despre aeronave si armamentul acestora cu conditia ca greutatea aeronavei sa fie de mai mare decat cea a armamentului inmultita cu 45 AERONAVA cod_aeronava# A1 A2 A3 A4 A5 denumire F/A 18 F 35 Sea Harrier AH-64 A 101 tip avion avion avion elicpoter avion denumire GBU-15 SideWinder Maverick greutate 20 15 10 8 50 agreutate 500 10 14 cod_armamaent# BB3 BB1 BB3 BB2 BB2 autonomie 12 35 8 5 20 ascop aer-sol aer-aer aer-sol an fabricatie 1978 2003 1992 1987 1975
FOLOSESTE cod_aeronava # A1 A2 A2 A3 A4
Compunere in algebra relationala: R1=JOIN(ARMAMENT,FOLOSESTE); Rezultat=JOIN(R1,AERONAVA,AERONAVA.greutate*1000>ARMAMENT.agretuate*45) Compunere in SQL: SELECT * FROM (SELECT * FROM armamaent a,foloseste b WHERE a.cod_armament=b.cod_armament) c,aeronava d WHERE c.greutate*45<d.greutate * 1000 AND c.cod_aeronava=d_cod_aeronava;
Rezultat: cod_ae denumi ronava re A1 F/A 18 tip avion greu tate 20 autono mie 12 an fabricat ie 1978 cod_ar mame nt BB3 denumire Maverick greutat e 14 ascop aer-sol 13
A2 A3 A4
15 10 8
35 8 5
500 10 10
10) SEMI-JOIN obtine informatia despre pilotul care zboara intr-o aeronava F/A 18 AERONAVA cod_aeronava# A1 A2 A3 A4 A5 denumire F/A 18 F 35 Sea Harrier AH-64 A 101 tip avion avion avion elicpoter avion ore_de_zbor 1200 800 2000 greutate 20 15 10 8 50 autonomie 12 35 8 5 20 cod_aeronava A1 A2 A4 an_fabricatie 1978 2003 1992 1987 1975
PILOT cod_echipaj# E1 E2 E5
Semi compunere in algebra relationala: R1=SELECT(AERONAVA,denumire=F/A 18); R2=JOIN(R1,PILOT); Rezultat=PROJECT(R2,cod_echipaj,ore_de_zbor,cod_aeronava) Semi compunere in SQL: SELECT cod_echipaj,ore_de_zbor,cod_aeronava FROM aeronava a,pilot p WHERE a.denumire=F/A 18 AND a.cod_aeronava=p.cod_aeronava; Rezultat: cod_echipaj E1 ore_de_zbor 1200 cod_aeronava A1
11) OUTER JOIN obtine o lista cu denumirea aeronavelor si viteza maxima (acolo unde este cazul) AERONAVA cod_aeronava# A1 A2 A3 A4 A5 denumire F/A 18 F 35 Sea Harrier AH-64 A 101 tip avion avion avion elicpoter avion scop vanatoare vanatoare vanatoare greutate 20 15 10 8 50 autonomie 12 35 8 5 20 an_fabricatie 1978 2003 1992 1987 1975
AVION cod_aeronava # A1 A2 A3
A5
transport
800
Semi compunere in algebra relationala: R1=OUTERJOIN(AERONAVA,AVION); Rezultat=PROJECT(R1,denumire,viteza_maxima) Semi compunere in SQL: SELECT denumire,viteza_maxima FROM aeronava a,avion b WHERE a.cod_aeronava=b.cod_aeronava(+); Rezultat: denumire F/A 18 F 35 Sea Harrier AH-64 A 101 viteza_maxima 1500 1600 900 NULL 800
CERERI
1) Sa se gaseasca denumirea misiunii la care participa un avion de vanatoare mai nou de anul 1987, cu un pilot cu mai mult de 1000 de ore de experienta care are gradul de sergent. De asemenea avionul foloseste ca armament bombe de tipul GBU 15 cu greutatea de 400 kg. Forma algebra relationala R1=SELECT(AERONAVA,an_fabricatie>1987); R2=JOIN(R1,VANATOARE); R3=PROJECT(R2,cod_aeronava); R4=SELECT(PILOT,ore_de_zbor>1000); R5=SELECT(ECHIPAJ,grad=sergent); R6=JOIN(R4,45); R7=PROJECT(R6,cod_aeronava); R8=INTERSECT(R3,R7); R9=SELECT(ARMAMENT,adenumire=GBU 15 AND agreutate=400); R10=JOIN(R9,FOLOSESTE); R11=PROJECT(R10,cod_aeronava); R12=INTERSECT(R8,R11); R13=JOIN(PARTICIPA,R12); R14=PROJECT(R13,cod_misiune); R15=JOIN(MISIUNE,R13); Rezultat=PROJECT(R15,denumirem)
2) Sa se gaseasca numele mecanicului civil care repara un elicopter de recunoastere care participa la misiunea Furtuna in desert 2. Forma grafica
15
Rezultat
nume,prenume
ECHIPAJ
REPARA T
cod_aerona va
cod_aerona va
PARTICIPA T
ELICOPTER
3) Sa se afiseze numele avioanelor mai noi de 1990 care pot transporta 50 de persoane si participa la misiunea Recuperare de trupe Somalia. Forma matematica
FORME NORMALE
16
scop=recun oastere
cod_misiu ne
MISIUNE
raza de actiune
cod_armament
Anomalii: AERONAVA cod_aeronava A1 A2 A3 A5 denumire F/A 18 F 35 F/A 18 A 101 tip avion avion avion avion greutate 20 15 20 50 autonomie 12 35 12 20 an fabricatie 1978 2003 1979 1975
Pornim de la constrangerea ca toate aeronavele care poarta aceeasi denumire au aceeeasi greutate si aceeasi autonomie. Redundanta logica: cuplul (F/A 18,avion20,12) apare de doua ori. Anomalie la insertie: pentru a adauga un nou avion F/A 18 este nevoie de definirea unei noi chei primare. Anomalie la stergere: daca se sterge inregistrarea cu cod_aeronava A2 atunci se pierde informatia ca avionul F 35 are o autonomie de 15 ore. Anomalie la modificare: modificarea autonomiei pentru un avion F/A 18, va duce la necesitatea modificarii autonomiei pentru toate celelalte intregistrari care contin avioane F/A 18 (in caz contrar se va incalca constrangerea). Problema reconexiunii: Fie schemele relationale: R1=PROJECT(AERONAVA,cod_aeronava,denumire,tip,greutate) R2=PROJECT(AERONAVA,denumire,autonomie,an_fabricatie) 17
AERONAVA1=JOIN(R1,R2) Se observa ca schema AERONAVA1 este diferita de schema aeronava ( apar tupluri noi, cum ar fi: A3, F/A 18, avion, 20, 12, 1978) Forme Normale FORMA NORMALA (FN1) Fie tabelul: cod_aeronava# A1 A2 A3 cod_ pilot# P1,P2,P3 P4 P5,P6,P7
Modelul atomic va fi : cod_client# cod_pilot# A1 P1 A1 P2 A1 P3 A2 P4 A3 P5 A3 P6 A3 P7 FORMA NORMALA 2 (FN2): Fie tabelul: cod_echipaj# E1 E2 E5 E5 ore_de_zbor 1200 800 2000 2000 grad soldat sergent capitan locotenent cod_aeronava# A1 A2 A4 A3
pentru a ajunge la FN2 se va transforma in: R1: cod_echipaj# E1 E2 E5 R2: cod_echipaj# E1 E2 E5 E5 ore_de_zbor 1200 800 2000 grad soldat sergent capitan locotenent cod_aeronava# A1 A2 A4 A3
18