БАЗЫ ДАННЫХ Конспект лекций Ржавина В.В. Оглавление Введение
БАЗЫ ДАННЫХ Конспект лекций Ржавина В.В.
Оглавление Введение Пространство данных Модели данных Реляционная модель данных Языки баз данных Проектирование БД Распределенная обработка данных Промежуточное программное обеспечение Распределенные базы данных Аналитическая обработка данных Публикация БД в Интернете Литература
Введение Основные понятия. Концепция базы данных. Назначение и основные компоненты системы баз данных. Переход от файловой системы к системам баз данных. Классификация баз данных. Система управления базой данных (СУБД). История развития СУБД. Функции СУБД. Типовая организация современной СУБД. Архитектура СУБД. Уровни представления данных. Концептуальная, внешняя и внутренняя модели. Понятие схемы и подсхемы. Как СУБД выполняет запрос.
Почему надо изучать базы данных Умные люди учатся на чужих ошибках. Без знания теории вы набьете много шишек. Вы будете ограничены рамками конкретной СУБД. Богатый мир БД будет замкнут для вас на одну модель. Вы не сможете по достоинству оценить новые СУБД, средства автоматизации проектирования, новые технологии БД Терминология БД богата и порой противоречива
Два основных направления использования ВТ Применение вычислительной техники для выполнения численных расчетов, которые слишком долго или вообще невозможно производить вручную. Использование средств вычислительной техники в автоматических или автоматизированных информационных системах.
Информационная система
Поддержка различных уровней принятия решений со стороны ИС и ИТ
Переход от файловой системы к системам баз данных До появления баз данных данные традиционно размещались в файлах. Разработчики прикладных программ размещают нужные им данные в файлах, организуя их наиболее удобным для себя образом. При этом одни и те же данные могут иметь в разных приложениях совершенно разную организацию. ФС обеспечивает хранение слабо структурированной информации, оставляя дальнейшую структуризацию прикладным программам. Структура информации зачастую очень сложна, и хотя структуры данных различны в разных информационных системах, между ними часто бывает много общего. На начальном этапе использования ВТ для управления информацией проблемы структуризации данных решались индивидуально в каждой информационной системе. Эти индивидуальные дополнительные средства управления данными являлись существенной частью информационных систем и практически повторялись от одной системы к другой Очень скоро стало понятно, что невозможно обойтись общей библиотекой программ, реализующей над стандартной базовой файловой системой более сложные методы хранения данных. Стремление выделить и обобщить общую часть информационных систем, ответственную за управление сложно структурированными данными, явилось первой побудительной причиной создания СУБД.
Система управления базой данных Проблемы проблема контроля избыточности данных. проблема взаимосвязи между данными и прикладными программами, которые писались на стандартных языках, при этом программа содержала как описание данных, так и алгоритмы манипулирования данными, в результате, любые изменения в организации данных приводили к необходимости изменения программы. Требования интеграция данных — когда все данные хранятся централизованно, создавая динамически обновляемую модель. максимальная независимость прикладных программ от данных или обеспечение физической и логической независимости данных. Выполнение этих требований привело к созданию единого для всех задач блока данных – базы данных и разработке одной управляющей программы для манипулирования данными на физическом уровне – СУБД.
СУБД обрабатывает все программные обращения к БД Именно СУБД обеспечивает независимость данных, изменение физической организации данных воспринимается СУБД и не влияет на прикладную программу. С другой стороны, изменение логики программы не требует реорганизации и изменения механизма доступа к физическим данным. Введение СУБД разделяет логическую структуру данных от физической структуры данных.
Основные особенности СУБД Отличительной чертой современных СУБД следует считать совместное хранение данных с их описанием. Традиционно описание данных содержались в прикладных программах. Современный подход требует, чтобы в программе были заданы лишь имена и форматы обрабатываемых данных. Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД, стали называть "базы данных". В совокупности описание данных называется системным каталогом (или словарем данных), а сами элементы описания принято называть метаданными (данные о данных). Именно наличие самоописания данных в базе данных обеспечивает независимость между программами и данными. Любые манипуляции с данными в базах данных, такие как выбор, вставка, удаление, обновление данных, изменение или выбор метаданных, называются запросом к базе данных (query). Обычно запросы формулируются на каком-либо языке, который может быть как стандартным для разных СУБД, так и зависящим от конкретной СУБД.
Основные понятия и определения База данных (БД, DB)– именованная совокупность данных, отражающая состояние объектов и их отношений в рассматриваемой предметной области. Система управления базами данных (СУБД , DBMS) –совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями. Банк данных (БнД) – система специальным образом организованных данных: баз данных, программных, технических, языковых средств, предназначенных для обеспечения централизованного накопления и коллективного многоцелевого использования данных (БД + СУБД + аппаратура). Система баз данных – базы данных + программное обеспечение + аппаратное обеспечение + пользователи. (БнД + пользователи) Приложения баз данных – программы, с помощью которых пользователи работают с БД
Классификация баз данных По форме представления информации фактографические - хранят множество сведений и фактов, хранящихся в информационной системе, удовлетворяющих фиксированной совокупности форматов. документальные - хранят совокупность произвольных текстовых документов. мультимедийные. По типу используемой модели данных иерархические, сетевые, реляционные, постреляционные, объектно-ориентированные, многомерные. По топологии хранения данных локальные распределенные.
История развития СУБД Обработка данных с помощью мэйнфреймов и мини ЭВМ Настольные СУБД Сетевые многопользовательские СУБД Серверные СУБД
Обработка данных с помощью мэйнфреймов и мини ЭВМ Базы данных хранились во внешней памяти центральной ЭВМ, пользователями этих БД были задачи, запускаемы в основном в пакетном режиме. Интерактивный режим доступа обеспечивался с помощью консольных терминалов (неинтеллектуальные терминалы), которые не обладали собственными вычислительными ресурсами (процессором, внешней памятью) и служили только устройствами ввода-вывода для центральной ЭВМ.
Настольные СУБД Настольные СУБД как таковые не содержат специальных приложений и сервисов, управляющих данными, — взаимодействие с ними осуществляется с помощью файловых сервисов операционной системы. Нередко подобные СУБД имеют в своем составе и средства разработки, ориентированные на работу с данными формата, характерного для этой СУБД, и позволяющие создать более или менее комфортный пользовательский интерфейс. Что же касается обработки данных — она целиком и полностью осуществляется в пользовательском (клиентском) приложении.
Сетевые многопользовательские СУБД (файл-сервер) Следующим шагом в развитии настольных СУБД было появление их сетевых многопользовательских версий, позволяющих обрабатывать данные, находящиеся в общедоступном хранилище (например, на сетевом диске) нескольким пользователям одновременно. От чисто настольных СУБД их многопользовательские версии отличаются наличием механизма блокировок частей файлов данных (содержащих одну или несколько записей таблицы), что позволяет обращаться к одному и тому же файлу нескольким пользователям одновременно.
Серверные СУБД Архитектура «клиент/сервер», для которой предназначены серверные СУБД, является в определенной степени возвратом к прежней «мэйнфреймовой» модели, основанной на централизации хранения и обработки данных на одном выделенном компьютере, где функционирует специальное приложение или сервис, называемый сервером баз данных. Сервер баз данных отвечает за работу с файлами базы данных, поддержку ссылочной целостности, резервное копирование, обеспечение авторизованного доступа к данным, протоколирование операций и, конечно, за выполнение пользовательских запросов на выбор и модификацию данных и метаданных. Клиентские приложения, являющиеся источниками этих запросов, функционируют на персональных компьютерах в сети.
Основные функции СУБД Непосредственное управление данными во внешней памяти В некоторых реализациях СУБД активно используются возможности существующих файловых систем, в других работа производится вплоть до уровня устройств внешней памяти Управление буферами оперативной памяти Для увеличения скорости обмена информацией с оперативной памятью используется буферизация данных в оперативной памяти. В развитых СУБД поддерживается собственный набор буферов оперативной памяти с собственной дисциплиной замены буферов Управление транзакциями Транзакция - это последовательность операций над БД, рассматриваемых СУБД как единое целое. Сериализация транзакций - порядок планирования их работы, при котором суммарный эффект смеси транзакций эквивалентен эффекту их некоторого последовательного выполнения. Сериальный план выполнения смеси транзакций - это такой план, который приводит к сериализации транзакций . Если удается добиться действительно сериального выполнения смеси транзакций, то для каждого пользователя, по инициативе которого образована транзакция, присутствие других транзакций будет незаметно.
Основные функции СУБД Журнализация Журнал - это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда поддерживаются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД. Поддержка языков БД Внутренний язык СУБД состоит из двух частей: языка определения данных (DDL) и языка манипулирования данными (DML). Теоретически для каждой схемы в трехуровневой архитектуре можно было бы выделить несколько различных языков DDL, а именно язык DDL внешних схем, язык DDL концептуальной схемы и язык DDL внутренней схемы. Однако на практике существует один общий язык DDL, который позволяет задавать спецификации, как минимум для внешней и концептуальной схем. Процедурные и декларативные языки DML
Типовая организация современной СУБД Обычно современная СУБД содержит следующие компоненты ядро, которое отвечает за управление данными во внешней и оперативной памяти и журнализацию, процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода, подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД а также сервисные программы (внешние утилиты), обеспечивающие ряд дополнительных возможностей по обслуживанию информационной системы.
Архитектура СУБД ПП 1 ПП 2 ПП 5 ПП 4 ПП 3 Подсхема А Подсхема В Концептуальная схема Внутренняя схема БД СУБД ПП – пользовательские представления Уровень Схема Язык описания схем
Как СУБД выполняет запрос
Модели и структуры данных Пространство данных Предметная область. Мир объектов: свойства, методы, события. Понятие типа объекта. Классификация свойств. Структурные элементы данных: поле, агрегат, запись. Идентификация записей. Виды связей в базе данных. Характеристики связи. Класс принадлежности. Размерность связи. Мощность связи.
Только философы имеют дело с реальным миром. При решении же конкретных проблем обычно ограничиваются той его частью, которая является областью данной деятельности. В этих случаях интерес представляют лишь некоторые его объекты. Совокупность таких объектов называется предметной областью, а сами объекты - объектами предметной области. Объектами могут быть: люди, например, перечисленные в какой либо платежной ведомости; предметы, например детали, которые производятся; построения – воображаемые объекты, например счета, в задаче получения счетов. Предметная область
Предметная область — часть реального мира, отражаемая в базе данных
Свойства объектов Каждый объект обладает набором свойств или атрибутов, выполняет операции, реализуемые через методы, и реагирует на определенные события. Объект = {свойства, методы, события} Свойства можно классифицировать: 1. по времени: статические (не меняющиеся во времени); динамические (изменяющиеся во времени); 2. по структуре: неделимые (атомарные); составные (агрегат, вектор, повторяющаяся группа); 3. по количеству множественные единичные 4. по наличию обязательные условные 5. по признаку производности базовые расчетные или производные
Структурные элементы данных Байт Поле Агрегат данных (группа) Вектор Повторяющаяся группа Тип объекта (записи) «СОТРУДНИК».
Идентификация записей Потенциальный ключ –претендент на роль первичного ключа Первичный ключ (primary key –PK) –атрибут или группа атрибутов, однозначно идентифицирующих экземпляр сущности суррогатный (искусственный) ключ составной (сложный) ключ Альтернативный ключ – потенциальный ключ, не ставший первичным Внешний ключ (foreign key –FK) Инверсный вход (вторичный ключ) – атрибут или группа атрибутов, которые не определяют экземпляр сущности уникальным образом, но часто используются для обращения к экземплярам сущности
Сущность «СОТРУДНИК» с отображением ключей Атрибуты альтернативных ключей обозначаются как (AKn.m), где n – порядковый номер ключа, m - порядковый номер атрибута в ключе. Инверсные входы обозначаются как (IEn.m), где n – порядковый номер входа, m - порядковый номер атрибута.
Связи Межатрибутные Между сущностями Рекурсивная, между элементами
Характеристики связи Класс принадлежности(степень участия) обязательный необязательный Размерность связи (степень связи) бинарная тройная N-арная Мощность связи (кардинальность, тип соответствия) Т(Х,Y) = 1:1 Т(Х,Y) = 1:М Т(Х,Y) = М:1 Т(Х,Y) = М:М Т(Х,Y) = Ø
Примеры связи ТОВАР-МАГАЗИН бинарная связь, тип соответствия М:М ТОВАР-МАГАЗИН-ПОКУПАТЕЛЬ тройная связь СЛУЖАЩИЙ-ДОЛЖНОСТЬ бинарная связь, обязательная связь со стороны СЛУЖАЩИЙ и необязательная со стороны ДОЛЖНОСТЬ(должность может быть вакантной), тип соответствия 1:М
Типы , экземпляры объектов и связей Экземпляр типа объекта (просто объект) Объект={A1, A2,…, An), где Ai – атрибут объекта
Топология записей
Методы доступа к данным Доступ к данным по ключу: методы поиска по дереву поиск по бинарному дереву поиск по сбалансированному дереву методы хеширования
МОДЕЛИ ДАННЫХ Понятие модели данных. Компоненты модели. Классификация моделей данных. Иерархическая модель данных. Сетевая модель данных. Реляционная модель данных. Структурная часть модели. Домены и отношения. Схема отношения. Фундаментальные свойства отношений. Связи между таблицами. Понятие внешнего ключа. Операции над отношениями. Языки манипулирования данными: язык реляционной алгебры. Теоретико-множественные операции реляционной алгебры. Специальные операции реляционной алгебры. Ограничения целостности. Целостность сущностей. Целостность ссылок. Стратегии поддержания ссылочной целостности. Семантическая поддержка целостности.
Классификация моделей данных
Компоненты модели Структурная часть, то есть набор правил, по которым может быть построена база данных Управляющая часть, определяющая типы допустимых операций с данными (сюда относятся операции обновления и извлечения данных, а также операции изменения структуры базы данных). Набор ограничений поддержки целостности базы данных, гарантирующих корректность используемых данных.
Иерархическая модель данных (структурная часть)
Пример иерархической структуры (Университет) Университет Структура иерархического дерева Технический институт ИВТ ЭЭФ СФ МСФ ПО Сети Экземпляр дерева 1 Институт Факультет Кафедра (специальность) Группа Студент Преподаватель
Иерархическая модель данных (управляющая часть) Операции над данными: Найти указанное дерево БД (например, отдел 310); Перейти от одного дерева к другому; Перейти от одной записи к другой внутри дерева (например, от отдела - к первому сотруднику); Перейти от одной записи к другой в порядке обхода иерархии; Вставить новую запись в указанную позицию; Удалить текущую запись.
Иерархическая модель данных (набор ограничений) Невозможность хранения экземпляров записей, которые не имеют родительских записей; Трудность моделирования связей типа М:М или других более сложных неиерархических связей, в которых тип записи имеет несколько разных связей с несколькими другими типами записей.
Сетевая модель данных (структурная часть) С1 С2 С3 B А Егоров Иванов Алексеев Сидорова САПР Программ-ние БД Философия Набор УЧЕБА Экземпляр набора УЧЕБА
Характеристики набора Каждый тип ГО характеризуется: способом упорядочивания подчиненной записи (ПЗ) произвольный; хронологический; обратнохронологический; сортированный. В каждом ГО может быть свой способ упорядочивания. режимом включения ПЗ автоматический – подчинённая запись включается в отношение одновременно с запоминанием в БД, т.е. происходит автоматическое закрепление ПЗ за ее владельцем; ручной – позволяет запомнить ПЗ в БД, а не включать сразу в ГО; режимом исключения ПЗ. Для этого вводится понятие класса принадлежности записи сетевой модели: фиксированный — ПЗ жёстко закрепляется за владельцем и не может существовать без него (поэт и произведение). При удалении записи-владельца (ЗВ) система автоматически удаляет ПЗ; обязательный — каждая ПЗ всегда будет связана с некоторой ЗВ, но может быть переназначена на другую ЗВ. Для успешного удаления ЗВ необходимо, чтобы не было ПЗ с обязательным членством; необязательный — позволяет исключить ПЗ из экземпляра ГО, но сохранить её в БД, не прикрепляя к другому владельцу.
Сетевая модель данных (управляющая часть) Запомнить — занести новую запись в БД и автоматически включить её в ГО, где она объявлена подчиненной соответствующим режимам включения; Включить — позволяет подчинённую запись связать с записью-владельцем; Переключить — переключить подчинённую запись на другого владельца в том же ГО; Исключить — разрывает связь между владельцем и подчинённой записью, сохранив обе записи в БД.
Сетевая модель данных (набор ограничений) тип соответствия между владельцем и подчиненным 1:M (иерархическая связь) экземпляр подчиненной записи может присутствовать только в одном экземпляре данного типа набора; но допустимо его участие в другом наборе. Например, студент может учиться только в одной группе (член набора УЧЕБА), но тот же самый студент может ходить в спортивную секцию (член набора СПОРТ), то есть быть участником другого набора; тип записи – владельца в типе набора не может совпадать с типом записи – члена (недопустимы циклы и петли).
От сетевой к иерархической… Каждую сетевую структуру можно представить в виде иерархической модели, но при этом сеть нуждается в преобразовании: Переход к иерархической модели приводит к дублированию данных в поликлинике организации и сбербанке: пациент, сотрудник и вкладчик..
Реляционная модель данных
1. Структурная часть модели Концепция реляционной модели данных связана с именем известного специалиста в области баз данных Э.Кодда. Будучи математиком по образованию, Э.Кодд предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение). Он показал, что любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение – relation
Эдгар Франк Кодд 1923-2003 В шестидесятых – семидесятых годах Эдгар Кодд работает над созданием своих теорий хранения данных. В 1970 году он создал свою известную «Реляционную модель данных для больших банков данных» Он родился двадцать третьего августа 1923 года в Англии, в городе Портленд. Учился в Оксфордском университете, изучал там математику и химию. После войны, в 1948 году, Эдаг Кодд поехал в США, в Нью-Йорк, где стал работать в компании IBM
Декартово произведение Пусть D1,D2,D3,…, Dn – произвольные конечные множества и не обязательно различные. Декартовым произведением этих множеств D1*D2*D3 *… *Dn называется множество сочетаний из n элементов вида (d1,d2,…,dn), где d1 D1, d2 D2, d3 Dn, D3,…, dn Если даны два множества D1 = a1, a2, D2 = b1, b2, b3, их декартово произведение будет иметь вид С=D1*D2 = a1b1, a1b2, a1b3, a2b1, a2b2, a2b3. Пример: Определение
Отношение Отношением R, определенным на множествах D1,D2,D3,…, Dn, называется подмножество декартова произведения D1*D2*D3 *… *Dn. При этом: множества D1,D2,D3,…, Dn называются доменами отношения элементы декартова произведения (d1,d2,…,dn) называются кортежами число n определяет степень отношения ( n=1 - унарное, n=2 - бинарное, ..., n-арное) количество кортежей называется мощностью отношения на множестве С из предыдущего примера могут быть определены отношения R1 (a1*b1, a3*b2) или R2 (a1*b1, a2*b1, a1*b2) Пример: Определение
Табличное представление отношения
Схема отношения Схемой отношения R называется перечень имен атрибутов данного отношения с указанием домена, к которому они относятся: SR = A1 , ... , An A i Di или R (A1,...,An). Определение Пример: СОТРУДНИК (Сотр_номер, сотр_имя, сотр_зарп, сотр_отд_номер)
Определение реляционной БД Реляционная БД — множество отношений, содержащих всю необходимую информацию о предметной области. Реляционной считается такая база данных, в которой все данные представлены для пользователя в виде прямоугольных таблиц значений данных, и все операции над базой данных сводятся к манипуляциям с таблицами. Определение
Терминология с разных сторон * В настоящее время большинство СУБД не хранит таблицы в отдельных файлах
Фундаментальные свойства отношений Каждое значение, содержащееся на пересечении строки и колонки, должно быть атомарным (то есть не расчленяемым на несколько значений). Значения данных в одной и той же колонке должны принадлежать к одному и тому же типу, доступному для использования в данной СУБД. Каждая запись в таблице уникальна, то есть в таблице не существует двух записей с полностью совпадающим набором значений ее полей. Каждое поле имеет уникальное имя. Последовательность полей в таблице несущественна. Последовательность записей также несущественна.
Связи между таблицами
2. Управляющая часть Операции над данными. Реляционная алгебра Предложив реляционную модель данных, Э.Кодд создал и инструмент для удобной работы с отношениями – реляционную алгебру. Алгеброй называется множество объектов с заданной на нем совокупностью операций, замкнутых относительно этого множества (результат каждой операции над объектом также является объектом этого множества), называемого основным множеством. Все операции над данными можно разделить на две группы: Операции обработки кортежей Операции обработки отношений
Операции обработки кортежей Эти операции связаны с изменением состава кортежей в каком-либо отношении. ДОБАВИТЬ - необходимо задать имя отношения и ключ кортежа. УДАЛИТЬ - необходимо указать имя отношения, а также идентифицировать кортеж или группу кортежей, подлежащих удалению. ИЗМЕНИТЬ - выполняется для названного отношения и может корректировать как один, так и несколько кортежей
Операции обработки отношений Все множество операций обработки отношений делится на две группы: теоретико-множественные операции и специальные реляционные операции. Теоретико-множественные операции реляционной алгебры В состав теоретико-множественных операций входят операции: объединения отношений; пересечения отношений; взятия разности отношений; прямого произведения отношений.
Таблицы для примеров
Объединение
Пересечение
Разность
Декартово произведение
Специальные операции реляционной алгебры выборка; проекция отношения; соединение отношений; деление отношений.
Выборка
Проекция
Соединение
Деление
Синтаксис реляционной алгебры
3. Набор ограничений Ограничения целостности Поддержка целостности в РБД в ее классическом понимании включает три аспекта: поддержка структурной целостности (целостность сущностей) поддержка языковой целостности поддержка ссылочной целостности Поддержка структурной целостности – реляционная СУБД должна допускать работу только с однородными структурами данных типа «реляционное отношение». Поддержка языковой целостности – доступ к информации, хранимой в БД, и любые изменения этой информации могут быть выполнены только с использованием операторов языка SQL. Не должны быть доступны иные низкоуровневые средства манипулирования данными, не соответствующие стандарту. Поддержка ссылочной целостности – поддержка непротиворечивого состояния БД в процессе модификации данных при выполнении операций добавления или удаления.
Поддержка структурной целостности Правило целостности сущностей: Атрибуты, входящие в состав некоторого потенциального ключа не могут принимать null-значений. Поддержание целостности сущностей обеспечивается средствами системы управления базой данных (СУБД): при добавлении записей в таблицу проверяется уникальность их первичных ключей не позволяется изменение значений атрибутов, входящих в первичный ключ.
Целостность ссылок Правило целостности ссылок: Для каждого значения внешнего ключа, появляющегося в дочернем отношении, в родительском отношении должен найтись кортеж с таким же значением первичного ключа. Пример: ОТДЕЛ и СОТРУДНИКИ Ссылочная целостность может нарушиться в результате операций, изменяющих состояние базы данных. Таких операций три - вставка, обновление и удаление кортежей в отношениях. Так как в определении ссылочной целостности участвуют два отношения - родительское и дочернее, а в каждом из них возможны три операции - вставка, обновление, удаление, то возможны шесть различных вариантов.
Ссылочная целостность для родительского отношения Вставка кортежа в родительском отношении. При вставке кортежа в родительское отношение возникает новое значение потенциального ключа. Т.к. допустимо существование кортежей в родительском отношении, на которые нет ссылок из дочернего отношения, то вставка кортежей в родительское отношение не нарушает ссылочной целостности. Обновление кортежа в родительском отношении. При обновлении кортежа в родительском отношении может измениться значение потенциального ключа. Если есть кортежи в дочернем отношении, ссылающиеся на обновляемый кортеж, то значения их внешних ключей станут некорректными. Обновление кортежа в родительском отношении может привести к нарушению ссылочной целостности, если это обновление затрагивает значение потенциального ключа. Удаление кортежа в родительском отношении. При удалении кортежа в родительском отношении удаляется значение потенциального ключа. Если есть кортежи в дочернем отношении, ссылающиеся на удаляемый кортеж, то значения их внешних ключей станут некорректными. Удаление кортежей в родительском отношении может привести к нарушению ссылочной целостности.
Ссылочная целостность для дочернего отношения Вставка кортежа в дочернее отношение. Нельзя вставить кортеж в дочернее отношение, если вставляемое значение внешнего ключа некорректно. Вставка кортежа в дочернее отношение может привести к нарушению ссылочной целостности. Обновление кортежа в дочернем отношении. При обновлении кортежа в дочернем отношении можно попытаться некорректно изменить значение внешнего ключа. Обновление кортежа в дочернем отношении может привести к нарушению ссылочной целостности. Удаление кортежа в дочернем отношении. При удалении кортежа в дочернем отношении ссылочная целостность не нарушается.
Стратегии поддержания ссылочной целостности - referential integrity (RI) RESTRICT (ОГРАНИЧИТЬ)- не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. Пример операции удаления. Запретить удаление ОТДЕЛа, пока в нем числится хотя бы один СОТРУДНИК. CASCADE (КАСКАДИРОВАТЬ) - разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Пример операции удаления. При удалении ОТДЕЛа, из БД будут удалены и все СОТРУДНИКи.
Дополнительные стратегии поддержания ссылочной целостности SET NULL (УСТАНОВИТЬ В NULL) – разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на null-значения. Недостатки: 1. допускается использование null-значений 2. кортежи дочернего отношения теряют всякую связь с кортежами родительского отношения. SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) -разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию. IGNORE или NONE (ИГНОРИРОВАТЬ) – выполнять операции, не обращая внимания на нарушения ссылочной целостности. Пример операции удаления. При удалении значение атрибута внешнего ключа не меняется. Запись о СОТРУДНИКе ”повисает в воздухе”, так как ссылается на несуществующий уже ОТДЕЛ.
Семантическая поддержка целостности Структурная, языковая и ссылочная целостность определяют правила работы СУБД с реляционными структурами данных. Однако эти ограничения никак не касаются содержания БД. Для определения ограничений, связанных с содержанием БД, требуются другие методы. Семантическая поддержка может быть обеспечена двумя путями: 1. декларативным путем; 2. процедурным путем. Семантическая целостность поддерживается и в других моделях данных
Декларативные ограничения целостности Ограничения целостности атрибута значение по умолчанию задание обязательности или необязательности значений (Null) задание условий на значения атрибутов Ограничения целостности, задаваемые на уровне доменов Ограничения целостности, задаваемые на уровне отношения. Пример. Устраняется конфликт значений двух или нескольких полей одной записи: дата_поступления_в_ВУЗ > дата_окончания_школы Ограничения целостности, задаваемые на уровне связи между отношениями.
Процедурные ограничения целостности Эти ограничения поддерживаются механизмом транзакций триггеров процедур Мы их рассмотрим ниже.
Объекты реляционных баз данных Таблицы и поля Индексы Ограничения и правила Представления Триггеры и хранимые процедуры Объекты для генерации первичных ключей Пользователи и роли Системный каталог Запросы к базам данных Курсоры
Недостатки реляционных СУБД Конолли, 934
Стандартный язык реляционных баз данных – SQL Язык исчисления предикатов. Основные понятия и компоненты. Инструкции и имена. Типы данных. Встроенные функции. Значения NULL. Ограничения целостности. Первичный и внешний ключ таблицы. Определение уникального столбца, проверочных ограничений, значения по умолчанию. Управление таблицами. Средства SQL для определения данных (DDL): CREATE, DROPE, ALTER. Управление данными. Выборка данных: оператор SELECT. Средства SQL для манипулирования данными (DML): INSERT, UPDATE, DELETE. Формы языка SQL. Процедурные расширения SQL
Выполнение SQL в СУБД Все современные серверные СУБД (а также многие популярные настольные СУБД) содержат в своем составе утилиты, позволяющие выполнить SQL-предложение и ознакомиться с его результатом. В частности, клиентская часть Oracle содержит в своем составе утилиту SQL Plus, а Microsoft SQL Server — утилиту SQL Query Analyzer.
http://student.km.ru/ref_show_frame.asp?id=8D8FD8D5F6F64D089892A98CC1C2FAF7 Структурная схема типичной СУБД, компоненты которой соединяются в единое целое с помощью SQL (своего рода "клея").
Состав SQL Data Definition Language (DDL) — язык определения данных, позволяющий создавать, удалять и изменять объекты в базах данных Data Manipulation Language (DML) — язык управления данными, позволяющий модифицировать, добавлять и удалять данные в имеющихся объектах базы данных Data Control Languages (DCL) — язык, используемый для управления пользовательскими привилегиями Transaction Control Language (TCL) — язык для управления изменениями, сделанными группами операторов Cursor Control Language (CCL) — операторы для определения курсора, подготовки операторов SQL к выполнению и некоторых других операций.
Операторы SQL Data Manipulation Language (DML) SQL содержит примерно 40 операторов для выполнения различных действий внутри СУБД. * Иногда оператор SELECT относят к отдельной категории, называемой Data Query Language (DQL). Data Manipulation Language содержит операторы, позволяющие выбирать, добавлять, удалять и модифицировать данные.
Data Definition Language (DDL) Data Definition Language содержит операторы, позволяющие создавать, изменять и уничтожать базы данных и объекты внутри них (таблицы, представления и др.).
Transaction Control Language (TCL) Операторы Transaction Control Language применяются для управления изменениями, выполненными группой операторов DML.
Data Control Language (DCL) Операторы Data Control Language, иногда называемые операторами Access Control Language, применяются для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы в базе данных, а также выполнять те или иные операторы SQL.
Cursor Control Language (CCL) Операторы Cursor Control Language используются для определения курсора, подготовки SQL-предложений для выполнения
Формы языка SQL интерактивный SQL Интерактивный SQL позволяет конечному пользователю в интерактивном режиме выполнять SQL-операторы встроенный SQL Встроенный SQL позволяет включать операторы SQL в код программы на другом языке программирования (например, С++) динамический SQL Динамический SQL позволяет формировать операторы SQL во время выполнения программы.
Как работает SQL Для извлечения из нее данных используется запрос, сформулированный на языке SQL. СУБД обрабатывает этот запрос, извлекает запрашиваемые данные и возвращает их. SQL сам по себе не является ни СУБД, ни отдельным продуктом. Это язык, применяемый для взаимодействия с СУБД и являющийся в определенном смысле ее неотъемлемой частью.
Понятия SQL В SQL существует около 40 инструкций. Каждая инструкция начинается с команды, то есть ключевого слова, описывающего действие, выполняемое инструкцией. После команда идет одно или несколько предложений или фраз. Каждое предложение начинается с ключевого слова, такого как FROM, WHERE, INTO. Одни предложения являются в инструкции обязательными, другие – нет.
Выборка данных SELECT [ALL | DISTINCT] <список_выбора> FROM <имя_таблицы>, ... [WHERE <условие>] [GROUP BY <имя_столбца>,...] [HAVING <условие>] [ORDER BY <имя_столбца> [ASC | DESC],...]
Фраза SELECT
Список выбора
Операции в списке выбора Операции, которые могут выполняться над компонентами списка выбора следующие: Первые четыре операции - общепринятые арифметические операции. Две последние - различные представления операции конкатенации строк. Хотя стандарт SQL предусматривает также операцию ** - возведение в степень, но некоторые СУБД реализуют эту операцию функциями.
Функции Числовые Строковые Даты и времени Преобразования типов Агрегатные
Агрегатные функции Агрегатные функции возвращают единственное значение для множества строк. Синтаксис большинства агрегатных функций: AVG(<имя поля>) - среднее по всем значениям данного поля COUNT(<имя поля>) или COUNT (*) - число записей MAX(<имя поля>) - максимальное из всех значений данного поля MIN(<имя поля>) - минимальное из всех значений данного поля SUM(<имя поля>) - сумма всех значений данного поля
Ключевые слова ALL и DISTINCT Для управления выводом дублирующихся строк результирующего набора данных можно использовать ключевые слова ALL или DISTINCT в предложении SELECT. Ключевое слово DISTINCT указывает, что строки результирующего набора данных должны быть уникальны, тогда как ключевое слово ALL указывает, что возвращать следует все строки. Например, для извлечения названий стран, в которых имеются заказчики, можно использовать следующий запрос: SELECT DISTINCT Country FROM Customers Отметим, что ключевое слово ALL используется по определению. Если в запросе требуется вывести более одной колонки и при этом использовано слово DISTINCT, то результирующий набор данных будет содержать различные строки, но некоторые значения одного и того же поля в разных строках могут совпадать.
Ключевое слово TOP Ключевое слово TOP может быть использовано для возврата первых n строк или первых n процентов таблицы. Например, запрос: SELECT TOP 10 * FROM PRODUCTS ORDER BY ProductName возвращает первые 10 продуктов из таблицы, тогда как запрос: SELECT TOP 25 PERCENT * FROM PRODUCTS ORDER BY ProductName вернет первую четверть записей таблицы
Фраза FROM Фраза FROM определяет перечень таблиц (базовых, виртуальных, промежуточных), из которых происходит выборка данных. Во фразе FROM обязательно указываются также и те таблицы, значения из которых не попадают в конечную выборку, но используются во фразе WHERE. Синтаксис фразы FROM:
Внутренние и внешние соединения Наиболее распространенный способ соединения таблиц - эквисоединение - указание во фразе WHERE условия равенства значений в столбцах, например: SELECT ФИО, название-отдела FROM отдел, сотрудник WHERE отдел.отдел-id = сотрудник.отдел-id Такое соединение (как эквисоединение, так и соединение по любому произвольному условию) дает результирующую таблицу, в которой каждая строка одной таблице комбинируется со строкой другой таблице и для результирующей строки условие соединения является истинным.
Фраза WHERE Фраза WHERE определяет условия отбора строк для результирующей таблицы (реализует реляционную операцию выборки). Синтаксис фразы WHERE:
Условие В качестве условия используются логические выражения над константами и полями. В условиях допускаются: операции сравнения: > , < , >= , <= , = , <> , != . В SQL эти операции могут применяться не только к числовым значениям, но и к строкам ( "<" означает раньше, а ">" позже в алфавитном порядке) и датам ( "<" раньше и ">" позже в хронологическом порядке). операции проверки поля на значение NULL: IS NULL, IS NOT NULL операции проверки на вхождение в диапазон: BETWEEN и NOT BETWEEN. операции проверки на вхождение в список: IN и NOT IN операции проверки на вхождение подстроки: LIKE и NOT LIKE отдельные операции соединяются связями AND, OR, NOT и группируются с помощью скобок.
Предикат сравнения Предикат сравнения позволяет сравнивать как результаты вычисления двух выражений, так и результат вычисления выражения с результатом запроса
Предикат BETWEEN Предикат BETWEEN имеет синтаксис: Применяется при проверке нахождения значения внутри заданного интервала (включая его границы)
Предикат IN Предикат IN имеет синтаксис: Применяется для проверки наличия значения в списке SELECT CompanyName, ContactName FROM Customers WHERE CustomerID IN (‘ALFKI’, ‘BERGS’, ‘VINET’)
Предикат LIKE Предикат LIKE имеет синтаксис: Применяется при проверке соответствия значения заданной маске SELECT CompanyName, ContactName FROM Customers WHERE CompanyName LIKE ‘M%’ В данной маске символ ‘%’ (процент) заменяет любую последовательность символов, а символ ‘_’ (подчеркивание) — один любой символ.
Предикат NULL Предикат NULL имеет синтаксис:
Предикаты с кванторами Предикаты с кванторами имеют синтаксис:
Предикат EXISTS Предикат EXISTS имеет синтаксис:
Фраза GROUP Фраза GROUP определяет результирующую таблицу, которая содержит группировку строк той таблицы, которая получилась от выполнения предыдущих фраз подзапроса. Синтаксис фразы: Группирование должно производиться так, чтобы значение выражения группирования было общим для всех строк группы. Выражение группирования не может содержать запросы. Если выражение SELECT содержит GROUP BY, в списке выбора могут быть только: агрегатные функции специальные функции / регистры выражения, идентичные тем, которые употреблялись в выражении группирования выражения, включающие в себя все перечисленные выше и вычисляющие единственное значение для всей группы
Фраза HAVING Фраза HAVING применяется только совместно с фразой GROUP. Она оставляет в результирующей таблице только те группы, для которых условие является истинным. Синтаксис фразы HAVING: Каждое столбцовое выражение, фигурирующее в условии, должно быть: столбцом, выбираемым для группы или агрегатной функцией
Фраза ORDRE BY Фраза ORDRE BY имеет следующий синтаксис: Например, для сортировки сотрудников по фамилии и затем по имени следует использовать следующий SQL-запрос: SELECT LastName, FirstName, Title FROM Employees ORDER BY LastName, FirstName
ORDER BY ORDER BY не является реляционной операцией, поэтому применяется только последней - после всех реляционных действий. Если аргументом является список, то сортировка ведется по первому элементу списка, при равенcтве значений - по второму и т.д. Стандарт требует упорядочивания только по номеру столбца в результирующей таблице, но все СУБД допускают и вторую форму. Список выбора в этом случает должен быть в точности тот же, что и во фразе SELECT. Использование здесь псевдонимов не допускается.
Внешнее соединение Внешнее соединение включает в себя внутреннее соединение, а также некоторые строки отсутствующие в результате внутреннего соединения. Типы внешних соединений: левое внешнее соединение - внутреннее соединение и строки левой таблицы, которым нет соответствия в правой таблице правое внешнее соединение - внутреннее соединение и строки правой таблицы, которым нет соответствия в левой таблице полное внешнее соединение - внутреннее соединение и строки правой таблицы, которым нет соответствия в левой таблице, и строки правой таблицы, которым нет соответствия в левой таблице Для строк, которым нет соответствия в другой таблице, значения тех столбцов результата, которые должны выбираться из другой таблицы устанавливаются пустыми.
Синтаксис соединения Синтаксис соединения следующий:
Модификация данных До сих пор мы изучали операторы SQL для извлечения данных. Помимо этого язык SQL может быть использован для обновления и удаления данных, копирования записей в другие таблицы и выполнения многих других операций. Ниже мы рассмотрим операторы UPDATE, DELETE и INSERT, используемые для решения некоторых из этих задач.
Оператор UPDATE Для изменения значений в одной или нескольких колонках таблицы применяется оператор UPDATE. Чаще всего синтакcис этого оператора имеет вид: UPDATE table SET column1 = expression1 [, column2 = expression2] [,…] [WHERE criteria] Выражение в предложении SET может быть константой или результатом вычислений. Например, для повышения цен всех продуктов, стоящих меньше 10 долл., можно выполнить следующий запрос: UPDATE Products SET UnitPrice = UnitPrice * 1.1 WHERE UnitPrice < 10
Оператор DELETE Для удаления строк из таблиц следует использовать оператор DELETE, синтаксис которого имеет вид: DELETE FROM table [WHERE criteria] Например, для удаления из списка всех продуктов, которые больше не поставляются, можно выполнить следующий запрос: DELETE FROM Products WHERE Discontinued = 1 Отметим, что полезно использовать оператор SELECT с тем же синтаксисом, что и оператор DELETE, чтобы проверить, какие именно записи будут удалены, прежде чем действительно их удалять. Ниже показан оператор SELECT для приведенного выше запроса на удаление данных: SELECT ProductName FROM Products WHERE Discontinued = 1 Можно использовать в предложении WHERE более сложный критерий для определения того, какие записи должны быть удалены. Предположим, нам нужно удалить из списка клиентов тех из них, кто не имел заказов до определенной даты. Сначала для этого следует выполнить следующий SELECT, чтобы определить, что именно мы удаляем: SELECT CompanyName FROM Customers WHERE Customers.CustomerID NOT IN (SELECT CustomerID FROM Orders WHERE OrderDate > 01/01/96) а затем заменить оператор SELECT на оператор DELETE: DELETE FROM Customers WHERE Customers.CustomerID NOT IN (SELECT CustomerID FROM Orders WHERE OrderDate > 01/01/96) Замечание. При использовании в операторах SQL даты или времени, а также полей, содержащих такие данные, следует уточнить синтаксис таких предложений в документации из комплекта поставки используемой СУБД.
Оператор INSERT Для добавления записей в таблицы следует использовать оператор INSERT, синтаксис которого имеет вид: INSERT [INTO] table ( [column_list] { VALUES ( { DEFAULT | NULL | expression } } [, …] ) Например, для добавления нового клиента в таблицу Customers можно использовать следующий запрос: INSERT INTO Customers (CustomerID, CompanyName) VALUES (‘XYZFO’, ‘XYZ Deli’)
Примеры SELECT Получить список всех авторов SELECT author FROM authors; Получить список всех полей таблицы authors: SELECT * FROM authors; Найти все книги, опубликованные после 1996 года: SELECT title FROM titles WHERE yearpub > 1996; Найти все публикации за интервал 1995 - 1997 гг. SELECT title FROM titles WHERE yearpub>=1995 AND yearpub<=1997; SELECT title FROM titles WHERE yearpub BETWEEN 1995 AND 1997; SELECT title FROM titles WHERE yearpub IN (1995,1996,1997); Найти все издания, выпущенные компанией "Oracle Press" SELECT title FROM titles WHERE pub_id IN (SELECT pub_id FROM publishers WHERE publisher='Oracle Press');
Примеры SELECT(продолжение) Найти web-site издательства, в имени которого присутствует «Wiley» SELECT publiser, url FROM publishers WHERE publisher LIKE '%Wiley%';
DML: Вычисления внутри SELECT Узнать, сколько лет прошло с 1992 года (год принятия стандарта SQL-92) до публикации той или иной книги SELECT title, yearpub-1992 FROM titles WHERE yearpub > 1992; В запрос можно добавить строковую константу: SELECT 'the title of the book is', title, yearpub-1992 FROM titles WHERE yearpub > 1992; Определить дату публикации самой "древней" книги в нашей базе данных SELECT MIN(yearpub) FROM titles; Подсчитать количество книг в нашей базе данных: SELECT COUNT(*) FROM titles;
DML: Группировка данных Определить количество книг каждого издательства SELECT publishers.publisher, count(titles.title) FROM titles,publishers WHERE titles.pub_id=publishers.pub_id GROUP BY publisher; ИспользованиеHAVING. Устраним из предыдущего запроса те издательства, которые имеют только одну книгу: SELECT publishers.publisher, count(titles.title) FROM titles,publishers WHERE titles.pub_id=publishers.pub_id GROUP BY publisher HAVING COUNT(*)>1;
DML: Сортировка данных Сортировать список авторов по алфавиту SELECT author FROM authors ORDER BY author; Получить список авторов, отсортированный по алфавиту, и список их публикаций, причем для каждого автора список книг сортируется по времени издания в обратном порядке (т.е. сначала более "свежие" книги, затем все более "древние") SELECT authors.author,titles.title,titles.yearpub,publishers.publisher FROM authors,titles,publishers,titleauthors WHERE titleauthors.au_id=authors.au_id AND titleauthors.title_id=titles.title_id AND titles.pub_id=publishers.pub_id ORDER BY authors.author ASC, titles.yearpub DESC;
DML: Операция объединения получить все Интеренет-ссылки, хранимые в базе данных publications. Эти ссылки хранятся в таблицах publishers и wwwsites. SELECT publisher,url FROM publishers UNION SELECT site,url FROM wwwsites;
Проектирование реляционных баз данных
Этапы жизненного цикла БД
Системный анализ предметной области Модель предметной области Имеется большое количество методик описания предметной области. Из наиболее известных можно назвать методику структурного анализа SADT и основанную на нем IDEF0, диаграммы потоков данных, методику объектно-ориентированного анализа UML, и др. Два подхода к определению состава и структуры предметной области Функциональный подход Объектный (предметный) подход
Различие уровней представления данных на каждом этапе проектирования КОНЦЕПТУАЛЬНЫЙ УРОВЕНЬ Сущности Атрибуты Связи ЛОГИЧЕСКИЙ УРОВЕНЬ Записи элементы данных связи между записями ФИЗИЧЕСКИЙ УРОВЕНЬ группирование данных индексы методы доступа Представление аналитика Представление программиста Представление администратора
Уровни представления архитектуры информационной системы (модель Захмана)
Системный анализ предметной области Результат этапа. В результате выполнения этого этапа должны быть получены следующие документы: Общее описание ПО Требования к данным Требования к транзакциям (список запросов к БД) Состав возможных пользователей БД с их полномочиями Перечень все задач, которые должен решать каждый пользователь Описание входных документов, которые служат основанием для заполнения данными БД Описание выходных документов, которые должны генерироваться в системе в форме отчетов Системные требования Функциональная модель предметной области (DFD, SADT, модели UML)
Концептуальное проектирование
Порядок разработки концептуальной схемы Дать понятие концептуальной схемы Определение типов сущностей Составление перечня атрибутов Агрегация атрибутов Внешнее кодирование (справочники) Исследование характеристик атрибутов и объектов Определение типов связей Определение атрибутов и связывание их с типами сущностей и связей Определение доменов атрибутов Определение потенциальных и выбор первичных ключей Специализация или генерализация типов сущностей (необязательный шаг) Создание диаграммы «сущность-связь» (ER-диаграммы)
Определение типов сущностей Процесс определение типов сущностей представим последовательностью шагов: Составление перечня атрибутов Агрегация атрибутов Внешнее кодирование (справочники) Исследование характеристик атрибутов и объектов Определение типов сущностей – процесс итеративный. Начинается он с составления перечня атрибутов. Определение типов сущностей Составление перечня атрибутов Агрегация атрибутов Внешнее кодирование (справочники) Исследование характеристик атрибутов и объектов Определение типов связей Определение атрибутов и связывание их с типами и связей Определение доменов атрибутов Определение потенциальных и выбор первичных ключей Специализация или генерализация типов сущностей (необязательный шаг) Создание диаграммы «сущность-связь» (ER-диаграммы)
Определение типов связей Определение типов сущностей Составление перечня атрибутов Агрегация атрибутов Внешнее кодирование (справочники) Исследование характеристик атрибутов и объектов Определение типов связей Определение атрибутов и связывание их с типами связей Определение доменов атрибутов Определение потенциальных и выбор первичных ключей Специализация или генерализация типов сущностей (необязательный шаг) Создание диаграммы «сущность-связь» (ER-диаграммы)
Определение атрибутов и связывание их с типами сущностей и связей Определение типов сущностей Составление перечня атрибутов Агрегация атрибутов Внешнее кодирование (справочники) Исследование характеристик атрибутов и объектов Определение типов связей Определение атрибутов и связывание их с типами сущностей и связей Определение доменов атрибутов Определение потенциальных и выбор первичных ключей Специализация или генерализация типов сущностей (необязательный шаг) Создание диаграммы «сущность-связь» (ER-диаграммы)
Определение доменов атрибутов Полностью разработанная модель данных должна включать домен для каждого из присутствующих в ней атрибутов. Домены должны содержать следующие данные: Набор допустимых значений для атрибута Сведения о размере и формате каждого из полей атрибута В доменах также может быть указана и другая дополнительная информация – например, сведения о допустимых операциях со значениями атрибута Определение типов сущностей Составление перечня атрибутов Агрегация атрибутов Внешнее кодирование (справочники) Исследование характеристик атрибутов и объектов Определение типов связей Определение атрибутов и связывание их с типами связей Определение доменов атрибутов Определение потенциальных и выбор первичных ключей Специализация или генерализация типов сущностей (необязательный шаг) Создание диаграммы «сущность-связь» (ER-диаграммы)
Логическое проектирование (даталогическое)
Этапы проектирования Дать понятие логической схемы Преобразование концептуальной модели в логическую модель Определение набора отношений исходя из структуры логической модели Проверка модели с помощью правил нормализации Проверка модели в отношении транзакций пользователя Создание диаграмм «сущность-связь» Определение требований поддержки целостности данных
Преобразование концептуальной модели в логическую модель Удаление связей М:М Удаление сложных связей. Сложной называется связь выше бинарной. Удаление рекурсивных связей. Преобразование концептуальной модели в логическую модель Определение набора отношений исходя из структуры логической модели Проверка модели с помощью правил нормализации Проверка модели в отношении транзакций пользователя Создание диаграмм «сущность-связь» Определение требований поддержки целостности данных
Преобразование концептуальной модели в логическую модель
Определение набора отношений исходя из структуры логической модели Преобразование концептуальной модели в логическую модель Определение набора отношений исходя из структуры логической модели Проверка модели с помощью правил нормализации Проверка модели в отношении транзакций пользователя Создание диаграмм «сущность-связь» Определение требований поддержки целостности данных
Проверка модели с помощью правил нормализации Преобразование концептуальной модели в логическую модель Определение набора отношений исходя из структуры логической модели Проверка модели с помощью правил нормализации Проверка модели в отношении транзакций пользователя Создание диаграмм «сущность-связь» Определение требований поддержки целостности данных
Проверка модели в отношении транзакций пользователя Преобразование концептуальной модели в логическую модель Определение набора отношений исходя из структуры логической модели Проверка модели с помощью правил нормализации Проверка модели в отношении транзакций пользователя Создание диаграмм «сущность-связь» Определение требований поддержки целостности данных
Создание диаграмм «сущность-связь» Преобразование концептуальной модели в логическую модель Определение набора отношений исходя из структуры логической модели Проверка модели с помощью правил нормализации Проверка модели в отношении транзакций пользователя Создание диаграмм «сущность-связь» Определение требований поддержки целостности данных
Определение требований поддержки целостности данных Преобразование концептуальной модели в логическую модель Определение набора отношений исходя из структуры логической модели Проверка модели с помощью правил нормализации Проверка модели в отношении транзакций пользователя Создание диаграмм «сущность-связь» Определение требований поддержки целостности данных
Физическое проектирование
Задачи физического этапа проектирования Дать понятие физической схемы Перенос глобальной логической модели данных в среду целевой СУБД Проектирование основных таблиц в среде целевой СУБД Реализация бизнес-правил в среде целевой СУБД Проектирование физического представления базы данных Анализ транзакций Выбор файловой структуры Определение вторичных индексов Определение требований к дисковой памяти Разработка механизмов защиты Разработка пользовательских представлений Определение прав доступа Организация мониторинга и настройка функционирования системы
Особенности проектирования иерархических структур Наряду с «плоскими» данными, при построении даже простых информационных систем приходится хранить в БД и информацию о «вложенных» друг в друга сущностях, т.е. иерархические данные.
Простейшая иерархия HIERARCHY (Id, Parent_Id, Name) Листинг 1. Выборка непосредственных потомков узла: SELECT Id FROM HIERARCHY WHERE Parent_Id = <значение id текущего узла-родителя> Листинг 2. Выборка непосредственного родительского узла: SELECT Id FROM HIERARCHY WHERE Id = <значение Parent_id текущего узла-предка>
Обход дерева
Проектирование каталога
Построение транзитивного замыкания
Особенности проектирования сетевых структур
Теория нормальных форм Нормализация – это пошаговый обратимый процесс декомпозиции (разложения) исходных отношений на более мелкие и простые отношения. При этом устраняются все нежелательные функциональные зависимости. Функциональные зависимости Если есть атрибуты А и В, то говорят, что В функционально зависит от А, если для каждого значения А в любой момент времени существует ровно одно связанное с ним значение В, причём А и В могут быть составными – представлять собой группы, состоящие из 2-х и более.
Таблица СОТРУДНИК
1 нормальная форма СОТРУДНИК (отношение, приведенное к 1-ой нормальной форме) Отношение находится в первой нормальной форме (1НФ), если все атрибуты простые (атомарные) и нет повторяющихся групп
Нотация Чена
Нотация IDEF1X Обозначения сущностей: имя имя Обозначения связей:
Нотация IDEF1X (продолжение) Обозначение кардинальности связей:
Пример
Нотация IDEF1X (продолжение)
Литература К. Дж. Дейт, "Введение в системы баз данных", 7-е издание. "Вильямс", 2001 Базы данных: модели, разработка, реализация / Т.С. Карпова –СПб:Питер, 2001 Джексон Г. Проектирование баз данных для использования с микроЭВМ. М.: Мир, 1991 Баркер Скотт. Профессиональное программирование в Microsoft Access 2002.:Пер.с англ.-М.:Издательский дом ”Вильямс”,2002. Мещеряков Е.В., Хомоненко А.Д. Публикация БД в Интернете. СПб.: БХВ-Петербург, 2001.
Системы с централизованной архитектурой
34704-baz_dann_kh_1_osnovy.ppt
- Количество слайдов: 172