|
|||
Первичные ключи. Внешние ключи
Занятие 10 Тема: Отображение модели «сущность-связь» в базе данных. Понятие внешнего ключа и использование внешних ключей. Сущности в базе данных отображают в виде таблиц. Атрибуты сущностей – поля. Экземпляры сущностей - записи таблиц. Ключом или возможным ключом является минимальный набор атрибутов, по которым возможно однозначно найти необходимый экземпляр сущности. У каждой сущности должен быть хотя бы один возможный ключ. При ситуации, в которой из атрибутов сущности не получается создать возможный ключ (естественный ключ), создается суррогатный ключ – значение, которое автоматически генерируется и никаким образом не связано с содержанием сущности. Первичные ключи За первичный ключ принимается суррогатный ключ или один из естественных ключей. Первичным ключом предпочтительно должен быть несоставной ключ или ключ, составленный из минимального числа атрибутов. Не стоит также применять ключи, которые имеют длинные текстовые значения (лучше применять целочисленные атрибуты). Внешние ключи Если сущности А и В связывает сущность С, то она должна содержать внешние ключи, которые соответствуют первичным ключам сущностей А и В. Если сущность В характеризует сущность А, то она должна содержать внешний ключ, который соответствует первичному ключу сущности А. Для каждого из внешних ключей нужно получить ответы на 3 вопроса: 1-й вопрос: может ли значение данного внешнего ключа быть неопределенным (NULL-значением)? Например, при поставках такая ситуация невозможна – поставка неизвестного продукта или поставка, которая осуществляется неизвестным поставщиком, не имеет смысла. Но может существовать блюдо с неизвестным видом (горячее, суп и т.д.). 2-й вопрос: что должно произойти при УДАЛЕНИИ экземпляра сущности с первичным ключом, на который ссылается внешний ключ? Например, если удаляется поставщик, осуществивший хотя бы одну поставку, существует 3 варианта, при которых поставка: КАСКАДИРУЕТСЯ – удаляются все поставки данного поставщика. ОГРАНИЧИВАЕТСЯ – удаляются только не осуществлявшие поставок поставщики. В противном случае удаление отклоняется. УСТАНАВЛИВАЕТСЯ – для всех поставок данного поставщика значение внешнего ключа устанавливается в NULL (неопределенное), а после данный поставщик удаляется. Подобная возможность, естественно, не может быть применена, если внешний ключ не может содержать неопределенных значений (NULL). 3-й вопрос – какая операция должна выполняться при ОБНОВЛЕНИИ первичного ключа сущности, на который ссылается внешний ключ? Например, при попытке обновления номера поставщика, который выполнил хотя бы одну поставку возможны те же 3 варианта, что и при удалении:
|
|||
|