0Pricing
Supabase Backend as a Service · Урок

Связи и внешние ключи

Связывайте таблицы с помощью внешних ключей, чтобы моделировать связи «один ко многим» и «многие ко многим» в базе данных Supabase Postgres.

«Связи и внешние ключи» — бесплатный урок Supabase Backend as a Service на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Supabase Backend as a Service, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Supabase Backend as a Service содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Why Relationships Matter

Real data is connected: a user has many posts, an order has many items. Relationships link rows across tables so you avoid duplicating data.

What Is a Foreign Key?

A foreign key is a column that points to the primary key of another table. It enforces that the referenced row actually exists.

One-to-Many Example

One author writes many books. The books table stores the author's id.

CREATE TABLE authors (
  id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  name text NOT NULL
);
CREATE TABLE books (
  id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  title text NOT NULL,
  author_id bigint REFERENCES authors(id)
);

Referential Integrity

Postgres will reject inserting a book with an author_id that does not exist. This keeps your data consistent.

ON DELETE Behavior

Decide what happens when a parent row is deleted:

  • CASCADE deletes the children too
  • SET NULL clears the reference
  • RESTRICT blocks the delete
ALTER TABLE books
  ADD CONSTRAINT fk_author
  FOREIGN KEY (author_id)
  REFERENCES authors(id)
  ON DELETE CASCADE;

Querying Across Tables

With the Supabase client you can fetch related rows in one call using nested selects.

const { data } = await supabase
  .from('authors')
  .select('name, books(title)');

Many-to-Many Relationships

When both sides can have many of the other (students and courses), use a join table holding both foreign keys.

CREATE TABLE enrollments (
  student_id bigint REFERENCES students(id),
  course_id bigint REFERENCES courses(id),
  PRIMARY KEY (student_id, course_id)
);

Composite Primary Keys

In a join table the pair of foreign keys often forms the primary key, preventing duplicate links between the same two rows.

Naming Conventions

A common convention names foreign keys as singular_id (e.g. author_id). Consistency makes nested queries predictable.

function fkName(table) {
  return table.replace(/s$/, '') + '_id';
}
console.log(fkName('authors'));

Visualizing in the Dashboard

The Supabase Table Editor shows relationship links, and the Schema Visualizer draws how your tables connect, which helps verify your design.

Putting It Together

Model connections with foreign keys, choose sensible ON DELETE rules, and use join tables for many-to-many. This is the backbone of a clean schema.

Quick Check

Test your understanding of relationships.

Recap

You learned foreign keys, one-to-many vs many-to-many relationships, ON DELETE behaviors, join tables with composite keys, and how to query related data with nested selects.

Часто задаваемые вопросы

Урок «Связи и внешние ключи» бесплатный?

Да — полный текст урока «Связи и внешние ключи» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Supabase Backend as a Service, подпишись на CoddyKit PRO. Курс Supabase Backend as a Service содержит 4 уроков всего.

Чему я научусь в уроке «Связи и внешние ключи»?

Связывайте таблицы с помощью внешних ключей, чтобы моделировать связи «один ко многим» и «многие ко многим» в базе данных Supabase Postgres. Ты практикуешь Supabase Backend as a Service с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Supabase Backend as a Service?

Предыдущий опыт не требуется. Supabase Backend as a Service на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Связи и внешние ключи»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Supabase Backend as a Service?

Да. Каждый урок Supabase Backend as a Service включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Проектирование схем баз данных
  2. Создание таблиц и столбцов
  3. Базовая вставка данных и выполнение запросов
  4. Связи и внешние ключи
← Назад к Supabase Backend as a Service