Forum I Roku Informatyki UW

Rozwiązania zadań z egzaminów z poprzednich lat

Page 1 of 2 1, 2  Next

Go down

Rozwiązania zadań z egzaminów z poprzednich lat

Post by k1391 on Wed Feb 01, 2012 12:22 am

Proponuję, żebyśmy wspólnymi siłami spróbowali rozwiązać kilka zadań z egzaminów. Sporo egzaminów jest w materiałach na II rok wrzuconych przez Chmiela. Proponuję zacząć od tych najnowszych. Ja póki co zacząłem robić egzamin 2011_1 i wrzucam rozwiązanie zadania 3 (oczywiście nie gwarantuję jego poprawności Wink ).

Klucz: A_1
Pokrycie minimalne:
A_1 -> A_2
A_2 -> A_3
...
A_n-1 -> A_n
Zatem ostateczne relacje w 3NF:
A_1 A_2 (A_1 -> A_2)
A_1 A_2 A_3 (A_2 -> A_3)
A_1 A_3 A_4 (A_3 -> A_4)
...
A_1 A_n-1 A_n (A_n-1 -> A_n)

EDIT:
Właśnie Paweł mi uświadomił, że te dodatkowe kolumny A_1 są bez sensu, także dobry wynik to chyba:
A_1 A_2 (A_1 -> A_2)
...
A_n-1 A_n (A_n-1 -> A_n)


Last edited by k1391 on Thu Feb 02, 2012 12:17 am; edited 1 time in total

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Kylo_EL on Wed Feb 01, 2012 12:42 am


Kylo_EL

Liczba postów : 31
Join date : 2010-11-16

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by WB on Wed Feb 01, 2012 7:53 pm

Będą transakcje na egzaminie?

WB

Liczba postów : 11
Join date : 2010-11-04

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by k1391 on Wed Feb 01, 2012 8:12 pm

Z tego co zrozumiałem na ostatnim wykładzie transakcji ma nie być.

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Heniek on Wed Feb 01, 2012 8:17 pm

Na egzaminie nie będzie transakcji, nie można też mieć notatek

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by kutino on Wed Feb 01, 2012 9:18 pm

drogie Panie! Czy ocena z ćwiczeń przechodzi na drugi termin?

kutino

Liczba postów : 38
Join date : 2010-11-08

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by k1391 on Wed Feb 01, 2012 11:28 pm

Mam pytanie co do zad5 z egzaminu 2011_1. Tam jest pytanie o te 8 przesiadek. W linku Kylo_EL jest rozwiązanie dla dwóch przesiadek i można to chyba brzydko przerobić na 8, i tu właśnie pojawia się moje pytanie: ktoś ma pomysł jak to zrobić inaczej?

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Krzyszcz on Wed Feb 01, 2012 11:48 pm

Czy ktoś rozumie zależności wielowartościowe..? Intuicja jest taka, że wiemy, że jeśli X, to Y przyjmie jedną z wartości z jakiegoś określonego zbioru wartości (a może, jak wielokolumnowe Y, to dla X-a muszą wystąpić wszystkie kombinacje kolumn Y?). W slajdach jest powiedziane, że jeśli X->->Y w tabeli XYZ, to nie ma bezpośredniej zależności między Y i Z. Dlaczego?

Krzyszcz

Liczba postów : 46
Join date : 2010-11-22

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Heniek on Wed Feb 01, 2012 11:54 pm

Trzeba zrobić rekurencyjne zapytanie, użyj with recursive

Mógłby ktoś podać jaka jest optymalna strategia wykonania zapytania w zadaniu 3 z egzaminu 2011_1

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by saephir on Thu Feb 02, 2012 12:58 pm

Używamy rekurencyjnego zapytania i ograniczamy głębokość rekursji przez LEVEL <= 9

(EDIT: jednak 9, bo 8 przejść od 1 daje 9'tkę Razz)
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Heniek on Thu Feb 02, 2012 2:57 pm

Ja przyjąłem, że na początku mamy 0 przesiadek. Więc jest 8

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by WB on Thu Feb 02, 2012 3:19 pm

SELECT * FROM Emp
WHERE mgr IN (SELECT empno FROM Emp WHERE Sal > 1000);

zapisz w algebrze relacji

wiecie jak to zrobić? Mój pomysł jest taki by to przepisać:

SELECT e.* FROM Emp e, Emp d
WHERE e.mgr = d.empno AND d.sal > 1000;

i teraz to zapisać do alg.

Jest OK?

WB

Liczba postów : 11
Join date : 2010-11-04

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by k1391 on Thu Feb 02, 2012 3:39 pm

Macie pomysł na zapytanie do zadania 1 z egzaminu 2011? Nie wydaje ono się zbytnio skomplikowane, ale jakoś mam problem wymyślić coś działającego.

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by saephir on Thu Feb 02, 2012 4:02 pm

SELECT klienci FROM(
SELECT zam FROM
(SELECT zam, COUNT(*) AS ile FROM Pozycje P1 GROUP BY zam),
(SELECT zam, COUNT(*) AS ile2 FROM Pozycje P1
WHERE EXISTS(SELECT * FROM Pozycje P2 WHERE P1.produkt = P2.produkt AND P1.ilosc < P2.ilosc) GROUP BY zam)
WHERE ile = ile2) INNER JOIN Zamowienia ON Zamowienia.zam = zam;

Idea jest taka:
a) zliczamy pozycje dla każdego zamówienia
b) zliczamy "dobre pozycje" - tzn. że istnieje sobie inna pozycja o większej ilości danego produktu
c) porównujemy te wartości i zwracamy tylko te krotki, dla których ile = ile2
d) złączamy lewostronnie z zamówieniami.


Last edited by saephir on Thu Feb 02, 2012 4:04 pm; edited 2 times in total
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by k1391 on Thu Feb 02, 2012 4:03 pm

OK, wielkie dzięki

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Gricha on Thu Feb 02, 2012 4:56 pm

Jak zrobić zadanie drugie z 2011_1? W szczególności jak policzyć operacje?
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by saephir on Thu Feb 02, 2012 5:06 pm

Szybka i prosta metoda na zadanie 2011/5 (bez RECURSIVE WITH):

... EXISTS(SELECT miejsceA, miejsceB, dist, LEVEL
FROM Pociagi
WHERE LEVEL <= 9
START WITH miejsceA = 'Warszawa'
CONNECT BY NOCYCLE PRIOR miejsceB = miejsceA)
WHERE miejsceB = 'Gdynia');


Wynikiem zapytania są wszystkie możliwe odcinki końcowe przed Gdynią. NOCYCLE jest potrzebne, żebyśmy nie jeździli w kółko. Jazda bezpośrednia to 0 przesiadek, 2 odcinki to 1 przesiadka, itd... więc dozwolona jest jazda 9 odcinkami, jako że wtedy robimy 8 przesiadek.

P.S. Nazewnictwo to mój freestyle, uruchomiłem to u siebie na localhoście (Oracle 10g).
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by magdov on Thu Feb 02, 2012 6:30 pm

A mógłby ktoś podać rozwiązanie z użyciem with recursive? Bo niezbyt czaję, jak to się robi...

magdov

Liczba postów : 37
Join date : 2010-10-12
Age : 27

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Potek on Thu Feb 02, 2012 6:58 pm

Ja stworzyłem coś takiego, ale nie wiem czy na 100% jest to poprawne

Code:
WITH RECURSIVE Stacje(stacjaA, stacjaB, dl, LEVEL)
AS (
  SELECT stacjaA, stacjaB, dl, 0 FROM odcinki
  UNION ALL
  SELECT stacjaB, stacjaA, dl, 0 FROM odcinki
  UNION ALL
  SELECT o1.stacjaA, o2.stacjaB, o1.dl + o2.dl, o2.LEVEL + 1
  FROM odcinki AS o1, stacje AS o2
  WHERE o1.stacjaB = o2.stacjaA  AND o2.LEVEL < 8
)
SELECT MIN(Stacje.dl) FROM Stacje WHERE stacjaA = 'WARSZAWA' AND stacjaB = 'GDYNIA';

Potek

Liczba postów : 7
Join date : 2010-10-12
Age : 27

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by magdov on Thu Feb 02, 2012 8:36 pm

Dzięki wielkie.

Przyłączam się do pytania, jak zrobić 3 z zeszłorocznego egzaminu.

I jeszcze jedno dotyczące algebry relacji:
Jak zapisać w algebrze relacji zapytanie:
SELECT o.Pesel FROM Osoby o WHERE NOT EXISTS (SELECT 6+7 FROM TELEFONY WHERE o.PESEL = PESEL)

Generalnie mamy tabelę Osoby, w której są standardowe dane i tabelę Telefony, w której jest pesel osoby, numer telefonu i rodzaj abonamentu - zadanie z egzaminu z paczki Chmiela (egzaminX2.jpeg)

magdov

Liczba postów : 37
Join date : 2010-10-12
Age : 27

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by rathma on Thu Feb 02, 2012 8:38 pm

Ja zrobiłem to tak:

ro_osoba(klient)(Pi_{PESEL}(Osoby) - Pi_{PESEL}(Osoby |X|_osoba(PESEL)=telefon(PESEL) Telefony))

gdzie osoba i telefon to krotki, osoba E Osoby, telefon E Telefony.

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Potek on Thu Feb 02, 2012 9:24 pm

ro_osoba(klient)(Pi_{PESEL}(Osoby) - Pi_{PESEL}(Osoby |X|_osoba(PESEL)=telefon(PESEL) Telefony))
$$ \rho_{osoba(klient)} \left \{ \pi_{PESEL} (Osoby) - \pi_{PESEL}( Osoby \bowtie_{osoba(PESEL) = telefon(PESEL)} Telefony ) \right \} $$
Very Happy

Potek

Liczba postów : 7
Join date : 2010-10-12
Age : 27

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by rathma on Thu Feb 02, 2012 9:31 pm

No nie przesadzaj - chyba każdy może sobie to sam sparsować, zamiast zrzucać robotę na przeglądarkę... (btw to na mojej przeglądarce LaTeX nie działa na tym forum).

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by pawel14 on Thu Feb 02, 2012 9:39 pm

A potrzebna jest ta zmiana nazwy? Nie wystarczy sama różnica?

EDIT: Ok, po prostu na forum było niepełne zapytanie.


Last edited by pawel14 on Thu Feb 02, 2012 9:59 pm; edited 1 time in total

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by WB on Thu Feb 02, 2012 9:42 pm

Dołączam się do pytania Grześka: jak zrobić 2 z 2011_1?

WB

Liczba postów : 11
Join date : 2010-11-04

View user profile

Back to top Go down

Re: Rozwiązania zadań z egzaminów z poprzednich lat

Post by Sponsored content


Sponsored content


Back to top Go down

Page 1 of 2 1, 2  Next

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum