Build a Database Schema In 5 Steps

Dominik KellerDominik Keller
5 min read

A database schema is a crucial component in database design that defines the structure, organization, and relationships of data within a database. Let's break this down into steps and create a simple example to illustrate the process.



Why You Need a Database Schema

A database schema is essentially the blueprint or structure of a database. It defines how data is organized and how the relations among them are associated.

A schema specifies what kinds of data can go into each table, helping to maintain data integrity. It outlines how different tables are related to each other, allowing for efficient data retrieval and management.

In practical terms, if you build a large web application without a database schema. You might end up with:

  • Inconsistent data (e.g., dates stored in different formats)

  • Redundant data leading to update anomalies

  • Difficulty in querying related data

  • Performance issues as data volume grows

  • Security vulnerabilities due to lack of access control at the data level

By contrast, with a well-designed schema, you have a solid foundation that supports the entire application, from data entry to reporting and analysis.


This guide provides a step-by-step process for building a database schema, using a simple library management system as an example. Here's a brief overview of each step:

1. Identify Entities: Using Books, Authors, and Borrowers as our main entities.

2. Define Attributes: List the key attributes for each entity.

3. Determine Primary Keys: Chose unique identifiers for each entity (ISBN for Books, AuthorID for Authors, and BorrowerID for Borrowers).

4. Establish Relationships: Identify the many-to-many relationships between Books and Authors, and between Books and Borrowers.

5. Create Tables: We provide SQL statements to create the necessary tables, including junction tables for the many-to-many relationships.


Step by Step Guide: Building a Database Schema

Step 1: Identify Entities

First, identify the main entities (objects or concepts) in your system. These will become your tables.

Example: For a simple library management system, we might have:

  • Books

  • Authors

  • Borrowers


Step 2: Define Attributes

For each entity, define its attributes (properties or characteristics). These will become the columns in your tables.

Example:

  • Books: ISBN, Title, PublicationYear, Genre

  • Authors: AuthorID, FirstName, LastName, BirthDate

  • Borrowers: BorrowerID, FirstName, LastName, Email


Step 3: Determine Primary Keys

Choose a unique identifier for each entity. This will be the primary key for each table.

Example:

  • Books: ISBN (primary key)

  • Authors: AuthorID (primary key)

  • Borrowers: BorrowerID (primary key)


Step 4: Establish Relationships

Identify how your entities relate to each other. This will help you create foreign keys and junction tables if needed.

Example:

  • A book can have multiple authors, and an author can write multiple books (many-to-many)

  • A borrower can borrow multiple books, and a book can be borrowed by multiple borrowers over time (many-to-many)


Step 5: Create Tables

Building your tables can be done in traditional SQL using a SQL GUI such as MySQL Workbench, or you can create tables using modern relational database builders such as Five.

Five gives you a simple point-and-click database builder for MySQL. All you have to do is create fields, and assign your field a data type (such as a string, float, integer, or binary), and define the relationships in point-and-click.

One big advantage of Five is that it automatically creates Primary Keys and Foreign Keys. These keys uniquely identify records and are used to build relationships between tables.

Once you define your data model, Five automatically creates a frontend web application, which you can then customize as needed.

With Five you can significantly speed up the process of implementing your database schema, reduce the chance of errors, and easily make changes as your project evolves. It abstracts away much of the complexity, allowing you to focus on your data model and business logic rather than the intricacies of database management.


Build a Database Web Application
Rapidly build and deploy your database using Five

Get Instant Access


Tables based on the entities, attributes, and relationships we've identified:

CREATE TABLE Books (

    ISBN VARCHAR(13) PRIMARY KEY,

    Title VARCHAR(255) NOT NULL,

    PublicationYear INT,

    Genre VARCHAR(50)

);



CREATE TABLE Authors (

    AuthorID INT PRIMARY KEY AUTO_INCREMENT,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    BirthDate DATE

);



CREATE TABLE Borrowers (

    BorrowerID INT PRIMARY KEY AUTO_INCREMENT,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Email VARCHAR(100) UNIQUE,

    RegistrationDate DATE

);



CREATE TABLE BookAuthors (

    ISBN VARCHAR(13),

    AuthorID INT,

    PRIMARY KEY (ISBN, AuthorID),

    FOREIGN KEY (ISBN) REFERENCES Books(ISBN),

    FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)

);



CREATE TABLE BookLoans (

    LoanID INT PRIMARY KEY AUTO_INCREMENT,

    ISBN VARCHAR(13),

    BorrowerID INT,

    LoanDate DATE,

    DueDate DATE,

    ReturnDate DATE,

    FOREIGN KEY (ISBN) REFERENCES Books(ISBN),

    FOREIGN KEY (BorrowerID) REFERENCES Borrowers(BorrowerID)

);

Example Entity-Relationship Diagram

Instead of writing SQL to create your database schema, Five allows you to visually create your data model, which it then translates into a database structure.


The above Entity-Relationship Diagram (ERD) represents the library management system we described earlier.

  1. Entities:

    • BOOKS: Represents the books in the library.

    • AUTHORS: Represents the authors of the books.

    • BORROWERS: Represents the people who borrow books from the library.

    • BOOK_AUTHOR: A junction table representing the many-to-many relationship between books and authors.

    • BOOK_LOAN: Represents the borrowing transactions.

  2. Attributes:

    • Each entity has its attributes listed. The primary keys are marked with "PK" and foreign keys with "FK".
  3. Relationships:

    • BOOKS ||--o{ BOOK_AUTHOR : This means a book can have many entries in the BOOK_AUTHOR table (i.e., can have multiple authors).

    • AUTHORS ||--o{ BOOK_AUTHOR : An author can have many entries in the BOOK_AUTHOR table (i.e., can write multiple books).

    • BOOKS ||--o{ BOOK_LOAN : A book can be involved in many loan transactions.

    • BORROWERS ||--o{ BOOK_LOAN : A borrower can have many loan transactions.

The notation "||--o{" represents a "one-to-many" relationship. The "||" side is the "one" side, and the "o{" side is the "many" side.

This ERD visualizes the structure of our database, showing how the different entities are related to each other.


Get Started with Five Today

To build your data driven web application with Five, sign up for free access and start the process. If you need assistance, visit our forum and get help from our application development experts.

0
Subscribe to my newsletter

Read articles from Dominik Keller directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Dominik Keller
Dominik Keller

Co-Founder of Five, a low-code startup from Brisbane, Australia.