Базы данных

Предисловие

Материал, касающийся баз данных достаточно сложен и рассчитан на учащихся 11-х классов и студентов вуза. Это связано с тем, что здесь обобщается большинство фундаментальных принципов работы с информацией и подводиться основа под необходимость её структурирования с соблюдением далеко не очевидных принципов.

К сожалению, большинство учебных пособий и данных размещенных в Интернете, содержат бессмысленное упрощение/усложнение темы, оторваны от практики, изобилуют ошибками и откровенной глупостью.

Значительная часть учебных материалов основана на MS Access (а, скорее, жестко привязана), который нельзя воспринимать, как реальную СУБД. Практика показала, что данная среда является достаточно эффективной средой для написания мало подготовленными пользователями интерфейса для обращения к серверным БД. Однако самостоятельное значение MS Access чрезвычайно преувеличено. Также данная среда малопригодна для обучения ввиду нестандартной и, зачастую, неверной реализации ряда возможностей. Это только мое мнение, но хочется настоятельно порекомендовать учесть его.

Изначально, использование персональных компьютеров (ПК) было в основном связано с обработкой текстов, применением электронных таблиц и ведением баз данных. Характеризуя ситуацию в общем, можно сказать, что ПК применяется для накопления, хранения и обработки информации, а также автоматизации отдельных видов труда, откуда вытекает огромная значимость баз данных (БД), которые позволяют реализовать большую часть этих задач. Более того, специализация на быстром поиске информации позволяет реализовать большинство этих функций наиболее эффективно.

Самостоятельного значения БД, как правило, не имеют в связи с необходимостью проведения над ними вышеназванных операций. Поэтому, обычно говорят о системах управления базами данных (СУБД). СУБД состоит из нескольких компонентов:

Базы данных представляют собой определенную вершину работы с информаций и современных информационных технологий. Достаточно всего лишь понять, что работа Интернета и поисковых систем основывается на хранении и быстром поиске информации в базах данных. Кроме того, большинство государственых и комерческих организаций так или иначе занимаются сбором (накоплением) и обработкой данных, что также неосуществимо без этого класса программ.

При разработке программных информационных систем до трети времени уходит на описание способов структурирования информации, столько же – на написание программы, а остальное – на доводку и подготовку документации.

Любые ошибки, допущенные на первом этапе, разрушительно отражаются на всей работе. Можно ли найти причину этого и устранить её?

Естественно, что разработкой БД занимается профессиональный программист. Но он обычно ничего не понимает в конкретной предметной области, в чём ему помогает специалист. Последний, в свою очередь, ничего не понимает в базах данных. Стоп! Почему это? Ведь он учился в школе и вузе!

Именно понимание того, как происходит ввод информации в базу данных и её извлечение в соответствии с возможностями СУБД и потребностями конкретных категорий пользователей лежит в основе успеха.

Этапы разработки

В реальной разработке БД и программы для ее обслуживания с определенной долей условности можно выделить следующие этапы.

  1. Изучение исходных данных.
  2. Написание технического задания (ТЗ).
  3. Создание структуры базы данных и составляющих ее таблиц.
  4. Разработка пользовательского интерфейса для работы с БД, разработка типовых отчетов.
  5. Написание Справки и документации.

Чтобы более-менее полноценно реализовать их все с учебной целью (с параллельным изучением программирования в СУБД) хватит разве что ежедневных двухчастовых занятий в течение года.

В связи с этим, обсуждение будет касаться только создания структуры таблиц с указанием на зависимость от требуемых результатов (пользователей, объемов или масштаба, среды исполнения и т.п.)

Классификация СУБД

Первое, о чем надо сказать, что СУБД возникли раньше, чем классификация. Последняя лишь отражает возникновение новых классов, то есть выстраданную практикой реализацию новых потребностей.

Различают реляционные (абсолютное большинство), иерархические (NoSQL, IMS), сетевые (IDMS) модели данных и соответствующие этим моделям СУБД. Также можно выделять объектно-ориентированные, специализированные (документо-ориентированные, химические...) и работающие в режиме реального времени. Помимо этого возникают определенные основания для классификаций, связанные со сферой или методикой применения, используемыми технологиями или устройствами, а также другие подходы, зачастую высосанные из пальца. Объективно говоря, одна и та же СУБД может быть отнесена к нескольким классам в зависимости от подхода.

Исторически первыми стали реляционные СУБД (от англ. relation – отношение, связь). Они же абсолютно доминируют по распространенности и значимости.

Более подробная информация по отдельным представителям приведена здесь.

Реляционные СУБД

Название данного класса происходит от англ. relation (отношение, связь) и характеризует построение информационного массива в виде связанных между собой таблиц.

Для разбора понятий, используемых в СУБД, целесообразно сначала рассмотреть с формальной точки зрения информацию, предназначенную для ввода в базу. Как правило, это перечень каких-либо явлений или предметов (объектов) с описанием их свойств. По сути – это картотека, где каждому явлению (предмету) соответствует карточка. По своему происхождению БД и есть электронная картотека, со всеми вытекающими отсюда преимуществами. Ее карточки имеют специфическое название – записи. Каждому явлению соответствует ряд общих свойств или характеристик, соответствующих содержанию бумажной карточки. Каждое свойство (характеристика) в БД называется полем и имеет имя тип и размер. Полный перечень полей с их типами и размерами составляет структуру БД.

Базы данных (БД) – файлы, содержащие информацию, разделенную на показатели. Базы данных используются для поиска, систематизации (сортировки и выделения) информации, проведения поиска по определенным критериям.

Современная концепция предусматривает несколько иную трактовку понятий. Так, единичный файл, содержащий информацию, называется таблицей. Несколько таблиц, объединяются в информационную систему, которая и называется базой данных. В ней описываются все связи между таблицами, а также комплекс параметров, определяющих условия сохранности информации при добавлении, удалении и редактировании (условия целостности БД).

Структура БД – перечень полей, имеющихся в базе данных с их характеристиками.

Таблицы

Таблица БД обычно представляет собой файл, хранящий описание некой совокупности объектов или явлений.

Интересна концепция правильной организации файла. Он состоит из двух частей: заколовка, описывающего, как и какая информация хранится в теле файла. Тело состоит из записей длиной ровно в сумму длин полей. За счет этого можно практически мгновенно переместится на любую запись, если известен ее номер. На этом основан быстрый поиск информации, принципиально невозможный в файлах с другой архитектурой.

Название таблицы играет достаточно большую роль, основанную на семантике. Дело в том, что каждое поле таблицы должно описывать ОДНО свойство объекта, каждая запись – ОДИН объект, а таблица, соответственно, – совокупность множества объектов. Большинству начинающих разработчиков необходимо руководствоваться этими понятиями единичности и множественности во избежании ошибок. Имя файла должно быть множественным числом названия объекта, описываемого одной записью и никак иначе.

Схематичное представление таблицы реляционной базы данных

Поле 1Поле 2...Поле i 
    Запись 1
    ...
    Запись j

Литература, ресурсы

  1. Мейер М. Теория реляционных баз данных, М.: Мир, 1987, 608 с.
  2. Крёнке Д. Теория и практика построения баз данных. 8-е изд., СПб.: Питер, 2003, 800 с.
  3. Кнут Д.Э. Искусство программирования (The Art of Computer Programming) в 3-х томах, пер. с англ., 2005–2010.

Контрольные вопросы

  1. Понятия базы данных и таблицы базы данных.
  2. Что такое СУБД?
  3. Что такое поле БД?
  4. Что такое запись в БД.
  5. Что такое структура таблицы БД и структура БД.
  6. Основные типы полей и их краткая характеристика.
  7. Содержание понятия реляционности. (Своими словами!)
  8. Понятие нормализации БД. (Своими словами!)
  9. Способы отображения информации из БД.
  10. Назначение индексов.

Задания

  1. Имеется база данных об учениках. Ежегодно приходят новые. Как сделать так, чтобы не вводить некоторую информацию о них, если здесь ранее учились их старшие братья/сестры (помощь оператору). +То же самое, но на глобальном уровне.