Łączenie tabel w bazach danych

Załóżmy, że mamy tabelę z nazwami użytkowników i miastami, w których mieszkają:

users
id name city
1 user1 city1
2 user2 city1
3 user3 city2
4 user4 city1
5 user5 city3
6 user6 city2

Wadą tej tabeli jest to, że to samo miasto powtarza się kilka razy dla różnych użytkowników. Prowadzi to do pewnych problemów.

Po pierwsze, ciągłe powtarzanie prowadzi do tego, że baza danych zaczyna zajmować znacznie więcej miejsca.

Po drugie, dość niewygodne jest wykonywanie operacji na miastach. Na przykład, chcemy wyświetlić na ekranie listę wszystkich miast. Nie będzie to takie proste. Będziemy musieli pobrać wszystkich użytkowników wraz z ich miastami, następnie usunąć duplikaty z pobranych miast i dopiero wtedy otrzymamy tę listę.

A teraz wyobraźmy sobie, że w bazie jest 10000 użytkowników z 10 miast - dla tych 10 miast będziemy musieli pobrać całą tabelę z ogromną liczbą wierszy - otrzymamy bardzo wolna operację z bezsensowną stratą zasobów.

Rozwiązanie problemu

Należy podzielić naszą tabelę na dwie: w jednej będą przechowywane miasta, a w drugiej - użytkownicy. Jednocześnie w tabeli z użytkownikami będzie kolumna city_id, która będzie odwoływać się do miasta użytkownika.

A więc, stwórzmy dwie tabele. Tabela z miastami:

cities
id name
1 city1
2 city2
3 city3

Tabela z użytkownikami:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2
Задание 1

Załóżmy, że musisz przechowywać produkty (nazwa, cena, ilość) i kategorie tych produktów. Opisz strukturę przechowywania.

Задание 2

Załóżmy, że musisz przechowywać rzeki i morza, do których te rzeki uchodzą. Opisz strukturę przechowywania.

Задание 3

Załóżmy, że musisz przechowywać miasta i kraje, w których się znajdują. Opisz strukturę przechowywania.