Введение

Тип элемента в реляционной базе данных, в информатике.
В реляционной базе данных слабая сущность – это сущность, которая не может быть однозначно идентифицирована только своими атрибутами; поэтому она должна использовать внешний ключ в сочетании со своими атрибутами для создания первичного ключа. Внешний ключ обычно является первичным ключом сущности, с которой она связана. Внешний ключ является атрибутом идентифицирующего (или владельческого, родительского, доминирующего) набора сущностей. Каждый элемент в наборе слабых сущностей должен иметь отношение ровно к одному элементу в наборе сущностей-владельцев, и, следовательно, отношение не может быть отношением "многие ко многим". Две сущности могут быть связаны, не будучи классифицированы как слабые, даже если одна зависит от другой, пока каждая имеет свой уникальный атрибут. Например, сущность "человек" может быть связана с сущностью "автомобиль", не считая ни одну из них слабой сущностью. На диаграммах "сущность-связь" (ER-диаграммах) набор слабых сущностей обозначается жирным (или двойным) прямоугольником (сущность), соединенным жирной (или двойной) стрелкой с жирным (или двойным) ромбом (отношение). Этот тип отношения называется идентифицирующим отношением, и в нотации IDEF1X он представлен овальной, а не квадратной сущностью для базовых таблиц. Идентифицирующее отношение – это отношение, в котором первичный ключ передается дочерней слабой сущности в качестве первичного ключа в этой сущности. В общем случае (хотя и не обязательно) слабая сущность не имеет в своем первичном ключе никаких элементов, кроме унаследованного первичного ключа и порядкового номера. Существует два типа слабых сущностей: ассоциативные сущности и сущности подтипов. Последнее представляет собой важный тип нормализации, когда сущность супертипа наследует свои атрибуты сущностям подтипа на основе значения дискриминатора. В IDEF1X, государственном стандарте для фиксации требований, возможны следующие отношения подтипов: Полное отношение подтипов, когда все категории известны. Неполное отношение подтипов, когда не все категории могут быть известны. Классическим примером слабой сущности без отношения подтипа являются записи "заголовок/детали" во многих реальных ситуациях, таких как претензии, заказы и счета-фактуры, где заголовок содержит информацию, общую для всех форм, а детали – информацию, специфичную для отдельных элементов. Стандартным примером полного отношения подтипа является сущность "сторона". Учитывая дискриминатор "ТИП СТОРОНЫ" (который может быть физическим лицом, партнерством, корпорацией, ассоциацией, правительственным учреждением, квази-правительственным агентством), два подтипа сущностей – это "ЛИЦО", которое содержит информацию, специфичную для физического лица, такую как имя, фамилия и дата рождения, и "ОРГАНИЗАЦИЯ", которая будет содержать такие атрибуты, как юридическое название и организационные иерархии, такие как центры затрат. Когда отношения подтипов отображаются в базе данных, супертип становится так называемой базовой таблицей. Подтипы рассматриваются как производные таблицы, которые соответствуют слабым сущностям. Референциальная целостность обеспечивается посредством каскадных обновлений и удалений.

Пример

Рассмотрим базу данных, в которой регистрируются заказы клиентов, где заказ включает в себя один или несколько товаров, продаваемых предприятием. База данных будет содержать таблицу, идентифицирующую клиентов по номеру клиента (первичный ключ); другую таблицу, идентифицирующую продукты, доступные для продажи, по номеру продукта (первичный ключ); и пару таблиц, описывающих заказы. Одна из таблиц может называться "Заказы", она будет иметь номер заказа (первичный ключ) для уникальной идентификации заказа и содержать номер клиента (внешний ключ) для указания покупателя, а также другую информацию, такую как дата и время размещения заказа, способ оплаты, адрес доставки и т.д. Другая таблица может называться "ДеталиЗаказа"; она будет идентифицироваться составным ключом, состоящим из номера заказа (внешний ключ) и номера позиции в заказе, а также другими атрибутами, не являющимися ключами, такими как номер продукта (внешний ключ), количество, цена, скидка, специальные опции и т.д. Для каждой записи в таблице "Заказы" может быть ноль, один или несколько соответствующих записей в таблице "ДеталиЗаказа", но запись в "ДеталиЗаказа" не может существовать без соответствующей записи в "Заказах". (Случай с нулем записей обычно возникает временно, при первом вводе заказа и до добавления первой позиции). Таблица "ДеталиЗаказа" хранит слабые сущности, поскольку позиция в заказе не имеет смысла без привязки к заказу. Некоторые могут утверждать, что позиция в заказе имеет самостоятельное значение, так как фиксирует факт заказа определенного количества определенного продукта в некий момент времени. Эта информация может быть полезна сама по себе, но ее ценность ограничена. Например, для выявления сезонных или географических тенденций продаж конкретного товара потребуется информация из соответствующей записи заказа. Заказ не может существовать без продукта и клиента, поэтому можно утверждать, что заказ является слабой сущностью, а заказанные продукты – многозначным атрибутом заказа.