Krystian B.

Krystian B. poszukuję...

Temat: Prośba o sprawdzenie i ewentualną podpowiedź zadań z SQL

Witam! Prośbę mam do wszystkich ...zmieniłem uczelnie i mam do zaliczenia różnice programowe z baz danych. Przypuszczam, ze pytania nie są zbyt trudne, ale dla kogoś kto nawet wykładów nie mógł dostać bo wykładowca już zajęć tych nie prowadzi to już może być problem i korzystam jedynie z netu.

Ale do rzeczy:

Mam kilka przykładowych zadań, proszę nie o gotowce ale o sprawdzenie i ewentualne poprawki lub nakierowanie mnie na właściwy tor :):

1. Dana jest tabela
kasety (idKasety, Tytuł, idKategorii).
Uzupełnij poniższy skrypt SQL tak, aby prezentował dla każdej kategorii liczbę sztuk kaset:

select idKategorii, count (idKasety) from kasety

Odp:

select idKategorii, count (idKasety) from kasety group by idKategorii

2. Dane są tabele r1(a,b) i r2(a,b) oraz (select a,b from r1) intersect (select a,b from r2).

Zastąp dany skrypt równoważnym, w którym operacja intersect jest realizowana za pomocą predykatu exist.

Odp. select a,b from r1 where exists (select a,b from r2)

daję sobie spokój z zadaniem poniżej ponieważ samodzielnie w 1 tydzien nie nauczę się na pewno optymalizować wyrażeń ponieważ dobrze byłoby gdybym nauczył się podstawowe formułować ;) i tutaj proszę o pomoc.


Obrazek


mam jeszcze ok. 5 innych pytań ale z nimi sobie poradziłem a tych nie jestem pewny jeszcze.

Z góry dziękuję za pomoc i przepraszam, jeśli kogoś tego typu posty denerwują.
Grzegorz D.

Grzegorz D. PL/SQL Developer

Temat: Prośba o sprawdzenie i ewentualną podpowiedź zadań z SQL

Co do optymalizacji to w zadaniu robisz tak :
1.złączenie relacji R1 i R2 po atrybucie c
2.selekcja odpowiednich wierszy
3.projekcja odpowiednich kolumn

złączenie jest jednak operacją najbardziej kosztowną, dlatego trzeba je wykonywać na tabelach liczących możliwie jak najmniej krotek.

Ten sam wynik uzyskasz więc jeżeli :
1. najpierw nałożysz warunki selekcji na atrybut a i b - to ci zmniejszy liczbę krotek w relacji R1
2. dopiero teraz złączysz relacje R1 i R2 - relacja R1 posiada już mniejszą ilość krotek, więc cała operacja przebiegnie szybciej
3. wykonujesz projekcje (tu nic nie można chyba zoptymalizować, bo wybierasz atrybuty a,b,d , a złączenie robisz po c...

Mam nadzieję, że to co napisałem jest dobrze, jak nie to może ktoś poprawi ;)

konto usunięte

Temat: Prośba o sprawdzenie i ewentualną podpowiedź zadań z SQL

Ad.2

select a,b from r1 where exists (select 1 from r2 where r2.a=r1.a and r2.b=r1.b)

Rozwiązania bez exists:

select r1.a,r1.b from r1, r2
where r2.a=r1.a and r2.b=r1.b

lub ANSI join (milsze dla bazy):

select r1.a,r1.b from r1
join r2 on r2.a=r1.a and r2.b=r1.b

Tu możesz potrenować bez serwera i bazy:
http://sqlzoo.net/3b.htmPiotr Likus edytował(a) ten post dnia 24.05.09 o godzinie 11:57
Krystian B.

Krystian B. poszukuję...

Temat: Prośba o sprawdzenie i ewentualną podpowiedź zadań z SQL

No nie, poległem na czym innym ...wstyd - zależności fukncyjne.

Proszę więc o wytłumaczenie co jest źle?
Zad. Utworzyć schemat będący w 2 PN ale nie w 3 PN na podstawie zależn. fukncyjnych

idKategorii → NazwaKategorii
idKasety → idKategorii
idKasety → Tytul
idKasety → CzasProjekcji
idKlienta, idKasety, Data → Zapłacono

Moja odp był następująca:

Kategoria(idKategorii, NazwaKategorii)
Kaseta(idKasety, idKategorii, Tytul, CzasProjekcji)
Zaplacono(diKlienta, idKasety, data, zaplacono)

Bardzo proszę o odp. gdzie robie blad??
Agnieszka Celejewska

Agnieszka Celejewska Analityk Biznesowy

Temat: Prośba o sprawdzenie i ewentualną podpowiedź zadań z SQL

do ćwiczen polecam ta stronke:

http://www.sql-ex.ru/learn_exercises.php#answer_ref



Wyślij zaproszenie do