Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Легкость разработки и сопровождения базы данныхСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Практически любая база данных, за исключением совершенно элементарных, содержит некоторое количество программного кода в виде триггеров и хранимых процедур, о которых речь пойдет ниже, когда перейдем непосредственно к вопросам изучения языка SQL.
Одно из назначений базы данных - предоставление информации пользователям. Информация извлекается из реляционной базы данных при помощи оператора SQL - SELECT. Одной из наиболее дорогостоящих операций при выполнении оператора SELECT является операция соединение таблиц. Таким образом, чем больше взаимосвязанных отношений было создано в ходе логического моделирования, тем больше вероятность того, что при выполнении запросов эти отношения будут соединяться, и, следовательно, тем медленнее будут выполняться запросы. Таким образом, увеличение количества отношений приводит к замедлению выполнения операций выборки данных, особенно, если запросы заранее неизвестны. Нормализация и ее необходимость Основной пример Рассмотрим в качестве предметной области, как и ранее, «Университет». Модель предметной области опишем следующим неформальным текстом: –Сотрудники университета читают дисциплины; –Дисциплины состоят из нескольких видов занятий; –Каждый сотрудник может читать одну или несколько дисциплин, или временно не читать (что бывает крайне редко); –Каждую дисциплину может вести несколько сотрудников (разные виды занятий), или временно/на всегда дисциплину исключают из учебного плана, тогда ее не ведет никто из сотрудников. –Каждое занятие ведет ровно один сотрудник; –Каждый сотрудник принадлежит одной кафедре; –Каждый сотрудник имеет телефон, находящийся на кафедре сотрудника. В ходе дополнительного уточнения того, какие данные необходимо учитывать, можно выделить следующее: –О каждом сотруднике необходимо хранить табельный номер и фамилию. Табельный номер является уникальным для каждого сотрудника. –Каждая кафедра имеет уникальный номер; –Каждая дисциплина имеет номер и наименование. Номер проекта дисциплины является уникальным; –Каждый вид занятий в своей дисциплине имеет обозначение, уникальное в пределах проекта. Работы в разных дисциплинах могут иметь одинаковые обозначения. Таблица 30 Первоначальная таблица отношения «Университет» (универсальная таблица)
Аномалии при работе с таблицами Очевидно, что такое представление не является самым эффективным. Т.к. скажем телефон и название кафедры надо будет вводить от раза к разу. Не исключено, что при этом будут возникать ошибки (опечатки) при вводе. Например, «ИСИМ»–«ИЗИМ» и т.п. С точки зрения пользователя это будут одинаковые записи, или по крайней мере он так будет думать. Однако при обработке данных (таблиц) это уже будут разные кафедры (телефоны, сотрудники и т.д.). Кроме того, при удалении какой либо записи (кортежа)возможно будут потери информации. Например, при увольнении «Алешкина», его необходимо удалить из таблицы. Очевидным образом потеряются и сведения о соответствующих дисциплинах. Если же, этот человек перейдет на другую кафедру, то о нем надо будет вводить всю информацию заново. Т.о. при работе с универсальными таблицами есть существенная проблема - Проблема избыточности данных. Т.е. данные практически всех столбцов многократно повторяются. Это видно; Как следствие этой проблемы выделяется 3 аномалии Аномалии вставки (INSERT) В отношение «Университет » нельзя вставить данные о сотруднике, который пока не ведет ни одну дисциплину (занятие). Действительно, если, например, на кафедре «ИЗИ» появляется новый сотрудник, Пушкин, и он пока не читает ни одну дисциплину, то мы должны вставить в отношение кортеж <ИЗИ, 317442,, null, null, Пушкин>. Это сделать невозможно, т.к. атрибуты Caf, Disp, Cat входит в состав потенциального ключа, и, следовательно, не может содержать null-значений. Точно также нельзя вставить данные о новой кафедре. Причина аномалии - хранение в одном отношении разнородной информации (и о сотрудниках, и о дисциплинах, и о видах занятий). Вывод - логическая модель данных неадекватна модели предметной области. БД, основанная на такой модели, будет работать некорректно. Аномалии обновления (UPDATE) Фамилии сотрудников, наименования дисциплин, номера телефонов повторяются во многих кортежах отношения. Поэтому если сотрудник меняет фамилию, или дисциплина меняет наименование, или меняется номер телефона, то такие изменения необходимо одновременно выполнить во всех местах, где эта фамилия, наименование или номер телефона встречаются, иначе отношение станет некорректным (например, одна и та же дисциплина в разных кортежах будет называться по-разному). Т.о., обновление БД одним действием реализовать невозможно. Причина аномалии - избыточность данных, также порожденная тем, что в одном отношении хранится разнородная информация. Вывод - увеличивается сложность разработки базы данных. База данных, основанная на такой модели, будет работать правильно только при наличии дополнительного программного кода. Аномалии удаления (DELETE) При удалении некоторых данных может произойти потеря другой информации. Например, если закрыть кафедру "ИСИМ" и удалить все строки, в которых она упоминается, то будут потеряны все данные о дисциплине «ЗИ» и частично о сотруднике «Алешкине» и т.п. Причина аномалии - хранение в одном отношении разнородной информации (и о сотрудниках, и о дисциплинах, и о кафедрах). Вывод - логическая модель данных неадекватна модели предметной области. БД, основанная на такой модели, будет работать неправильно. Теория нормализации Для предотвращения указанных проблем необходимо использовать нормализацию. Нормализация таблиц это формальный аппарат ограничений на формирование таблиц, описывающий разбиение таблиц на две или более части и обеспечивающий применение лучших методов добавление, изменения и удаления данных. Можно также сказать, что нормализация – это процесс представления данных в виде простых двумерных таблиц, который позволяет устранить дублирование этих данных и обеспечивает непротиворечивость хранимой в базе информации. >> Цель нормализации – получение проекта БД, в котором любая часть логически законченной информации хранится в одном месте, т.е. исключается избыточность информации. Основа нормализации – аппарат нормализации отношений. Всего существует 6 форм нормальных отношений. Но, как правило, необходимо и достаточно привести БД к третьей нормальной форме, чтобы исключить указанные аномалии при работе с БД. Таблица считается нормализованной на определенном уровне, когда она удовлетворяет условиям, накладываемым соответствующей формой нормализации. Формы нормализации:
Теория нормализации основывается на наличии той или иной зависимости между атрибутами отношения. Виды зависимостей: Функциональные зависимости Для устранения указанных аномалий (а на самом деле для правильного проектирования модели данных!) применяется метод нормализации отношений. Нормализация основана на понятии функциональной зависимости атрибутов отношения^ 1) Пусть R - отношение. Множество атрибутов Y функционально зависимо от множества атрибутов X (X функционально определяет Y) тогда и только тогда, когда для любого состояния отношения R для любых кортежей r1,r2Î R из того, что r1X=r2X следует что r1Y=r2Y (т.е. во всех кортежах, имеющих одинаковые значения атрибутов X, значения атрибутов Y также совпадают в любом состоянии отношения R). Символически функциональная зависимость записывается X ® Y. Замечание. Если атрибуты X составляют потенциальный ключ отношения R, то любой атрибут отношения R функционально зависит от X. Пример. В отношении Университет можно привести следующие примеры функциональных зависимостей: {Caf} ® Phone { Disp } ® Cat Замечание. Приведенные функциональные зависимости не выведены из внешнего вида отношения, приведенного в таблице 30. Эти зависимости отражают взаимосвязи, обнаруженные между объектами предметной области и являются дополнительными ограничениями, определяемыми предметной областью. Таким образом, функциональная зависимость - семантическое понятие. Она возникает, когда по значениям одних данных в предметной области можно определить значения других данных. Например, зная табельный номер сотрудника, можно определить его фамилию, по номеру отдела можно определить телефона. Функциональная зависимость задает дополнительные ограничения на данные, которые могут храниться в отношениях. Для корректности базы данных (адекватности предметной области) необходимо при выполнении операций модификации базы данных проверять все ограничения, определенные функциональными зависимостями. На самом деле, функциональной зависимостью между атрибутами A и B в обычном понятии можно выразить еще и так: атрибут A функционально зависим от B тогда, когда каждому значению A в любой момент соответствует единственное значение B из всех возможных.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 428; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.7.103 (0.007 с.) |