Mam 2 tabele:
CREATE TABLE `miasta` ( `id_miejscowosci` int(5) NOT NULL AUTO_INCREMENT, `miejscowosc` varchar(255) NOT NULL, PRIMARY KEY (`id_miejscowosci`) ) ENGINE=InnoDB DEFAULT CHARSET=latin2;
i
CREATE TABLE `noclegi` ( `id` int(9) NOT NULL AUTO_INCREMENT, `nazwa` varchar(255) NOT NULL , `kategoria` varchar(255) NOT NULL, `imie` varchar(255) NOT NULL, `nazwisko` varchar(255) NOT NULL , `ulica` varchar(255) NOT NULL, `numer` varchar(255) NOT NULL, `id_miejscowosci` int(5) NOT NULL, `kod_pocztowy` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `id_miejscowosci` (`id_miejscowosci`) ) ENGINE=InnoDB DEFAULT CHARSET=latin2; ALTER TABLE `noclegi` ADD CONSTRAINT `miasta_id_miejscowosci` FOREIGN KEY (`id_miejscowosci`) REFERENCES `miasta` (`id_miejscowosci`);
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.