/ / Use vários registros para um registro [duplicado] - mysql, design do banco de dados

Use vários registros para um registro [duplicado] - mysql, design de banco de dados

Digamos que tenho um banco de dados com as seguintes tabelas:

Mesa movie contendo:

movie1
movie2

Mesa actors contendo:

actor1
actor2
actor3

Digamos actor2 aparece em ambos os filmes movie1 e movie2. Como posso usar isso agora sem ter que inserir um registro diferente para cada ator agora para dar a ele seu próprio id de filme na tabela actors, para economizar espaço?

Respostas:

2 para resposta № 1

Acho que o que você está procurando é uma tabela de junção (tabela de links) (http://en.wikipedia.org/wiki/Junction_table):

(Só por causa disso, eu coloco plural em ambos os nomes de mesa)

tab movies
= movie1
= movie2

tab actors
= actor1
= actor2
= actor3

tab movies_actors
= actors (id of tab_actors)
= movies (id of tab_movies)

Em seguida, você pode juntar tab_movies_actors com tab_movies e tab_actors para obter quais atores pertencem a quais filmes:

SELECT * FROM tb_movies tm
JOIN tb_movies_actors tma ON (tm.id = tma.movies_id)
JOIN tb_actors ta ON  (tma.actors_id = ta.id)

ou um filme específico:

SELECT * FROM tb_movies tm
JOIN tb_movies_actors tma ON (tm.id = tma.movies_id)
JOIN tb_actors ta ON  (tma.actors_id = ta.id)
WHERE tm.id = 10

0 para resposta № 2

Sempre que houver uma relação "muitos para muitos" é necessária uma tabela de links como a que é mostrada na resposta anterior.