In this section you’ll find an overview of the fundamental types, objects, and concepts for EdgeDB, a relational database with strongly typed schema. Here’s a quick overview of the links below:
Types in EdgeDB include your own Object Types (e.g. User) and
Abstract Types for other types to extend (e.g. HasEmailAddress
for
User
and others can inherit), plus Scalar Types with single values
(str
, int64
, etc.) and Collection Types like arrays and
tuples for multiple values.
Start putting your Object Types together with properties and
links. Then build on them with items like annotations (readable
notes for others), constraints to set limits (e.g. maximum length,
minimum value, or even create your own), indexes for faster querying,
and computables to use expressions to define properties or links
(e.g. property email := .user_name ++ '@' ++ .provider_name
).
Expression Aliases let you use existing types under new names to build on them without touching the original – both in your schema or on the fly inside a query. You can also create your own functions, strongly typed along with everything else in EdgeDB. All this goes into the schema under one or more modules (namespaces).