# Lesson 9: Modeling schemas

In this lesson, we’ll learn how to design TypeDB schemas using the conceptual **PERA data model**. We’ll start with an overview of the PERA model and see how it is implemented by TypeDB and TypeQL. We’ll then work through the design of a small part of the bookstore schema and cover major design decisions like choosing **object types**, using **type hierarchies**, and using **interface hierarchies**. We’ll also see how we can avoid some specific problems like **data redundancies**, **inheritance overuse**, and **interface redundancies**.

## [](#_recommended_prerequisites)Recommended prerequisites

*   You should complete [Lesson 7](../7-understanding-query-patterns/index.md) before starting this lesson.
    

## [](#_lesson_contents)Lesson contents

[Lesson 9.1: The PERA model](9.1-the-pera-model/index.md)

Learn about the basic building blocks of TypeDB’s polymorphic data model.

[Lesson 9.2: Determining object types](9.2-determining-object-types/index.md)

Learn how to effectively choose entity and relation types.

[Lesson 9.3: Avoiding data redundancies](9.3-avoiding-data-redundancies/index.md)

Learn how to prevent redundant and inconsistent data.

[Lesson 9.4: Using type hierarchies](9.4-using-type-hierarchies/index.md)

Learn how to effectively arrange types into hierarchies.

[Lesson 9.5: Composition over inheritance](9.5-composition-over-inheritance/index.md)

Learn when not to use type hierarchies in data models.

[Lesson 9.6: Using interface hierarchies](9.6-using-interface-hierarchies/index.md)

Learn how to effectively use ownerships and roles in schemas.

[Lesson 9.7: Avoiding interface redundancies](9.7-avoiding-interface-redundancies/index.md)

Learn how to build schemas that maximise interface polymorphism.

[Lesson 9.8: Interface constracts](9.8-abstract-contracts/index.md)

Learn how to build contracts using abstractness and interfaces.

[Lesson 9.9: Specialization](9.9-specialization/index.md)

Learn how to specialize schema definitions through annotations and subtyping.

[Summary](../8-composing-clauses/summary/index.md) [The PERA model](9.1-the-pera-model/index.md)

[Edit on GitHub](https://github.com/typedb/typedb-docs/edit/3.x-development/academy/modules/ROOT/pages/9-modeling-schemas/index.adoc) Edit this page on GitHub.