Melhor maneira de armazenar um relacionamento muitos-para-muitos no MySQL?

Digamos que eu tenha um banco de dados simples com tabelas 'posts' e 'tags'. As postagens podem ter muitas tags e as tags podem pertencer a muitas postagens.

Qual é a melhor maneira de estruturar o banco de dados? Pensei em usar uma lista / serializar:

tags
idx tag_id, str tag_name

posts
idx post_id, str title, list tag_ids

OU tendo outra tabela com as associações. O problema é usar isso. Nem sei como estruturar a consulta para puxar os nomes de tags associados quando recebo uma postagem.

posts
idx post_id, str title

post_tags
fk post_id, fk tag_id

Na verdade, eu não gosto de nenhum deles. Existe uma maneira melhor?

questionAnswers(5)

yourAnswerToTheQuestion