[SQL] Zadania, klucz obcy

andrewha
Użytkownik
Użytkownik
Posty: 111
Rejestracja: 21 cze 2007, o 20:59
Płeć: Mężczyzna
Lokalizacja: Szczebrzeszyn
Podziękował: 19 razy
Pomógł: 14 razy

[SQL] Zadania, klucz obcy

Post autor: andrewha »

Witam, próbuje się nauczyć baz danych, ale to nie jest dla mnie takie proste. Rozwiązuje zadania i mam problem z niektórymi, szczególnie z tymi gdzie trzeba połączyć tabele zgodnie z kluczem obcym, nie rozumie na czym to polega. Gdyby ktoś pomógł mi wyjaśnić i sprawdzić czy zadania są dobrze wykonane, to będę wdzięczny.
Moja baza wygląda następująco:
W tabeli uczniowie są następujące kolumny:nr_leg, imie, nazwisko, data_urodzenia, ulica, nr_domu, nr_mieszkania, kod_pocztowy oraz miejscowość.
W tabeli oceny są następujące kolumny:id_oceny, nr_leg, id_zajec, ocena, data_oceny.
W tabeli zajecia są następujące kolumny:id_zajec, nazwa_przedmiotu.

Zadania:
1. Wszystkie rekordy z tabel uczniowie i oceny połączonych zgodnie z kluczem obcym - wiersz ucznia jest łączony z każdą oceną tego ucznia.

2. Wszystkie rekordy z tabel uczniowie i przedmioty połączonych każdy uczeń z każdym przedmiotem.

3. Wszystkie rekordy z tabel uczniowie i oceny połączonych zgodnie z kluczem obcym.

4. Wszystkie rekordy z tabel uczniowie, oceny i przedmioty połączonych zgodnie z kluczem obcym.

5. Imiona, nazwiska, przedmioty i oceny przy czym tabele uczniowie, przedmioty oceny należy połączyć zgodnie z kluczem obcym.

Moje rozwiązania (nie wiem czy dobrze, a raczej coś jest źle, bo dwa zadania zrobiłem tak samo).
1.SELECT * FROM uczniowie U , oceny O WHERE U.nr_leg = O.nr_leg;
2.SELECT * FROM uczniowie, zajecia;
3.SELECT * FROM uczniowie U, oceny O WHERE U.nr_leg=O.nr_leg;
4.SELECT * FROM uczniowie U, oceny O, zajecia Z WHERE U.nr_leg=O.nr_leg AND O.id_zajec=Z.id_zajec;
5.SELECT imie, nazwisko, nazwa_przedmiotu, ocena FROM uczniowie U, oceny O, zajecia Z WHERE U.nr_leg=O.nr_leg AND O.id_zajec=Z.id_zajec;
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[SQL] Zadania, klucz obcy

Post autor: dexter90 »

Tabela uczniowe jest połączona relacją 1 - wiele z tabelą oceny, natomiast tabela zajęcia jest połączona z tabelą oceny relacją 1 - wiele. Wygląda to tak:



Aby zdefiniować połączenie pomiędzy tabelami uczniowie i oceny musimy wykonać polecenie:

Kod: Zaznacz cały

alter table oceny add constraint fk_id_leg foreign key(nr_leg) references uczniowie(nr_leg
pomiędzy zajęcia, a oceny:

Kod: Zaznacz cały

alter table oceny add constraint fk_id_zaj foreign key(id_zajec) references zajecia(id_zajec)
Co do rozwiązań:

1. OK
2. OK
3 - OK
4 - OK
5 - OK
andrewha
Użytkownik
Użytkownik
Posty: 111
Rejestracja: 21 cze 2007, o 20:59
Płeć: Mężczyzna
Lokalizacja: Szczebrzeszyn
Podziękował: 19 razy
Pomógł: 14 razy

[SQL] Zadania, klucz obcy

Post autor: andrewha »

Ja tych kodów definiujących połączenia nie rozumiem, bo tego nie miałem na zajęciach.
Jeżeli chodzi o zadania to zadania 1 i 3 mają nieco inną treść, a ja rozwiązania do nich napisałem takie samo, więc nie wydaje mi się aby to było dobrze.
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[SQL] Zadania, klucz obcy

Post autor: dexter90 »

No może minimalnie, zatem poczytaj o UNION.

Btw. Skoro tego na zajęciach nie miałeś ( relacji, prostych relacji ) to te zapytania w takim razie nie mają sensu, bo po co pisać coś czego się nie rozumie.
andrewha
Użytkownik
Użytkownik
Posty: 111
Rejestracja: 21 cze 2007, o 20:59
Płeć: Mężczyzna
Lokalizacja: Szczebrzeszyn
Podziękował: 19 razy
Pomógł: 14 razy

[SQL] Zadania, klucz obcy

Post autor: andrewha »

Ok, wielkie dzięki za pomoc.
ODPOWIEDZ