Sunteți pe pagina 1din 3

Proiect Baze de Date – Radu Bratan

TeamTransfer
Aplicatie de gestionare a transferurilor si evidenta meciurilor din campionat

Pentru a urmari mai usor evolutiile echipelor si jucatorilor din Premier League, oferim ca solutie o
aplicatie construita in Microsoft Access 2010. Aplicatia foloseste limbajul Standard Query Language
(SQL) pentru a extrage date si a le prezenta in forma necesara.

Avem la dispozitie informatii despre jucatori, echipe, transferuri, meciuri disputate si clasamentul
echipelor in cadrul Premier League.

Informatii disponibile
Din sursele disponibile preluam urmatoarele informatii:

- Numele jucatorilor, data si locul nasterii, salariul, numarul de goluri inscrise, numarul de
meciuri jucate, echipa la care activeaza;
- Numele echipelor
- Datele meciurilor, rezultatele, echipele participante, cotele meciurilor
- Jucatorii transferati, echipele intre care s-au transferat, data si suma tranzactionata,
salariu acumulat
- Mentiuni diverse incidente (accidentari, eliminari, …)

Reguli de gestiune
1. Un jucator activeaza la o echipa, o echipa are mai multi jucatori
2. Un jucator poate fi implicat in mai multe incidente, un incident poate implica mai multi
jucatori
3. Un transfer implica doua echipe, o echipa poate efectua mai multe transferuri
4. Un meci implica doua echipe, o echipa poate juca mai multe meciuri
5. La un transfer, un jucator primeste 35% din suma tranzactionata, restul revenind clubului

Modelul relational al bazei de date. Normalizare.


DD (codJucator, numeJucator, dataNasterii, loculNasterii, salariu, salariuAcumulat, goluri,
meciuriJucate, codEchipa, numeEchipa, codMeci, codEchipa1, codEchipa2, scor1, scor2, tipMeci,
cotaMeci, dataMeci, codTransfer, codEchipa1, codEchipa2, sumaTranzactie, dataTransfer,
codIncident, descriereIncident)

Stabilirea dependentelor functionale


Cod Jucator – determina numeJucator, dataNasterii, loculNasterii, salariu, salariuAcumulat,
goluriInscrise, meciuriJucate
Cod Echipa – determina numeEchipa
Proiect Baze de Date – Radu Bratan

Cod Meci – determina codEchipa1, codEchipa2, scor1, scor2, tipMeci, cotaMeci, dataMeci
Cod Transfer – determina codJucator, codEchipa1, codEchipa2, sumaTranzactie, dataTransfer
Cod Incident – determina descriereIncident

Atribute izolate
CodJucator, CodEchipa, CodMeci, CodTransfer, CodIncident

Stabilirea cheilor primare


CodJucator, CodEchipa, CodMeci, CodTransfer, CodIncident

Formarea tabelelor, identificarea cheilor primare, identificarea cheilor externe


Jucatori (CodJucator, NumeJucator, DataNasterii, LoculNasterii, salariu, goluriInscrse, meciuriJucate)
Echipe (CodEchipa, NumeEchipa)
Meciuri (CodEchipa1, CodEchipa2, dataMeci, Scor1, Scor2, tipMeci)
Transferuri (CodTransfer, CodJucator, CodEchipa1, CodEchipa2, SumaTranzactie, DataTransfer)
Incidente (CodIncident, DescriereIncident)

Interogari implementate
1. Lista jucatorilor unei echipe

SELECT NumeJucator, NumeEchipa


FROM Jucatori AS j INNER JOIN Echipe AS e ON j.codEchipa = e.codEchipa;

2. Topul celor mai frecvente orase natale ale jucatorilor

SELECT loculNasterii, count(loculNasterii)


FROM jucatori
GROUP BY loculnasterii;

3. Jucatorii cu cele mai multe incidente inregistrate

SELECT NumeJucator, NumeEchipa, i.DescriereIncident, DataIncident FROM (Jucatori AS j


INNER JOIN Echipe AS e ON j.codEchipa = e.codEchipa) INNER JOIN Incidente AS i ON
i.codJucator = j.codJucator ORDER BY numeJucator;

4. Anii cu cele mai multe transferuri

SELECT YEAR(dataTransfer) as Anul, count(dataTransfer) as TransferuriEfectuate FROM


transferuri group by Year(dataTransfer) order by 2 desc;
Proiect Baze de Date – Radu Bratan

5. Media de varsta pe echipe


SELECT e.numeEchipa, int(avg(year(now()) - year(j.dataNasterii))) AS mediaDeVarsta
FROM jucatori AS J INNER JOIN echipe AS e ON e.codEchipa = j.codEchipa
GROUP BY e.numeEchipa;

 Observatie: year(now()) - year(j.dataNasterii) calculeaza varsta;


 avg(…) calculeaza media din grupul respectiv ( din echipa deoarece gruparea se face
dupa numele echipei );
 apoi int(…) transforma numarul cu virgula in intreg.

6. Jucatorii cei mai infideli echipelor (cu cele mai multe transferuri )

SELECT j.NumeJucator, count(j.codJucator) AS Transferari


FROM Jucatori AS J INNER JOIN transferuri AS t ON t.codJucator = j.codJucator
GROUP BY j.numeJucator, j.codJucator ORDER BY 2 desc;

7. Salariul mediu pe echipe

SELECT Avg(j.salariu) AS salariuMediu, e.numeEchipa


FROM Jucatori AS j INNER JOIN Echipe AS e ON j.codEchipa = e.codEchipa
GROUP BY e.numeEchipa, e.codEchipa;

8. Totalul cheltuielilor de transfer per echipa

SELECT sum(t.sumaTranzactie) AS totalPlatit, e.numeEchipa


FROM Echipe AS e INNER JOIN transferuri AS t ON e.codEchipa = t.codEchipa1
GROUP BY t.codEchipa1, e.numeEchipa
ORDER BY 1 DESC;

9. Numarul total de victorii in deplasare per echipa

SELECT count(m.codMeci) AS VictoriiDeplasare, e.numeEchipa


FROM Meciuri AS m INNER JOIN echipe AS e ON e.codEchipa = m.codEchipa1
WHERE m.scor1 > m.scor2
GROUP BY e.codEchipa, e.numeEchipa
ORDER BY 1 DESC;

10. Banii obtinuti de jucatori din transferurile lor

SELECT numeJucator, 0.35*SUM(sumaTranzactie)


FROM transferuri AS t INNER JOIN jucatori AS j ON t.codJucator = j.codJucator
GROUP BY j.numeJucator
ORDER BY 2 DESC;

S-ar putea să vă placă și