Learning Platform
Глоссарий Troubleshooting
Урок 02.03 · 15 мин
Начальный
fundamentalstableskeysintroduction

Таблица, строка, столбец и ключ простыми словами

В прошлых уроках мы уже несколько раз говорили «таблица», «строка», «столбец» и даже «ссылка на клиента». Пора назвать эти слова точно — они будут с нами весь курс. Ничего сложного: всё это привычные вещи из любой таблички, просто у них есть имена. Этот короткий урок наводит порядок в словах и в конце показывает, куда мы двинемся дальше.

Таблица, строка, столбец

Возьмём знакомый список товаров:

idnameprice
1Чайник2000
2Кружка500
3Ложка100

Таблица — это весь этот прямоугольник целиком. Таблица хранит данные об одной разновидности вещей. Здесь — о товарах. Заказы или клиенты жили бы в своих отдельных таблицах.

Столбец — это вертикальная колонка. У столбца есть имя (id, name, price) и он отвечает за один признак вещи. Столбец price хранит цены и только цены — у всех товаров сразу. Иногда столбец называют ещё полем или атрибутом, это синонимы.

Строка — это одна горизонтальная линия. Строка — это одна конкретная вещь целиком, со всеми её признаками. Вторая строка (2, Кружка, 500) — это вся информация про кружку. Строку называют ещё записью.

Три слова на одной таблице
ТаблицаВесь прямоугольник целиком. Хранит данные об одной разновидности вещей — здесь о товарах.
СтолбецВертикальная колонка. Один признак вещи у всех строк сразу. Синонимы: поле, атрибут.
СтрокаОдна горизонтальная линия. Одна конкретная вещь целиком, со всеми признаками. Синоним: запись.
NOTE

Запомни связку: таблица — про разновидность вещей (товары вообще), строка — про одну вещь (вот эта кружка), столбец — про один признак этой разновидности (цена). Это три разреза одних и тех же данных.

Зачем нужен ключ

Теперь главный новый термин — ключ. Посмотри на столбец id в таблице товаров: 1, 2, 3. Зачем он, если у товаров уже есть имена?

Представь, что у тебя два товара называются «Кружка» — синяя и белая. Если ссылаться на товар по имени, не разобрать, о какой кружке речь. Имя не различает их. А вот id различает: у синей кружки id = 2, у белой id = 7, и спутать невозможно.

Ключ — это столбец (или несколько), значение которого уникально для каждой строки и потому однозначно её опознаёт. Как номер паспорта у человека: имена и фамилии могут совпадать, а номер паспорта — нет. По ключу всегда можно ткнуть в ровно одну строку и не ошибиться. Поэтому в UPDATE products SET price = 600 WHERE id = 2 мы писали условие именно по id: так мы наверняка попадём в один товар, а не во все «кружки» сразу.

TIP

Хороший ключ обладает двумя свойствами: он уникален (у двух разных строк не бывает одинакового ключа) и он не пустой (у каждой строки ключ есть). Если эти два свойства выполняются, по ключу всегда можно безошибочно найти нужную строку.

Ключ связывает таблицы

Вспомни прошлый урок, где мы разделили один большой список на клиентов и заказы. В таблице заказов вместо телефона клиента мы поставили «ссылку на клиента». Теперь можно сказать точно: ссылка — это и есть ключ клиента, записанный внутри заказа.

Список клиентов:

client_idnamephone
1Анна8-900-111
2Борис8-900-222

Список заказов:

order_idclient_iditem
11Чайник
22Кружка
31Ложка

В заказах столбец client_id хранит не имя и не телефон, а ключ клиента — число 1 или 2. По этому числу всегда можно найти ровно одну строку в таблице клиентов и узнать имя и телефон. Заказы 1 и 3 ссылаются на client_id = 1 — значит, оба сделала Анна. Так ключ становится мостиком между двумя таблицами: телефон Анны по-прежнему хранится один раз, а заказы лишь указывают на неё ключом.

Ключ связывает заказ с клиентом
Заказ 3В строке заказа лежит client_id = 1 — ключ клиента, а не его имя и телефон.
ведёт к
Клиент 1Строка клиента с client_id = 1. Здесь имя и телефон хранятся ровно один раз.

Именно так в базах данных и устроены связи: не дублированием данных, а ссылкой по ключу. Мы будем разбирать это подробно, но интуицию полезно поймать уже сейчас.

Куда дальше

Теперь у нас есть общий словарь: таблица, строка, столбец, ключ, ссылка по ключу. Этого хватит, чтобы говорить о моделировании предметно.

Дальше курс выходит на новый уровень. Сначала мы научимся смотреть на задачу глазами модельера: находить в реальности сущности (клиент, заказ, товар — каждая станет таблицей) и связи между ними (у клиента много заказов, у заказа один клиент). Потом перейдём к строгой реляционной модели — формальному фундаменту, на котором стоят все реляционные базы данных, и к понятию ключа уже в полную силу. Те же таблица, строка и столбец получат точные определения, а интуиция «один факт — в одном месте» превратится в систему правил.

Первичные и внешние ключи в SQL

Попробуй сам

Вернись к двум таблицам (клиенты и заказы) из бумажного разбора прошлого урока — или составь новую пару, например список авторов и список книг. Для каждой таблицы выпиши: какой столбец служит ключом (по какому признаку строка опознаётся однозначно) и убедись, что значения этого столбца не повторяются. Затем найди столбец, который в одной таблице является ссылкой на ключ другой (как client_id в заказах), и покажи стрелкой на бумаге, к какой строке он ведёт. Наконец, объясни себе словами, почему хранить ссылку по ключу лучше, чем повторять имя и телефон в каждой строке. Сохрани разбор — это прямая разминка перед модулем про сущности и связи.


Проверка знанийKnowledge check
Что такое ключ таблицы, какими двумя свойствами он обладает, и как ключ помогает связать таблицу заказов с таблицей клиентов, не дублируя данные клиента?
ОтветAnswer
Ключ — это столбец (или несколько столбцов), значение которого однозначно опознаёт строку таблицы, как номер паспорта однозначно опознаёт человека. У хорошего ключа два свойства: он уникален (у двух разных строк не может быть одинакового значения ключа) и не пустой (у каждой строки ключ есть). Благодаря этому по значению ключа всегда можно найти ровно одну строку и не ошибиться. Связь между таблицами строится так: в таблице заказов вместо имени и телефона клиента хранится только ключ клиента (например, client_id). По этому ключу из строки заказа всегда можно перейти к ровно одной строке в таблице клиентов и оттуда узнать имя и телефон. При этом сами данные клиента (имя, телефон) хранятся ровно один раз — в таблице клиентов, а заказы лишь ссылаются на клиента ключом. Это и есть способ связать таблицы без дублирования: связь выражается ссылкой по ключу, а не повтором данных, поэтому при изменении телефона достаточно поправить одну строку.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 3. В таблице товаров есть строка (2, Кружка, 500). Как правильно соотнести слова таблица, строка и столбец с этими данными?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3