数据模型

datamodel定义概述

datamodel有两个主要功能:

  • 定义底层数据库模式和表。
  • 它是Prisma API的自动生成的CRUD和实时操作代码的基础。

构建数据模型的块

有几个可用的构建块来塑造你的数据模型:

  • Types由多个fields字段组成,通常表示应用程序中的实体(例如User,Car,Order)。数据模型中的每种类型都映射到数据库表,并且将CRUD操作添加到GraphQL schema中。
  • Relations描述类型之间的relationship关系。
  • Directives指令涵盖不同的用例,例如类型约束或级联删除行为。
  • Interfaces是抽象类型,包括一组字段,类型必须包含在implement接口中。接口目前不适用于Prisma中的数据建模,但将来会支持待实现功能。

为什么选择SDL?

SDL用于数据建模的主要原因有两个:

  • SDL是一种 直观,简洁的表达类型定义的方式,因此有助于提供良好的开发人员体验。
  • 使用GraphQL SDL定义用作GraphQL API基础的模型是一种 惯用的方法。

对象类型type

object type(简称 type)定义数据模型中一个model的结构。 它用于表示应用领域中的实体。

每个对象类型都映射到数据库。 对于关系数据库,每种类型创建一个table。 对于无模式数据库,使用等效结构(例如document)。 请注意,即使对于无模式数据库,Prisma也会强制执行模式!

  • 定义对象类型

    在datamodel中使用关键字"type"定义对象类型:

    type Article {id: ID! @idtitle: String!text: StringisPublished: Boolean! @default(value: false)
    }
    

    上面定义的类型具有以下属性:

    • Name: Article

    • Fields: id, title, text , isPublished (默认为 false)

    • id , title , isPublished 是必填字段 (被后面的 ! 符号定义), text 可选填.

    • 所有ID 都必须是@unique。

  • 生成type的API操作

    数据模型中的类型会影响Prisma API中的可用操作。Prisma API中每种类型生成的CRUD和实时操作的概述如下所示:

    • Query:获取该类型的一个或多个节点。
    • Mutation:创建,更新或删除该类型的节点。
    • Subscription:收到有关该类型节点更改的实时通知(即新节点是created或现有节点是updated或deleted)。

字段

Fieldstype的构建块,为节点提供shape。每个字段都由其名称引用,并且是标量关系字段。字段名称只能包含字母数字字符,需要以小写字母开头。它们可以包含 最多64个字符。