Exercise 1: A Home-Page Query — Possible Solution =================================================== const homePosts = await prisma.post.findMany({ where: { published: true }, orderBy: { publishedAt: "desc" }, take: 10, select: { title: true, slug: true, publishedAt: true, author: { select: { name: true } }, tags: { select: { name: true } }, }, }); Result type: { title: string; slug: string; publishedAt: Date | null; author: { name: string | null }; tags: { name: string }[]; }[] Why select rather than include: The page needs a handful of specific fields, and "nothing else". include would return every Post field (content, viewCount, timestamps ...) and, with include: { author: true }, the whole user record — email address and all. select keeps the query and the response small, and means private user fields can never slip into the page even if the User model grows later. WHY THIS WORKS AS AN ANSWER ------------------------------ It combines filtering, sorting and limiting with nested selects for both a single relation (author) and a list relation (tags), and justifies select on both size and privacy grounds.