# One-to-many relations (Prisma ORM v7) (/docs/orm/v7/prisma-schema/data-model/relations/one-to-many-relations) > For the complete Prisma documentation index, see [llms.txt](https://www.prisma.io/docs/llms.txt). A markdown version of any docs page is available by appending `.md` to its URL. How to define and work with one-to-many relations in Prisma. Location: ORM > v7 > Prisma Schema > Data Model > Relations > One-to-many relations One-to-many (1-n) relations connect one record on one side to zero or more records on the other side: ```prisma model User { id Int @id @default(autoincrement()) posts Post[] } model Post { id Int @id @default(autoincrement()) author User @relation(fields: [authorId], references: [id]) authorId Int } ``` This expresses: * A user can have zero or more posts * A post must always have an author You can also reference a field other than the primary key. The referenced field on the parent model must be unique, so mark it with `@unique` (an `@id` field is already unique). To reference several fields at once, they must together form a `@@id` or `@@unique`; see [Multi-field relations](#multi-field-relations-relational-databases-only). ```prisma model User { id Int @id @default(autoincrement()) email String @unique posts Post[] } model Post { id Int @id @default(autoincrement()) authorEmail String author User @relation(fields: [authorEmail], references: [email]) } ``` ## Multi-field relations (relational databases only) [#multi-field-relations-relational-databases-only] ```prisma model User { firstName String lastName String post Post[] @@id([firstName, lastName]) } model Post { id Int @id @default(autoincrement()) author User @relation(fields: [authorFirstName, authorLastName], references: [firstName, lastName]) authorFirstName String authorLastName String } ``` ## 1-n in the database [#1-n-in-the-database] The difference between 1-1 and 1-n is that in a 1-1 relation the foreign key must have a `UNIQUE` constraint. Without `UNIQUE`, multiple records can point to the same parent, making it 1-n. ## Required vs optional relation fields [#required-vs-optional-relation-fields] The annotated relation field and relation scalar can be either optional or mandatory. The list side is always mandatory. **Optional 1-n** (can create Post without User): ```prisma model User { id Int @id @default(autoincrement()) posts Post[] } model Post { id Int @id @default(autoincrement()) author User? @relation(fields: [authorId], references: [id]) authorId Int? } ``` **Mandatory 1-n** (must assign User when creating Post): ```prisma model User { id Int @id @default(autoincrement()) posts Post[] } model Post { id Int @id @default(autoincrement()) author User @relation(fields: [authorId], references: [id]) authorId Int } ``` ## Related pages - [`Many-to-many relations`](https://www.prisma.io/docs/orm/v7/prisma-schema/data-model/relations/many-to-many-relations): How to define and work with many-to-many relations in Prisma. - [`One-to-one relations`](https://www.prisma.io/docs/orm/v7/prisma-schema/data-model/relations/one-to-one-relations): How to define and work with one-to-one relations in Prisma. - [`Referential actions`](https://www.prisma.io/docs/orm/v7/prisma-schema/data-model/relations/referential-actions): Referential actions let you define the update and delete behavior of related models on the database level - [`Relation mode`](https://www.prisma.io/docs/orm/v7/prisma-schema/data-model/relations/relation-mode): Manage relations between records with relation modes in Prisma - [`Self-relations`](https://www.prisma.io/docs/orm/v7/prisma-schema/data-model/relations/self-relations): How to define and work with self-relations in Prisma.