Типы взаимосвязей в модели
Используются связи, устанавливающие различные виды соответствия между объектами «связанных» типов, – «один к одному» (1:1), «один ко многим» (1:М), «многие ко многим» (М:М).
Связь «один к одному» означает, что каждому экземпляру первого объекта (А) соответствует только один экземпляр второго объекта (В) и наоборот, каждому экземпляру второго объекта (В) соответствует только один экземпляр первого объекта (А).
Связь «один ко многим» характеризуется тем, что каждому экземпляру одного объекта (А) может соответствовать несколько экземпляров другого объекта (В), а каждому экземпляру второго объекта (В) может соответствовать только один экземпляр первого объекта (А).
Связь «многие ко многим» означает, что каждому экземпляру одного объекта (А) могут соответствовать несколько экземпляров второго объекта (В) и наоборот, каждому экземпляру второго объекта (В) могут соответствовать тоже несколько экземпляров первого объекта (А).
Пример 1. Рассмотрим совокупность следующих информационных объектов:
СТУДЕНТ (Номер студента. Фамилия И.О., Дата рождения, Номер группы);
СТИПЕНДИЯ (Номер студента. Размер стипендии);
ГРУППА (Номер группы. Специальность);
ПРЕПОДАВАТЕЛЬ (Код преподавателя. Фамилия И.О., Должность).
Информационные объекты СТУДЕНТ и СТИПЕНДИЯ связаны отношением «один к одному», так как каждый студент может иметь только одну стипендию, и каждая стипендия может быть назначена только одному студенту.
Информационные объекты ГРУППА и СТУДЕНТ связаны отношением «один ко многим», так как одна группа может включать много студентов, и в то же время каждый студент может обучаться только в одной группе.
Информационные объекты СТУДЕНТ и ПРЕПОДАВАТЕЛЬ связаны отношением «многие ко многим», так как один студент может обучаться у многих преподавателей, и один преподаватель может обучать многих студентов.
Обеспечение непротиворечивости и целостности данных в базе
Для пользователей важно, чтобы база данных отображала предметную область однозначно и непротиворечиво, т. е. чтобы она удовлетворяла условию целостности.
Выделяют два основных типа ограничений по условию целостности:
1. Каждая строка таблицы должна отличаться от остальных ее строк значением хотя бы одного столбца.
2. Внешний ключ не может быть указателем на несуществующую строку той таблицы, на которую он ссылается. Это ограничение называется ограничением целостности по ссылкам.
Нормализация данных
Одни и те же данные могут группироваться в таблицы (отношения) различными способами. Группировка атрибутов в отношениях должна быть рациональной, т.е. минимизирующей дублирование данных и упрощающей процедуры их обработки и обновления. Устранение избыточности данных является одной из важнейших задач проектирования баз данных и обеспечиваетсянормализацией.
Нормализация таблиц (отношений) – это формальный аппарат ограничений на формирование таблиц (отношений), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение (ввод, корректировку) базы данных. Процесс нормализации заключается в разложении (декомпозиции) исходных отношений БД на более простые отношения. Каждая ступень этого процесса приводит схему отношений в последовательные нормальные формы. Для каждой ступени нормализации имеются наборы ограничений, которым должны удовлетворять отношения БД. Нормализация позволяет удалить из таблиц базы избыточную неключевую информацию.
Процесс нормализации основан на понятии функциональной зависимости атрибутов: атрибут А зависит от атрибута В (В->А), если в любой момент времени каждому значению атрибута В соответствует не более одного значения атрибута А.
Зависимость, при которой каждый неключевой атрибут зависит от всего составного ключа и не зависит от его частей, называется полной функциональной зависимостью. Если атрибут А зависит от атрибута В, а атрибут В зависит от атрибута С (С->В->А), но обратная зависимость отсутствует, то зависимость С от А называется транзитивной.
Общее понятие нормализации подразделяется на несколько «нормальных форм».
Информационный объект (или сущность) находится впервой нормальной форме (1НФ), когда все его атрибуты имеют единственное значение. Если в каком-либо атрибуте есть повторяющиеся значения, объект (сущность) не находится в 1НФ, и упущен еще по крайней мере один информационный объект (еще одна сущность).
Информационный объект находится во второй нормальной форме (2НФ), если он уже находится в первой нормальной форме, и каждый неидентифицирующий (описательный) атрибут зависит от всего уникального идентификатора информационного объекта. Если некий атрибут не зависит полностью от уникального идентификатора сущности, значит, он внесен ошибочно и должен быть удален. Нормализация в этом случае производится путем нахождения существующего информационного объекта, к которому данный атрибут относится, или созданием нового информационного объекта, в который атрибут должен быть помешен.
Информационный объект (или сущность) находится втретьей нормальной форме (ЗНФ), если он уже находится во второй нормальной форме и ни один описательный атрибут не зависит от каких-либо других описательных атрибутов. Атрибуты, зависящие от других неидентифицирующих атрибутов, нормализуются путем перемещения зависимого атрибута и атрибута, от которого он зависит, в новый информационный объект.
Язык запросов SQL
SQL (Structured Query Language) – это язык программирования, который используется при работе с реляционными базами данных в современных СУБД.
SQL стал стандартом языков запросов для работы с реляционными базами данных. SQL использует ограниченный набор команд, но в то же время – это реляционно-полный язык, предназначенный для работы с базами данных: создания запросов выборки данных, выполнения вычислений, обеспечения их целостности, создания и удаления таблиц, внесения и удаления данных.
Все операции по работе с данными в базе выполняются в виде транзакций. Транзакция – это группа операций, которая может быть выполнена либо полностью успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще. То есть, если в процессе какого-то действия происходит ошибка, то состояние базы откатывается к состоянию до начала выполнения этого действия.