![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 7.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cześć wszystkim.
Mam 2 tabele:
i
i teraz pytanie: - Co mi daje ta relacja? - Jeśli dodaje INSERTEM coś do tabeli noclegi to wcześniej muszę znać id_miejscowosci z tabeli miasta ? - Czy baza nie może sama sprawdzić miasta.id_miejscowosci i dodać do noclegi.id_miejscowosci (w momencie kiedy coś do niej dodaję), a jeśli nie ma takiego id to dodać nowy rekord w miasta i dopiero wstawić to id do noclegi ? No bo chyba po to jest definiowana relacja? W innym przypadku po co ją definiować - można równie dobrze w pamięci sobie to wymyślić. Uff trochę zamieszałem, ale mam nadzieję, że mi ktoś odpowie. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 22.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
a) A do czego sluza relacje w bazie ? Do okreslenia zwiazkow miedzy danymi z rzeczywistosci. W tym przypadku relacja miasto <- nocleg okresla relacje, ze kilka noclegow moze byc przypisanych do jednego miasta (relacja wiele do jeden)
b) dodajac cos do tabeli noclegi musisz podac id_miasta (skad serwer bazy danych mialby wiedziec do jakiego miasta chcesz przypisac nocleg ?). c) Cytat Czy baza nie może sama sprawdzić miasta.id_miejscowosci i dodać do noclegi.id_miejscowosci (w momencie kiedy coś do niej dodaję), a jeśli nie ma takiego id to dodać nowy rekord w miasta i dopiero wstawić to id do noclegi Przy probie dodania rekordu do tabeli nocleg z id_miejscowosci, ktore nie istnieje serwer bazy danych wyrzuci wyjatek, gdyz dane te sa polaczone relacja, czyli kazda dodawana wartosc kolumny nocleg.id_miejscowosci musi sie wczesniej znajdowac w kolumnie miasto.id_miejscowosci. Podczas dodawania nowego rekordu serwer sprawdza czy relacja istnieje i jezeli nie to wyrzuca blad - nie moze sam dodac nowego rekordu do tabeli miasta a potem do tabeli noclegi. Moze to zrobic uzytkownik za pomoca procedury, w pseudokodzie wygladaloby to mniej wiecej tak : Kod insert record into noclegi with value id_miejscowosci = n; if (is_thrown_exception) { insert record into miasta; insert record into nocleg with value id_miejscowosci = get_last_insert_id from miasta; return; } return; Za pomoca tak zdefiniowanej relacji mozesz latwo uzyskac dostep do informacji ktory nocleg jest w ktorym miescie, ile jest noclegow w miescie, ktore miasto ma najwiecej noclegow etc. wystarczy dobrze sformulowac zapytanie SQL. Uff trochę zamieszałem, ale mam nadzieję, że troche rozjasnilem sytuacje. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 06:01 |