Repository navigation
7.1. Database Schema
The Database Schema diagram type is used to describe the physical structure of a database.
Its primary purpose is to model tables, columns, relationships, and other database objects in a structured and implementation-oriented form.
The Database Schema diagram type focuses on how data is stored and connected within a database system.
Database Schema models may be used to describe:
- Relational database structures
- Tables and columns
- Primary keys
- Primary-key, uniqueness, nullability, and auto-increment column properties
- Foreign-key roles derived from relationship source columns
- Enumerations
- Seed or example data
- Relationships between tables
Database Schema models are not intended to replace conceptual domain modeling, business modeling, or software architecture diagrams.
Database Schema models are built around a small set of core concepts.
A table represents a collection of records stored in a database.
Tables are the primary structural elements of a Database Schema model.
A column represents a single attribute stored within a table.
Each column has a defined data type and may define supported column properties.
A relationship represents a connection between tables.
Relationships are directed references between columns in different tables. The source column has the foreign-key role for rendering and validation purposes; there is no standalone foreign-key declaration in the MVP.
An enumeration defines a predefined set of allowed values.
A record represents example, seed, or reference data associated with a table.
Database Schema models may contain the following element types:
tablecolumnenumrelationshiprecords
Each element type represents a different part of a physical database structure.
A table represents a database table.
A table contains column declarations.
table users {
column id int;
column email string;
};
A column represents a field stored inside a table.
A column must belong to a table and must define a data type.
table users {
column id int;
column email string;
};
Columns may also use block syntax when additional properties are required.
table users {
column id int {
pk;
auto_increment;
};
column email string {
unique;
not_null;
};
};
An enum represents a predefined set of allowed values.
Enums may be used as column types.
enum order_status {
pending;
paid;
shipped;
cancelled;
};
table orders {
column status order_status;
};
A relationship represents a connection between tables.
Relationships are usually based on references between columns.
relationship user_orders {
orders.user_id -> users.id;
};
Database relationships are directed references. Cardinality is not inferred in the MVP.
A records block represents example, seed, or reference data for a table.
records users {
{ id: 1, email: "alice@example.com" };
{ id: 2, email: "bob@example.com" };
};
Records are optional and should not be required for rendering the database structure.
Тип диаграммы Database Schema предназначен для описания физической структуры базы данных.
Основная задача данного типа диаграмм — моделирование таблиц, колонок, связей и других объектов базы данных в структурированной форме, близкой к реализации.
Database Schema сосредоточен на том, как данные хранятся и связаны между собой внутри системы хранения данных.
Модели Database Schema могут использоваться для описания:
- Структур реляционных баз данных
- Таблиц и колонок
- Первичных ключей
- Свойств колонок для первичного ключа, уникальности, обязательности и автоинкремента
- Роли внешнего ключа, выводимой для исходной колонки связи
- Перечислений
- Тестовых, справочных и начальных данных
- Связей между таблицами
Модели Database Schema не предназначены для замены концептуального моделирования предметной области, бизнес-моделирования или архитектурных диаграмм.
Модели Database Schema строятся вокруг небольшого набора базовых концепций.
Таблица представляет собой набор записей, хранящихся в базе данных.
Таблицы являются основными структурными элементами модели Database Schema.
Колонка представляет отдельный атрибут, хранящийся в таблице.
Каждая колонка имеет определённый тип данных и может содержать поддерживаемые свойства колонки.
Связь представляет отношение между таблицами.
Связи являются направленными ссылками между колонками разных таблиц. Исходная колонка получает роль внешнего ключа для целей валидации и визуализации; отдельного объявления внешнего ключа в MVP нет.
Перечисление определяет заранее заданный набор допустимых значений.
Запись представляет тестовые, справочные или начальные данные, связанные с таблицей.
Модели Database Schema могут содержать следующие типы элементов:
tablecolumnenumrelationshiprecords
Каждый тип элемента описывает отдельную часть физической структуры базы данных.
table представляет таблицу базы данных.
Таблица содержит объявления колонок.
table users {
column id int;
column email string;
};
column представляет поле, хранящееся внутри таблицы.
Колонка должна принадлежать таблице и должна иметь тип данных.
table users {
column id int;
column email string;
};
Колонки могут использовать блочный синтаксис, если им нужно задать дополнительные свойства.
table users {
column id int {
pk;
auto_increment;
};
column email string {
unique;
not_null;
};
};
enum представляет заранее заданный набор допустимых значений.
Перечисления могут использоваться как типы колонок.
enum order_status {
pending;
paid;
shipped;
cancelled;
};
table orders {
column status order_status;
};
relationship представляет связь между таблицами.
Обычно связи основаны на ссылках между колонками.
relationship user_orders {
orders.user_id -> users.id;
};
Связи баз данных являются направленными ссылками. В MVP кардинальность не выводится.
Блок records представляет тестовые, начальные или справочные данные для таблицы.
records users {
{ id: 1, email: "alice@example.com" };
{ id: 2, email: "bob@example.com" };
};
Записи являются необязательными и не должны требоваться для визуализации структуры базы данных.