Vinculando tabelas em bancos de dados

Suponha que temos uma tabela com os nomes dos usuários e as cidades onde eles moram:

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

A desvantagem desta tabela é que a mesma cidade se repete várias vezes para diferentes usuários. Isso leva a alguns problemas.

Em primeiro lugar, a repetição constante leva ao fato de que o banco de dados começa a ocupar muito mais espaço.

Em segundo lugar, é bastante inconveniente executar operações com cidades. Por exemplo, queremos exibir na tela uma lista de todas as cidades. Simplesmente não será possível fazer isso de forma fácil. Teremos que obter todos os usuários junto com suas cidades, depois remover as duplicatas das cidades obtidas e só então obteremos essa lista.

E agora imagine que o banco de dados tenha 10000 usuários de 10 cidades - para obter essas 10 cidades, teremos que extrair a tabela inteira com uma enorme quantidade de linhas - resultará em uma operação muito lenta com um desperdício sem sentido de recursos.

Solução para o problema

Precisamos dividir nossa tabela em duas: em uma serão armazenadas as cidades, e na segunda - os usuários. Neste caso, na tabela de usuários haverá uma coluna city_id, que fará referência à cidade do usuário.

Então, vamos criar duas tabelas. A tabela com cidades:

cities
id name
1 city1
2 city2
3 city3

A tabela com usuários:

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

Suponha que você precise armazenar produtos (nome, preço, quantidade) e as categorias desses produtos. Descreva a estrutura de armazenamento.

Задание 2

Suponha que você precise armazenar rios e os mares nos quais esses rios deságuam. Descreva a estrutura de armazenamento.

Задание 3

Suponha que você precise armazenar cidades e os países em que elas estão localizadas. Descreva a estrutura de armazenamento.