Schema and database are both terms that are often misunderstood. Its meaning depends on the database and the context it is being used in.
What is a database?
A database is an umbrella term that refers to many different parts of the ecosystem. The term is often used to refer to a Database Management System (DBMS). A DBMS is the software that sits between the user and the data. It is responsible for interacting with the user and managing how data is stored and retrieved.
However, the term database is also used to refer to a collection of data in any shape or form among non-technical circles.
DBMS vs RDBMS
The term database often implies a Relational database management system (RDBMS) due to its long history and popularity. This is the most common type of DBMS. Common RDBMS systems include PostgreSQL, SQLite, MySQL and SQL Server.
Put simply, RDBMS are systems that store data in tables, allowing users to query and perform actions using SQL. If you are unsure what type of database you are using, there is a high chance that you are using an RDBMS system.
What does the term ‘database’ mean in an RDBMS system?
Within an RDBMS system, the term database is used to describe the highest-level container. Typically, a single application stores all of its data within a single database. This grouping is useful to separate concerns between projects, making it easy to take backups and handle access.
A database connection also typically only involves a single database. This allows you to create separate users and connect to them individually, increasing the separation of concern and security.
What is a database schema?
The term ‘database schema’ is used to refer to the structure or blueprint of a database. In RDBMS, the database schema is how the tables are described. Its columns, type and how they are connected relationally.
However, the term or keyword ‘schema’ itself is used in different capacities within each system. We will cover what the term means in PostgreSQL, SQLite, MySQL and SQL Server.
What does the term ‘schema’ mean in PostgreSQL and SQL Server?
In PostgreSQL and SQL Server, a schema is the second-level container inside a database. A database can contain multiple schemas and each schema contains the database objects like tables and functions.
Schemas in both databases are useful for a variety of purposes, including:
- Organizing database objects into logical groups for easier management and maintenance
- Controlling access and visibility to different database objects for different users or roles
- Isolating different applications or projects that use the same database, by placing their database objects in different schemas
What does the term ‘schema’ mean in MySQL?
MySQL uses the terms ‘schema’ and ‘database’ interchangeably. Creating a schema in MySQL is equivalent to creating a database.
For example, the command
CREATE DATABASE and
CREATE SCHEMA achieves the same result.
In MySQL, physically, a schema is synonymous with a database. You can substitute the keywordMySQL Glossary
DATABASEin MySQL SQL syntax, for example using
CREATE SCHEMAinstead of
What does the term ‘schema’ mean in SQLite?
SQLite does not have any special meaning attached to ‘schema’. When mentioned, schema in SQLite refers to the general meaning of ‘database schema’.
As you can see, both words mean different things depending on the context. Be sure to confirm them to know exactly what is being talked about!
If you would like to know more about database schemas, visit DbSchemaLibrary to get examples from real and running production databases.