Lesson 5: Defining schemas
In this lesson, we’ll learn how to define entity, relation, and attribute types using Define queries. We’ll start by defining individual types and their interfaces, namely ownership interfaces for attributes and role interfaces for relations. We’ll then see how we can define type hierarchies for entities, relations, and attributes. We’ll also see how we can apply different kinds of value constraints to attributes and define rules to infer new data. Finally, we’ll see how TypeDB validates changes to the schema to ensure it stays in a consistent state.
Recommended prerequisites
-
You should complete Lesson 4 before starting this lesson.
Running examples
The sample database already has the complete bookstore schema defined and data inserted. If you would like to try running the Define queries featured in the examples and exercises in this section, then you should do so using another database. To create a new database, use the database manager . After creation, make sure to switch over to it using the database selector. For more information on how to manage databases using TypeDB Studio, refer back to Lesson 2.2
To run a Define query, make sure to use a schema session and write transaction. After running a Define query, you should see any committed changes to the schema reflected in the type browser. The examples and exercises featured in this lesson are annotated with one of the following instructions to indicate how they should be run.
- Run
-
Run this query without committing the transaction afterward. Write transactions will remain open for further queries, and changes will not be persisted until a commit.
- Run and commit
-
Run this query and then commit the transaction, persisting the changes to the database.
- Do not run
-
Do not run this query, which is shown for information only. To rollback an open transaction, close it without committing.
- Try running
-
Run this query to see the error generated.
For information on how to control sessions, transactions, and queries using TypeDB Studio, refer back to Lesson 2.2.