Раздел 10 · Databases

Слабые сущности и идентификаторы

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В прошлом уроке мы перевели почти всю онлайн-школу в таблицы. Осталась одна сущность, которая не влезла в правила: урок курса. У него есть номер, но номер «3» встречается и в курсе SQL, и в курсе Python. Сам по себе он ничего не опознаёт. Этот урок про такие сущности: как их узнать на диаграмме и как хранить в таблицах.

Квартира 15

Скажи почтальону «отнеси в квартиру 15», и он спросит: «в каком доме?» Квартир с номером 15 в городе тысячи. Номер квартиры опознаёт её только вместе с домом: «Ленина 8, квартира 15».

Квартира это классическая слабая сущность. У неё нет своего ключа, она опознаётся только через другую сущность, дом. Дом называют владельцем. Сущности с собственным ключом, вроде дома или студента, называют сильными.

У слабой сущности есть два признака:

  1. Нет собственного ключа. Её атрибуты в одиночку не опознают экземпляр.
  2. Без владельца не существует. Снесли дом, исчезли и его квартиры. Удалили курс, его уроки потеряли смысл.

Частичный ключ

Номер квартиры всё-таки не бесполезен: внутри одного дома он уникален. Такой атрибут называют частичным ключом, или дискриминатором. Полный ключ слабой сущности собирается из двух частей:

ключ владельца + частичный ключ = полный ключ
адрес дома     + номер квартиры = «Ленина 8, кв. 15»
id курса       + номер урока    = «курс 7, урок 3»

Связь между слабой сущностью и владельцем называют идентифицирующей: она не просто связывает, а участвует в опознании.

Как это рисуют

В нотации Чена слабую сущность обводят двойной рамкой, идентифицирующую связь двойным ромбом, а частичный ключ подчёркивают пунктиром. В «вороньей лапке» отдельного значка нет, слабость видно по ключу: ключ владельца входит в первичный ключ слабой сущности.

┌──────────┐            ╔══════════════╗
│   Курс   ├┼─────────○<║     Урок     ║
└──────────┘ состоит из ╚══════════════╝
   id                    номер (частичный ключ)
   название              тема

Сравни с сильной сущностью «студент»: у студента свой ключ, почта, и он существует без курсов.

дальше после входа

Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.

Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.