Как производить выборку постов и тегов из Б.Д.?
Очень люблю задавать этот вопрос на собеседованиях)
Правильный на мой взгляд ответ: в зависимости от нагрузки.
1. Очевидное быстрое решение - тупо 3НФ в базе, 1 запрос на получение списка постов, еще 1-2 запроса на получение всех тегов из всех этих постов, мерж массивов на ЯП.
2. По мере появления нагрузки можно заниматься различными денормализациями (как минимум можно денормализованно хранить id тегов, как максимум и текстовки тегов тоже).
Сделать дополнительный запрос
UPD:
Как то так:$posts = $sql->get("SELECT `id`, `name` FROM `posts` WHERE 1");

foreach ($posts as $post) {
    echo $post->name;

    $tags = $sql->get("SELECT `id`, `name` FROM `post_tags` WHERE `post_id` = $post->id");

    foreach ($tags as $tag) {
        echo $tag->name;
    }
}