Введение в базы данных. Реляционное проектирование Затрагиваемые темы Проблемы, решаемые хранением данных в СУБД Проблемы, решаемые хранением данных в СУБД Виды знаний по БД в контексте IT-процессов Виды знаний по БД в контексте IT-процессов Реляционные таблицы, ключи, внешние ключи Реляционные таблицы, ключи, внешние ключи Ссылочная целостность. Связи 1:N и M:N Ссылочная целостность. Связи 1:N и M:N Диаграммное представление структуры БД, CASE Диаграммное представление структуры БД, CASE «Рецепты» качественного проектирования РБД «Рецепты» качественного проектирования РБД
Введение: Проблемы хранения данных Особенности информационных систем Особенности информационных систем Много пользователей, работающих одновременно Много пользователей, работающих одновременно Большой объем данных – нельзя все загрузить в ОЗУ Большой объем данных – нельзя все загрузить в ОЗУ Данные разнородны и имеют много разнообразных связей Данные разнородны и имеют много разнообразных связей Одни данные имеют различные представления userам Одни данные имеют различные представления userам Проблемы хранения данных в файлах Проблемы хранения данных в файлах Дублирование, самосогласованное изменение Дублирование, самосогласованное изменение Низкая скорость доступа к данным (поиск, изменение) Низкая скорость доступа к данным (поиск, изменение) Сложность программирования: нужно помнить, что где Сложность программирования: нужно помнить, что где Возможности систем управления базами данных Возможности систем управления базами данных Разделение логической и физической структуры данных Разделение логической и физической структуры данных Унифицированые интерфейсы доступа (языки, протоколы) Унифицированые интерфейсы доступа (языки, протоколы) Хранение без дублирования + логическая целостность БД Хранение без дублирования + логическая целостность БД Оптимизация скорости (буферизация, индексирование) Оптимизация скорости (буферизация, индексирование) Многопользовательская работа: транзакции, привилегии.. Многопользовательская работа: транзакции, привилегии.. Журнализация изменений и восстановление после сбоев Журнализация изменений и восстановление после сбоев
Введение: процесс разработки Место знаний по БД в процессе разработки ИС Место знаний по БД в процессе разработки ИС Анализ бизнес-процессов, отн. к ИС. Бизнес-требования Анализ бизнес-процессов, отн. к ИС. Бизнес-требования Формулировка технических требований //+словарь терминов Формулировка технических требований //+словарь терминов Анализ и проектирование Анализ и проектирование Разработка архитектуры //нужно знать возможности выбр. СУБД Разработка архитектуры //нужно знать возможности выбр. СУБД Проектирование БД (модель лог.уровня, поведение БД) //важно Проектирование БД (модель лог.уровня, поведение БД) //важно Проектирование приложений (структура модулей, UI, etc.) Проектирование приложений (структура модулей, UI, etc.) Реализация //программисты пишут SQL, знают оптимизацию SQL Реализация //программисты пишут SQL, знают оптимизацию SQL Документирование, верификация, внедрение, поддержка.. //администраторы выполняют SQL-скрипты, внедренцы анализируют возникающие проблемы на SQL, support включает SQL-патчи и т.д. Документирование, верификация, внедрение, поддержка.. //администраторы выполняют SQL-скрипты, внедренцы анализируют возникающие проблемы на SQL, support включает SQL-патчи и т.д. Уровни моделей данных Уровни моделей данных Концептуальный (семантический, etc.) //обсуждаем с userами Концептуальный (семантический, etc.) //обсуждаем с userами Логический //зависит от подхода к проектированию = типа СУБД Логический //зависит от подхода к проектированию = типа СУБД Физический //зависит от СУБД, часто касается администраторов БД Физический //зависит от СУБД, часто касается администраторов БД
Сущность (Entity) – таблица – отношение //класс Сущность (Entity) – таблица – отношение //класс Экз. сущности – строка – кортеж //объект Экз. сущности – строка – кортеж //объект Сущность – схема (заголовок) табл. – схема отнош. Сущность – схема (заголовок) табл. – схема отнош. Атрибут (Attribute) – столбец – атрибут //поле Атрибут (Attribute) – столбец – атрибут //поле Свойства атрибута: обязательность, вид (простой, сущность, множество простых, множество сущностей) Свойства атрибута: обязательность, вид (простой, сущность, множество простых, множество сущностей) В реляционной модели вид только простой; атрибут имеет тип и домен = {тип, ограничения на значение атрибута} В реляционной модели вид только простой; атрибут имеет тип и домен = {тип, ограничения на значение атрибута} Ключ – [min набор] атрибут[ов], по значению которого можно однозначно найти нужный экземпляр сущности. В РБД 1 из ключей и называется первичным (на практике состоит из 1 атрибута, называют идентификатором) Ключ – [min набор] атрибут[ов], по значению которого можно однозначно найти нужный экземпляр сущности. В РБД 1 из ключей и называется первичным (на практике состоит из 1 атрибута, называют идентификатором) Связь (Relationship) – внешний ключ (foreign key) Связь (Relationship) – внешний ключ (foreign key) Виды связей: 1 ко многим, 1 к одному, многие ко многим Виды связей: 1 ко многим, 1 к одному, многие ко многим Свойства связей: required, identifying; ref. integrity actions Свойства связей: required, identifying; ref. integrity actions Понятия реляционных моделей
Реляционная таблица
Реляционная модель Структурная часть, свойства реляционной таблицы Структурная часть, свойства реляционной таблицы РБД представляет собой набор таблиц, таких, что: РБД представляет собой набор таблиц, таких, что: Ячейки столбца содержат однотипные данные (домен) Ячейки столбца содержат однотипные данные (домен) Знач. в ячейках атомарны (простой тип, не множество) Знач. в ячейках атомарны (простой тип, не множество) Столбцы поименованы, столбцы и строки неупорядоче- ны //на практике столбцы упорядочены (performance!) Столбцы поименованы, столбцы и строки неупорядоче- ны //на практике столбцы упорядочены (performance!) Целостностная часть реляционной модели Целостностная часть реляционной модели Целостность сущности: существует ключ Целостность сущности: существует ключ Ссылочная целостность (referential integrity): строка в parent: её ID = внешний ключ в child (если он не null) Ссылочная целостность (referential integrity): строка в parent: её ID = внешний ключ в child (если он не null) Пользовательские ограничения целостности (CHECK): логические условия на значения 1 или нескольких атрибутов Пользовательские ограничения целостности (CHECK): логические условия на значения 1 или нескольких атрибутов Целостность обеспечивается СУБД (запрет вставки/изменения, каскадное удаление, обnullение,..) Целостность обеспечивается СУБД (запрет вставки/изменения, каскадное удаление, обnullение,..) Манипуляционная часть = набор операций (SQL) Манипуляционная часть = набор операций (SQL)
Пример структуры РБД на одной из распространенных нотаций типа Entity-Relationship – IDEF1X (нарисовано в CASE-средстве ERwin) Диаграммное представление модели Концептуальная модель (сущности, связи) Реляционная модель (таблицы, ключи, типы данных)
Реляционное проектирование Простейшие «рецепты» реляц. проектирования Простейшие «рецепты» реляц. проектирования Доп. неизменяемый атрибут - PK ( _ID int) Доп. неизменяемый атрибут - PK ( _ID int) Связи 1:1 и 1:N – внешний ключ, N:M – доп. таблица Связи 1:1 и 1:N – внешний ключ, N:M – доп. таблица Атрибуты с фикс. числом значений => отд. таблица +FK Атрибуты с фикс. числом значений => отд. таблица +FK НФ: меньше зависимостей в таблице, больше таблиц НФ: меньше зависимостей в таблице, больше таблиц Основные причины отхода от реляционной модели Основные причины отхода от реляционной модели Ограничения модели: атомарность, замена атрибутов- объектов вн. ключом, нет наследования таблиц, типов Ограничения модели: атомарность, замена атрибутов- объектов вн. ключом, нет наследования таблиц, типов Несоответствие таблиц ОО языкам программирования Несоответствие таблиц ОО языкам программирования CASE-средства //например, ERwin (проектирование РБД) CASE-средства //например, ERwin (проектирование РБД) Диаграммы для задач анализа, проектирования и др. Диаграммы для задач анализа, проектирования и др. Связь с реализацией: forward & reverse engineering Связь с реализацией: forward & reverse engineering