
- •Базы данных: основные понятия и определения. Требования, предъявляемые к базам данных
- •Выбор хранимых данных
- •Реляционная модель данных
- •Реляционная алгебра
- •Операция выборка
- •Операция проекция
- •Операция естественное соединение
- •Операция соединение по условию (θ – соединение)
- •Операция деления
- •Методология проектирования баз данных. Основные задачи проектирования баз данных
- •Основные этапы проектирования баз данных
- •Концептуальное (инфологическое) проектирование бд
- •Логическое (даталогическое) проектирование бд
- •Принципы и средства структурного подхода к разработке по
- •Методология структурного анализа и проектирования sadt
- •Диаграммы потоков данных: внешние сущности, системы и подсистемы, процессы, хранилища данных, потоки данных. Нотация Гейна – Сарсона
- •Сравнительный анализ sadt-моделей и диаграмм потоков данных
- •Функциональные модели, используемые на стадии проектирования
- •14. Методология моделирования idef3: составные элементы, объекты ссылок, перекрестки.
- •15. Подходы к моделированию в базах данных
- •16. Анализ предметной области. Описание объектов и их свойств. Связи между элементами моделей данных. Описание сложных объектов
- •17. Проблема целостности базы данных
- •18. Даталогическое проектирование. Нотация Питера Чена. Нотация idef 1х
- •Нотация Питера Чена.
- •Нотация idef 1x
- •19. Проектирование реляционных баз данных на основе принципов нормализации. Правила технической нормализации
- •20. Алгоритм процесса нормализации схем отношений
- •21. Нормализация. Функциональная зависимость. Первая, вторая, нормальные формы
- •22. Нормализация. Функциональная зависимость. Третья нормальная форма
- •23. Нормализация. Функциональная зависимость. Нормальная форма Бойса – Кодда
- •24. Разработка реляционных баз данных на основе принципов нормализации
- •25. Основные аксиомы Армстронга. Замыкание
- •26. Нормальные формы высших порядков
- •27. Методологии проектирования
- •28. Инфологическое моделирование данных: модель «сущность-связь»
- •29. Принципы поддержки целостности в реляционной модели данных
- •30. Моделирование данных. Метод Баркера
- •31. Моделирование данных. Метод idef1x
- •32. Case-средство для концептуального моделирования данных на стадии формирования требований к ис – Silverrun
- •33. Нормализация. Функциональная зависимость. Первая, вторая, третья нормальные формы. Нормальная форма Бойса – Кодда
- •34. Инструментальные средства моделирования. Проектирование баз данных с использованием са erWin Data Modeler (erWin)
- •35. Алгоритм перехода от er – модели к реляционной схеме данных
- •36. Основные принципы объектно-ориентированного моделирования
- •37. Сущность методологии объектно-ориентированного анализа и проектирования
- •38. Язык объектного моделирования uml. Виды диаграмм uml. Последовательность построения диаграмм
- •Диаграмма состояний
- •Диаграмма последовательностей
- •Диаграмма активности
- •39. Модель прецедентов (вариантов использования, use-cases)
- •40. Моделирование статической структуры системы с помощью диаграммы классов: стереотипы классов
- •41. Моделирование статической структуры системы с помощью диаграммы классов: механизм пакетов
- •42. Моделирование статической структуры системы с помощью диаграммы классов: атрибуты
- •43. Моделирование статической структуры системы с помощью диаграммы классов: основные и вспомогательные операции
- •44. Моделирование статической структуры системы с помощью диаграммы классов: типы связей
- •45. Инкапсуляция, наследование, полиморфизм
- •46. Моделирование поведения системы
- •47. Использование диаграммы последовательностей для упорядочивания сообщений во времени
- •48. Использование диаграммы кооперации для описания структурной организации объектов
- •49. Моделирование физических аспектов функционирования системы с помощью диаграмм развертывания
- •50. Особенности построения физической модели базы данных
- •51. Ограничения ссылочной целостности
- •52. Моделирование процессов обработки данных
- •53. Индексирование
- •54. Методы совместного доступа к базам данных
- •55. Транзакции и блокировки
- •56. Типы параллелизма
- •57. Свойства транзакций. Способы завершения транзакций
- •58. Проблемы параллельного выполнения транзакций
- •59. Методы сериализации транзакций. Механизм блокировок. Типы конфликтов
- •60. Правила совместимости захватов. Проблема тупиковых ситуаций и ее решение
- •61. Уровни изолированности пользователей
- •62. Гранулированные синхронизационные захваты
- •63. Метод временных меток
- •64. Предикатные синхронизационные захваты
20. Алгоритм процесса нормализации схем отношений
Процесс проектирования с использованием декомпозиции - процесс последовательной нормализации схем отношений, при этом каждая последующая итерация соответствует нормальной форме более высокого уровня и обладает лучшими свойствами по сравнению с предыдущей.
В теории реляционных БД выделяется последовательность:
- первая нормальная форма (1NF);
- вторая нормальная форма (2NF);
- третья нормальная форма (3NF);
- нормальная форма Бойса-Кодда (ВСNF);
- четвертая нормальная форма (4NF);
- пятая нормальная форма / форма проекции-соединения (5NF).
Алгоритм нормализации предполагает последовательную проверку БД на соответствии каждой нормальной форме. На практике, начиная с 4-ой нормальной формы плюсы нормализации заканчиваются, т.к. появляется большое количество таблиц, что приводит к снижению эффективности работы БД и повышенному потреблению памяти.
Декомпозиция должна сохранять эквивалентность схем БД при замене одной схемы на другую.
Основные свойства нормальных форм:
каждая следующая нормальная форма улучшает свойства предыдущей;
при переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются.
21. Нормализация. Функциональная зависимость. Первая, вторая, нормальные формы
Функциональная зависимость — это связь, которая может возникнуть между сущностями, хранящимися в БД. Если сущность A функционально определяет сущность B, то такую зависимость принято обозначать следующим образом:
,
где A - детерминант отношения (атрибут или набор атрибутов, от которых зависит другой атрибут, если в отношении существует несколько функциональных зависимостей)
B - зависимая часть
Пример. Пусть дано отношение, которое определяет должностные оклады работников некоторого предприятия.
В вышеприведенной таблице оклад работника определяется должностью, которую он занимает. Если работник переходит на другую должность, то меняется и его оклад. Атрибут Должность функционально определяет атрибут Оклад.
Различают следующие степени функциональной зависимости между атрибутами:
частичная зависимость. Эта зависимость может возникать в случаях, когда таблица содержит составной ключ. Составной ключ — это ключ таблица, который состоит из нескольких атрибутов. Если ключ состоит из одного атрибута, то этот ключ является простым. При частичной зависимости один атрибут таблицы является зависимым от части ключа, т.е. от отдельного атрибута, входящего в ключ отношения;
полная зависимость. Это случай, когда между атрибутами существует зависимость друг от друга;
транзитивная зависимость. Это зависимость, когда два атрибута связаны между собой через третий атрибут. Этот третий атрибут выступает посредником;
Первая нормальная форма (1NF)
Таблицы должны соответствовать реляционной модели данных и соблюдать определенные реляционные принципы:
в таблице не должно быть дублирующих строк;
в каждой ячейке таблицы хранится атомарное значение (одно не составное значение);
в столбце хранятся данные одного типа;
отсутствуют массивы и списки в любом виде.
Таблица сотрудников в ненормализованном виде:
Таблица сотрудников в первой нормальной форме:
Вторая нормальная форма (2NF)
Требования ко второй нормальной форме:
таблица должна находится в 1NF;
таблица должна иметь ключ;
все неключевые столбцы таблицы должны зависеть от полного ключа (в случае, если ключ составной). Иными словами, отношение не содержит неполных функциональных зависимостей не первичных атрибутов от атрибутов первичного ключа
Таблица сотрудников в 1NF:
Поработав немного с предметной областью, мы выясняем, что в этой организации каждому сотруднику присваивается уникальный табельный номер, который никогда не будет изменен.
Поэтому очевидно, что для таблицы, которая будет хранить список сотрудников, первичным ключом может выступать табельный номер, зная который мы можем четко идентифицировать каждого сотрудника, т.е. каждую строку нашей таблицы. Если бы такого табельного номера у нас не было или в рамках организации он мог повторяться (например, сотрудник уволился, и спустя время его номер присвоили новому сотруднику), то для первичного ключа мы могли бы создать искусственный ключ с целочисленным типом данных, который автоматически увеличивался бы в случае добавления новых записей в таблицу. Тем самым мы бы точно также четко идентифицировали каждую строку в таблице.
Таким образом, чтобы привести эту таблицу ко второй нормальной форме, мы должны добавить в нее еще один атрибут, т.е. столбец с табельным номером.
Таблица сотрудников во второй нормальной форме с простым первичным ключом:
Таблица проектов организации в 1NF:
Посмотрев на эту таблицу, мы понимаем, что четко идентифицировать каждую строку мы можем только с помощью комбинации столбцов, например, «Название проекта» + «Участник», иными словами, зная «Название проекта» и «Участника», мы можем четко определить конкретную запись в таблице, т.е. каждое сочетание значений этих столбцов является уникальным.
Таким образом, мы определили первичный ключ, и он у нас составной, т.е. состоящий из двух столбцов.
Таблица проектов организации. Внедрен составной первичный ключ: