Preparation Flashcards
Что такое избыточность данных в реляционной базе данных ?
Избыточность данных в реляционной базе данных - это наличие повторяющихся или излишних данных в таблицах базы данных, которые могут привести к неэффективности хранения данных и усложнению их обработки.
Например, если таблица содержит информацию о клиентах и каждая запись включает полное название компании клиента, то если несколько клиентов имеют одно и то же название компании, это приведет к повторению данных и увеличению размера таблицы. Лучше хранить название компании в отдельной таблице, которая связана с таблицей клиентов, используя уникальный идентификатор компании. Таким образом, можно избежать избыточности данных и сохранить только уникальные значения.
Избыточность данных может привести к медленной работе базы данных, необходимости большого объема хранилища и более сложной обработке запросов. Поэтому важно следить за тем, чтобы база данных была оптимизирована и не содержала избыточности данных.
Какие проблемы могут возникать при работе с избыточными данными ?
При работе с отношениями, содержащими избыточные данные,
могут возникать проблемы, которые называются аномалиями обновления и подразделяются на аномалии вставки, удаления и модификации
Аномалия вставки
Аномалия вставки - это ситуация, когда в базу данных невозможно вставить новую запись в таблицу из-за недостаточности информации или невозможности корректного заполнения данных. Это может произойти, когда в таблице отсутствуют обязательные поля, которые не могут быть пустыми, или когда внешние ключи не соответствуют значениям в связанной таблице.
Примеры аномалий вставки:
Таблица “Заказы”. Если в этой таблице нет обязательного поля “Код клиента” и его необходимо заполнить во время создания нового заказа, то может возникнуть аномалия вставки. Если этого поля нет, новый заказ невозможно будет добавить в таблицу, так как в этом случае не будет информации о том, какому клиенту он принадлежит.
Таблица “Сотрудники”. Если в этой таблице есть поле “Отдел”, которое является внешним ключом, связанным с таблицей “Отделы”, и в таблице “Отделы” нет записей, связанных с отделом нового сотрудника, то при попытке добавления нового сотрудника может возникнуть аномалия вставки.
Таблица “Студенты”. Если в этой таблице есть поля “Группа” и “Факультет”, и эти поля дублируются в каждой записи студента, то при изменении группы или факультета придется изменять соответствующие поля в каждой записи студента. Это может привести к трудностям в управлении данными и к возможности ошибок при обновлении записей.
Например, пусть у нас есть таблица “Студенты” со следующими столбцами: ID, Имя, Возраст и Группа. Предположим, что столбец “Группа” ссылается на другую таблицу “Группы”, содержащую список допустимых значений для групп студентов.
Теперь допустим, что мы пытаемся добавить новую запись в таблицу “Студенты” со значением группы, которой нет в таблице “Группы”. В этом случае возникнет ошибка вставки, так как нарушится ограничение внешнего ключа, связывающее таблицы “Студенты” и “Группы”.
Другой пример аномалии вставки может произойти, если в таблице есть столбец, значение которого не может быть пустым (например, столбец “Имя” в таблице “Студенты”). Если при вставке новой записи не указано значение для этого столбца, то возникнет ошибка вставки, так как оно не может быть пустым.
Аномалия удаления
Аномалия удаления - это ситуация, когда удаление определенной записи из таблицы базы данных приводит к потере других записей, которые связаны с ней. Это может произойти, когда удаляемая запись является единственным источником информации для других записей, или когда в базе данных не определены связи и ограничения целостности данных.
Примеры аномалий удаления:
Таблица “Клиенты”. Если в этой таблице есть запись, связанная с несколькими заказами, и эта запись была удалена, то все заказы, связанные с этим клиентом, будут потеряны. Это приведет к потере данных и может повлиять на работу приложения, использующего эти данные.
Таблица “Статьи”. Если в этой таблице есть запись, связанная с несколькими комментариями, и эта запись была удалена, то все комментарии, связанные со статьей, будут потеряны. Это может повлиять на обсуждение статьи и может привести к негативным последствиям для сайта или приложения.
Таблица “Заказы”. Если в этой таблице есть запись, связанная с несколькими товарами, и эта запись была удалена, то все товары, связанные с заказом, будут потеряны. Это может привести к учетным ошибкам и недостоверности данных о продажах и запасах.
Во всех этих случаях важно определить связи и ограничения целостности данных, чтобы избежать аномалий удаления и сохранить целостность данных в базе данных.
Аномалии модификации
Аномалии модификации - это ситуации, когда модификация данных в таблице базы данных приводит к нежелательным результатам, таким как потеря данных, дублирование данных или недостоверность информации. Это может произойти, когда в базе данных отсутствуют связи и ограничения целостности данных или когда они определены неправильно.
Примеры аномалий модификации:
Дублирование данных. Если в базе данных есть таблица “Заказы” и “Клиенты”, и информация о клиенте дублируется в каждой записи заказа, то при изменении информации о клиенте придется изменять каждую запись заказа. Это может привести к ошибкам и недостоверности данных.
Недостоверность данных. Если в базе данных есть таблица “Продукты” и “Заказы”, и информация о продукте изменяется в таблице “Продукты”, но не изменяется в таблице “Заказы”, то данные в таблице “Заказы” станут недостоверными. Это может привести к ошибкам в учете продаж и запасов.
Потеря данных. Если в базе данных есть таблица “Заказы” и “Клиенты”, и запись о клиенте была удалена, то все заказы, связанные с этим клиентом, будут потеряны. Это приведет к потере данных и может повлиять на работу приложения, использующего эти данные.
Во всех этих случаях важно определить связи и ограничения целостности данных, чтобы избежать аномалий модификации и сохранить целостность данных в базе данных.
Как бороться с аномалиями ? Какие свойства с этим связаны ?
Декомпозиции первоначального отношения на отношения
Staff и Branch. С декомпозицией крупного отношения на более мелкие связаны два
важных свойства. Во-первых, свойство соединения без потерь гарантирует, что любой экземпляр первоначального отношения может быть определен с помощью соответствующих экземпляров более мелких отношений. Во-вторых, свойство сохранения зависимостей гарантирует, что ограничения на первоначальное отношение можно поддерживать, просто применяя такие же ограничения к каждому из более
мелких отношений. Иными словами, для проверки того, не нарушается ли ограничение, которое распространялось на первоначальное отношение, нет необходимости
выполнять операции соединения на более мелких отношениях.
Функциональная зависимость
Функциональная зависимость - это связь между двумя атрибутами в таблице базы данных, когда значение одного атрибута однозначно определяет значение другого атрибута. Другими словами, функциональная зависимость описывает, как один атрибут зависит от другого.
Функциональная зависимость может быть обозначена как X → Y, где X и Y - множества атрибутов в таблице. Значение атрибута X называется определяющим, а значение атрибута Y - определяемым.
Примеры функциональных зависимостей:
В таблице “Клиенты” атрибут “ID клиента” функционально зависит от атрибута “Имя клиента”. То есть, если мы знаем имя клиента, мы можем однозначно определить его ID.
В таблице “Заказы” атрибуты “ID заказа” и “ID клиента” функционально зависят друг от друга. То есть, если мы знаем ID заказа, мы можем однозначно определить ID клиента, и наоборот.
В таблице “Продукты” атрибут “Цена” функционально зависит от атрибута “Код продукта”. То есть, если мы знаем код продукта, мы можем однозначно определить его цену.
Функциональные зависимости играют важную роль в проектировании базы данных, так как они помогают установить связи между таблицами и определить ключи таблиц. Кроме того, функциональные зависимости используются для определения нормализации таблиц и обеспечения целостности данных в базе данных.
Что такое нормализация ?
Нормализация — это формальный метод анализа отношений на основе их
первичного ключа (или потенциальных ключей) и существующих функциональных зависимостей [68]. Он включает ряд правил, которые могут использоваться
для проверки отдельных отношений таким образом, чтобы вся база данных могла быть нормализована до желаемой степени. Если некоторое требование не
удовлетворяется, то противоречащее данному требованию отношение должно
быть разделено на отношения, каждое из которых (в отдельности) удовлетворяет
всем требованиям нормализации.
Ненормальная форма
Ненормализованная форма (ННФ). Таблица, содержащая одну или несколько
повторяющихся групп данных.
Первая нормальная форма
Первая нормальная форма (1НФ). Отношение, в котором на пересечении каждой строки и каждого столбца содержится одно и только одно значение.
два способа исключения повторяющихся групп из ненормализованных таблиц
1.При первом способе повторяющиеся группы устраняются путем ввода соответствующих данных в пустые столбцы строк с повторяющимися данными.
Иначе говоря, пустые места при этом заполняются дубликатами неповторяющихся данных. Этот способ часто называют “выравниванием”
(“flattening”) таблицы. Полученная в результате этих действий таблица, которая теперь будет называться отношением, содержит элементарные (или
единственные) значения на пересечении каждой строки с каждым столбцом и
поэтому находится в первой нормальной форме. В результате применения
такого способа в полученное отношение вносится определенная избыточность
данных, которая в ходе дальнейшей нормализации будет устранена.
2. При втором способе один атрибут или группа атрибутов назначаются ключом
ненормализованной таблицы, а затем повторяющиеся группы изымаются и
помещаются в отдельные отношения вместе с копиями ключа исходной таблицы. Далее в новых отношениях устанавливаются свои первичные ключи.
Иногда ненормализованная таблица может содержать несколько повторяющихся групп или включать повторяющиеся группы, содержащиеся в других
повторяющихся группах. В таких случаях данный прием применяется до тех
пор, пока повторяющихся групп совсем не останется. Полученный набор отношений будет находиться в первой нормальной форме только тогда, когда
ни в одном из них не будет повторяющихся групп атрибутов.