- •Основные вопросы и определения теории бд.
- •Архитектура бд.
- •Технология с сетью и файловым сервером (архитектура "файл-сервер")
- •5 Основные функции субд. Непосредственное управление данными во внешней памяти
- •2.1.2. Управление буферами оперативной памяти
- •2.1.3. Управление транзакциями
- •2.1.4. Журнализация
- •2.1.5. Поддержка языков бд
- •9,10 Моделирование локальных представлений. Объединение локальных моделей
- •12. Реляционные бд. Нормализация отношений. Нормальные формы. Функциональные зависимости.
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Нормальная форма Бойса-Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •Краткие итоги. Зачем нужна нормализация.
2.1.4. Журнализация
Одним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя. Обычно рассматриваются два возможных вида аппаратных сбоев: так называемые мягкие сбои, которые можно трактовать как внезапную остановку работы компьютера (например, аварийное выключение питания), и жесткие сбои, характеризуемые потерей информации на носителях внешней памяти. Примерами программных сбоев могут быть: аварийное завершение работы СУБД (по причине ошибки в программе или в результате некоторого аппаратного сбоя) или аварийное завершение пользовательской программы, в результате чего некоторая транзакция остается незавершенной. Первую ситуацию можно рассматривать как особый вид мягкого аппаратного сбоя; при возникновении последней требуется ликвидировать последствия только одной транзакции.
Понятно, что в любом случае для восстановления БД нужно располагать некоторой дополнительной информацией. Другими словами, поддержание надежности хранения данных в БД требует избыточности хранения данных, причем та часть данных, которая используется для восстановления, должна храниться особо надежно. Наиболее распространенным методом поддержания такой избыточной информации является ведение журнала изменений БД.
Журнал - это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда поддерживаются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД. В разных СУБД изменения БД журнализуются на разных уровнях: иногда запись в журнале соответствует некоторой логической операции изменения БД (например, операции удаления строки из таблицы реляционной БД), иногда - минимальной внутренней операции модификации страницы внешней памяти; в некоторых системах одновременно используются оба подхода.
2.1.5. Поддержка языков бд
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. Мы рассмотрим более подробно языки ранних СУБД в следующей лекции.
В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language). В нескольких лекциях этого курса язык SQL будет рассматриваться достаточно подробно, а пока мы перечислим основные функции реляционной СУБД, поддерживаемые на "языковом" уровне (т.е. функции, поддерживаемые при реализации интерфейса SQL).
6. Этапы проектирования БД.
Законы проектирования баз данных: 1.Системный анализ предметной области 2.Инфологическое проектирование 3.Выбор СУБД 4.Датологическое проектирование 5.Физическое проектирование
I Системный анализ предметной области
На первом этапе проектирования баз данных рассматриваются цели и задачи с помощью которой они будут решатся. Анализируются информационные потребности будущих пользователей баз данных. Рассматриваются формы входных и выходных потоков, которые будут составлять основу баз данных. Затем уточняются алгоритмы и процедуры обработки данных хранимой в базе данных. Формируются требования, которым должна удовлетворять проектируемая база данных и определяется примерный список объектов предметной области, свойства которых будут использоваться при разработке базы данных.
II Инфологическое проектирование
На второй стадии проектирования выполняется моделирование данных. Моделирование данных – это процесс создания логической структуры данных. Существует два подхода к моделированию данных: Модель «Сущность-связь» Семантическая объектная модель Эти модели представляют собой языки для описания структуры данных и их связей в представлениях пользователей. Моделирование данных, подобно блок-схемам, отражают логику программы. Модель «Сущность-Связь» Сущность – это объект, идентифицируемый в рабочей среде пользователя за которым пользователь хотел бы наблюдать. Класс сущностей – это совокупность сущностей, которая описывается структурой, либо форматом сущностей, составляющих этот класс. Экземпляр сущности – представляет собой конкретную сущность. Атрибуты сущности – это свойства сущности, которые описывают характеристики сущности. Идентификаторы – это атрибуты, с помощью которых экземпляры именуются или идентифицируются. Если идентификатор указывает на один экземпляр сущности, то его значение называется уникальным. Если идентификатор не является уникальным, то его значение определяется некоторым множеством экземпляров сущности. Связи – это взаимоотношения сущностей выраженная связями. Модель «Сущность-Связь» включает в себя классы связей и экземпляры связей. Классы связей – это взаимоотношения между классами сущностей. Экземпляры связей – это взаимоотношения между экземплярами сущностей. Типы связей: Связь один к одному (1:1) – одиночный экземпляр сущности одного типа связан с одиночным экземпляром сущности другого типа. Связь один ко многим (1:М) – один экземпляр сущности связан со многими экземплярами другой сущности. Связь многие ко многим (М:N) – несколько экземпляров одной сущности связаны с несколькими экземплярами другой сущности. Модель «Сущность-Связь» или ER-диаграммы включают в себя изображения сущностей в виде прямоугольников (или прямоугольников с закругленными углами), а связей в виде ромбиков (или ромбиков с закругленными углами). На ER-диаграммах атрибуты обозначаются эллипсами. Если атрибутов у сущности много, то чтобы не загружать ER-диаграмму, атрибуты помещают в прямоугольник, в котором идет перечисление всех атрибутов сущности. Семантическая объектная модель Данная модель используется для моделирования данных на этапе инфологического моделирования. Семантический или смысловой объект – это объект, который в определенной степени моделирует смысл пользовательских данных. Они более точно моделируют представления пользователей. У семантических объектов есть имя, а также есть имя и у класса, отличающего его от других объектов и классов. Семантическая модель имеет набор атрибутов. Атрибуты описывают те характеристики объекта, которые необходимы для удовлетворения информационных потребностей в аспекте решаемых задач. Для моделирования данных в семантических объектах используется объектные диаграммы. Такие диаграммы используются разработчиками баз данных для описания и визуального представления структуры объектов. Объекты в них отражаются в вертикально ориентированных прямоугольниках. Имя объекта указывается внутри прямоугольника в верхней его части, а затем следует список атрибутов по порядку их значимости для этого объекта. Для описания типов семантических объектов используются следующие понятия: Однозначный атрибут - атрибуты с максимальным кардинальным числом равным 1. Многозначный атрибут – атрибут, имеющий максимальное кардинальное число большее 1. Необъектный атрибут – это простой или групповой атрибут. Типы объектов: простые, композитные, составные, гибридные, ассоциативные, родитель.
III Выбор СУБД
При выборе СУБД руководствуются следующими соображениями: аппаратное обеспечение, на котором в дальнейшем будет работать проектируемая база данных; системное программное обеспечение, с которым будет в последствии работать проектируемая база данных и соответствующее ей приложения; методология и подходы, к программированию реализованные в той или иной СУБД; модель данных, которая встроена в конкретную СУБД; Выбор СУБД полностью определяется на II этапе построения базы данных, т. к. оно зависит от той модели данных, которая встроена в выбранную СУБД.
IV Датологическое проектирование
После того, как выбор СУБД завершён, необходимо приступить к проектированию датологической модели базы данных. При формировании датологической схемы, каждая из определённых в концептуальной схеме сущностей отображается в таблицу, которая является одним отношением. При этом следует учитывать ограничения на размер таблиц, которые накладывает конкретная СУБД.
V Физическое проектирование
На этом этапе необходимо на конкретной СУБД, которую выбрали ранее, реализовать базу данных по той информации, которую собрали, обработали и подготовили (на предыдущих этапах проектирования базы данных). Описываются модули, их назначение, а также структура модулей.
7. ER – проектирование.
Моделирование методом "сущность-связь"
Результатом моделирования методом "сущность-связь", или ER-моделирования, является ER-модель. ER-модель представляется с помощью ER-диаграмм, которые являются графической нотацией для абстрагирования данных в виде сущностей, взаимосвязей и атрибутов. Таким образом, семантика предметной области представляется в ER-модели в терминах субъективных средств описания – сущностей, атрибутов, идентификаторов сущностей, супертипов, подтипов и т.д.
Сущность предметной области является результатом абстрагирования реального объекта путем выделения и фиксации набора его свойств. Таким образом, сущность представляет класс объектов, который является результатом абстрагирования реального объекта. Обычно они обозначаются именем существительным естественного языка.
Сущность описывается с помощью данных, именуемых свойствами или атрибутами (attributes) сущности. Как правило, атрибуты являются определениями в высказывании о сущности и обозначаются именами существительными естественного языка.
Сущности вступают в связи друг с другом через свои атрибуты. Каждая группа атрибутов, описывающих одно реальное проявление сущности, представляет собой экземпляр сущности (instance). Иными словами, экземпляр сущности – это реализации сущности, отличающиеся друг от друга и допускающие однозначную идентификацию. Именование сущности в единственном числе облегчает в дальнейшем чтение модели. Фактически, имя сущности дается по имени ее экземпляра.
Одним из основных компьютерных способов распознавания сущностей в ИС является присвоение сущностям идентификаторов(Entity identifier). Часто идентификатор сущности называют ключом. Задача выбора идентификатора сущности является семантически субъективной задачей. Поскольку сущность определяется набором своих атрибутов, для каждой сущности целесообразно выделить такое подмножество атрибутов, которое однозначно идентифицирует данную сущность.
Некоторые сущности имеют естественные идентификаторы. Например, естественным идентификатором счета-фактуры является его номер. Идентификаторы сущности могут быть составными — состоящими из нескольких атрибутов, и атомарными — состоящими из одного атрибута сущности.
Уникальный идентификатор сущности — это атрибут сущности, позволяющий отличать одну сущность от другой. Если сущность имеет несколько уникальных идентификаторов, так называемых возможных ключей, то проектировщик должен выбрать первичный ключ сущности.
Различают однозначные и многозначные атрибуты. Однозначными являются атрибуты, которые в пределах конкретного экземпляра сущности имеют только одно значение. В противном случае они считаются многозначными.
Важным моментом изучения модели предметной области проектировщиком является выделение многозначных атрибутов сущности. Это связано с тем, что реляционная модель не поддерживает многозначных атрибутов и они должны быть разрешены на последующих стадиях проектирования.
Каждый атрибут имеет домен (domain). Домен — это выражение, которое определяет значения, разрешенные для данного атрибута. Иными словами, домен — это область значений атрибута. Для каждого атрибута сущности должен быть определен домен. На уровне логического моделирования данных назначение домена атрибуту носит общий характер. Например, атрибут текстовый, числовой, бинарный, дата или "не определен". В последнем случае аналитик должен дать описание домена. На последующих стадиях тип домена конкретизируется, смысл понятия домена в физической модели ХД уже, чем его может понимать аналитик. Это связано с тем, что в рамках физической модели домен реализуется посредством механизма ограничениядомена, а СУБД не понимает неопределенных доменов.
Сущности не существуют отдельно друг от друга. Между ними имеются реальные отношения (Relationship), которые должны быть отражены в модели предметной области. При выделении отношений акцент делается на фиксацию связей и их характеристик.Отношение (связь) представляет собой соединение (взаимоотношение) между двумя или более сущностями. Каждая связь реализуется через значения атрибутов сущностей. Обычно связь обозначается глаголом. Каждая связь также должна иметь свой уникальный идентификатор связи.
В реляционной модели отношения реализуются только через ограничение целостности по внешнему ключу. Поэтому проектировщик реляционного ХД должен проконтролировать, чтобы связь между сущностями осуществлялась через точно указанные атрибуты, которые будут определять уникальный ключ связи. Выбор ключей сущностей — одно из важнейших проектных решений, которое предстоит сделать проектировщику при переходе к физической модели базы данных.
Связи характеризуются степенью связи и классом принадлежности сущности к связи. Степень (мощность) связи – это отношение числа сущностей, участвующих в образовании связи. Например, "один к одному", "один ко многим", "многие ко многим". На уровне логической модели допускается неопределенная или неразрешенная связь. Класс принадлежности сущности — это характер участия сущности в связи. Различают обязательные и необязательные классы принадлежности сущности к связи. Обязательным является такой класс принадлежности, когда экземпляры сущности участвуют в установлении связи в обязательном порядке. В противном случае сущность принадлежит к необязательному классу принадлежности. Для необязательного класса принадлежности сущности степень связи может быть равна нулю, т.е. экземпляр сущности можно связать с 0, 1 или несколькими экземплярами другой сущности. Для обязательного класса принадлежности степень связи не может равняться нулю.
Отношения, связывающие сущность саму с собой, называются рефлексивными. Типичным примером рефлексивных отношенийявляется определение структуры подчиненности в отношении "Сотрудники". Рефлексивные отношения чаще всего отражают иерархические отношения внутри структуры данных. Они порождают ряд проблем проектирования, о которых речь пойдет позже
С точки зрения отношений различают слабые сущности (weak). Слабые сущности – это сущности, которые не могут присутствовать в базе данных, пока не существует связанного с ней экземпляра другой сущности. Примером такой сущности является заказ, который не может существовать без клиента. Слабые сущности имеют обязательный класс принадлежности, и степень связи такой сущности не может равняться нулю. Связь "заказ-клиент" является обязательной.
Выявление слабых сущностей и связанных с ними обязательных отношений необходимо для обеспечения целостности и согласованности данных. Так, например, неизвестному клиенту невозможно приписать заказ.
Иногда выделенная сущность несет в себе отношение включения или отношение "часть-целое". При этом существует некоторый атрибут, значения которого порождают разбиение множества экземпляров сущности на непересекающиеся подмножества —категории сущности. Категории сущности называют подтипами и выделяют в подчиненную в рамках отношения сущность, которая является категорией исходной сущности. Из исходной сущности выделяются общие для полученных категорий атрибуты, и таким образом выделяется сущность, которая становится супертипом. За выделенной сущностью-супертипом обычно оставляют наименование исходной сущности, хотя ее семантический смысл меняется.
Супертип с порожденными им подтипами является примером так называемой составной сущности. Составная сущность является логической конструкцией модели для представления набора сущностей и связей между ними как единого целого.
Пример. Сущность "автомобиль" можно разбить на следующие подтипы: автомобили с приводом на два колеса, автомобили с приводом на четыре колеса, автомобили с переключаемым приводом.
Для проектировщика важно знать, что все экземпляры сущности-супертипа относятся только к одному из ее подтипов. Наличие в модели подтипов и супертипов усложняют проектирование и создают определенные трудности в реализации. Поэтому важно на ранней стадии проектирования установить, является ли наличие супертипов в модели необходимым.
Для этого необходимо предпринять следующие действия:
установить, много ли одинаковых свойств имеют различные подтипы. Следует помнить, что чем меньше подтипы похожи друг на друга, тем больше вероятность введения супертипа ;
или найти экземпляр сущности, который можно обоснованно включить в более чем один подтип. Поскольку это противоречит определению супертипа, предлагаемое разбиение недопустимо.
