Типы взаимосвязей в модели

Используются связи, устанавливающие раз­личные виды соответствия между объектами «связанных» типов, – «один к одному» (1:1), «один ко многим» (1:М), «многие ко мно­гим» (М:М).

Связь «один к одному» означает, что каждому экземпляру пер­вого объекта (А) соответствует только один экземпляр второго объ­екта (В) и наоборот, каждому экземпляру второго объекта (В) соот­ветствует только один экземпляр первого объекта (А).

Связь «один ко многим» характеризуется тем, что каждому эк­земпляру одного объекта (А) может соответствовать несколько эк­земпляров другого объекта (В), а каждому экземпляру второго объ­екта (В) может соответствовать только один экземпляр первого объ­екта (А).

Связь «многие ко многим» означает, что каждому экземпляру одного объекта (А) могут соответствовать несколько экземпляров второго объекта (В) и наоборот, каждому экземпляру второго объек­та (В) могут соответствовать тоже несколько экземпляров первого объекта (А).

Пример 1. Рассмотрим совокупность следующих информаци­онных объектов:

СТУДЕНТ (Номер студента. Фамилия И.О., Дата рождения, Номер группы);

СТИПЕНДИЯ (Номер студента. Размер стипендии);

ГРУППА (Номер группы. Специальность);

ПРЕПОДАВАТЕЛЬ (Код преподавателя. Фамилия И.О., Должность).

Информационные объекты СТУДЕНТ и СТИПЕНДИЯ связаны отношением «один к одному», так как каждый студент может иметь только одну стипендию, и каждая стипендия может быть назначена только одному студенту.

Информационные объекты ГРУППА и СТУДЕНТ связаны от­ношением «один ко многим», так как одна группа может включать много студентов, и в то же время каждый студент может обучаться только в одной группе.

Информационные объекты СТУДЕНТ и ПРЕПОДАВАТЕЛЬ связаны отношением «многие ко многим», так как один студент мо­жет обучаться у многих преподавателей, и один преподаватель мо­жет обучать многих студентов.

Обеспечение непротиворечивости и целостности данных в базе

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

Выделяют два основных типа ограничений по условию целост­ности:

1. Каждая строка таблицы должна отличаться от остальных ее строк значением хотя бы одного столбца.

2. Внешний ключ не может быть указателем на несуществую­щую строку той таблицы, на которую он ссылается. Это ограниче­ние называется ограничением целостности по ссылкам.

 

Нормализация данных

Одни и те же данные могут группироваться в таблицы (отноше­ния) различными способами. Группировка атрибутов в отношениях должна быть рациональной, т.е. минимизирующей дублирование данных и упрощающей процедуры их обработки и обновления. Уст­ранение избыточности данных является одной из важнейших задач проектирования баз данных и обеспечиваетсянормализацией.

Нормализация таблиц (отношений) – это формальный аппа­рат ограничений на формирование таблиц (отношений), который позволяет устранить дублирование, обеспечивает непротиворечи­вость хранимых в базе данных, уменьшает трудозатраты на веде­ние (ввод, корректировку) базы данных. Процесс нормализации заключается в разложении (декомпозиции) исходных отношений БД на более простые отношения. Каждая ступень этого процесса приводит схему отношений в последовательные нормальные фор­мы. Для каждой ступени нормализации имеются наборы ограни­чений, которым должны удовлетворять отношения БД. Нормали­зация позволяет удалить из таблиц базы избыточную неключевую информацию.

Процесс нормализации основан на понятии функциональной зависимости атрибутов: атрибут А зависит от атрибута В (В->А), если в любой момент времени каждому значению атрибута В соот­ветствует не более одного значения атрибута А.

Зависимость, при которой каждый неключевой атрибут зависит от всего составного ключа и не зависит от его частей, называется полной функциональной зависимостью. Если атрибут А зависит от ат­рибута В, а атрибут В зависит от атрибута С (С->В->А), но обрат­ная зависимость отсутствует, то зависимость С от А называется транзитивной.

Общее понятие нормализации подразделяется на несколько «нормальных форм».

Информационный объект (или сущность) находится впервой нормальной форме (1НФ), когда все его атрибуты имеют единствен­ное значение. Если в каком-либо атрибуте есть повторяющиеся зна­чения, объект (сущность) не находится в 1НФ, и упущен еще по крайней мере один информационный объект (еще одна сущность).

Информационный объект находится во второй нормальной фор­ме (2НФ), если он уже находится в первой нормальной форме, и ка­ждый неидентифицирующий (описательный) атрибут зависит от всего уникального идентификатора информационного объекта. Если некий атрибут не зависит полностью от уникального иденти­фикатора сущности, значит, он внесен ошибочно и должен быть удален. Нормализация в этом случае производится путем нахожде­ния существующего информационного объекта, к которому данный атрибут относится, или созданием нового информационного объек­та, в который атрибут должен быть помешен.

Информационный объект (или сущность) находится втретьей нормальной форме (ЗНФ), если он уже находится во второй нор­мальной форме и ни один описательный атрибут не зависит от ка­ких-либо других описательных атрибутов. Атрибуты, зависящие от других неидентифицирующих атрибутов, нормализуются путем пе­ремещения зависимого атрибута и атрибута, от которого он зависит, в новый информационный объект.

 

Язык запросов SQL

SQL (Structured Query Language) – это язык программирования, который используется при работе с реляционными базами данных в современных СУБД.

SQL стал стандартом языков запросов для работы с реляционными базами данных. SQL использует ограниченный набор команд, но в то же время – это реляционно-полный язык, предназначенный для работы с базами данных: создания запросов выборки данных, выполнения вычислений, обеспечения их целостности, создания и удаления таблиц, внесения и удаления данных.

Все операции по работе с данными в базе выполняются в виде транзакций. Транзакция – это группа операций, которая может быть выполнена либо полностью успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще. То есть, если в процессе какого-то действия происходит ошибка, то состояние базы откатывается к состоянию до начала выполнения этого действия.