С.Д. Кузнецов. Базы данных. Модели и языки

Прочитал книгу С.Д. Кузнецова «Базы данных. Модели и языки». Когда я покупал эту книгу, то в первую очередь искал что-нибудь про основы теории баз данных и SQL без привязки к конкретной системе управления баз данных (СУБД). В книжном в основном были книги или подозрительно тонкие, в которых явно много интересного не поместится, или сухие справочники по SQL. Судя по оглавлению эта книга должна была быть как раз тем, что я хотел.

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

Сразу после исторического экскурса начинается часть, посвященная проектированию реляционных баз данных. Здесь вводятся основные понятия баз данных (кортежи, отношения, домены). Описываются их основные свойства. Вводятся операции в троичной логике (true, false, NULL/unknown). После этого рассматриваются два типа алгебры. Собственно, классичаская (традиционная) реляционная алгебра, предложенная Эдгаром Коддом, по сути основоположником реляционных баз данных, и так называемая алгебра А, которую ввели Кристофер Дейт и Хью Дарвен. В книге математически строго описываются основные операции над данными в обоих алгебрах и описываются их свойства. Для каждой операции приводятся таблицы (отношения) с примерами. Для каждой операции алгебры А математически выводится аналог в алгебре Кодда, а заодно и показывается ее избыточность.

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

В следующей главе рассказывается про графическое моделирование баз данных с помощью ER-диаграмм и диаграмм UML. Здесь описываются те же приемы для нормализации баз данных переходы к тем же нормальным формам, но применительно к ER-диаграммам. Затем описывается проектирование баз данных на языке UML, используя диаграммы классов. Если честно, ER-диаграммы мне показались более удобными для проектирования, чем UML.

В следующей части книги автор переходит к описанию языка SQL. Сначала идет рассказ о его развитии, о том как фирма IBM его придумала для использования в своей СУБД System R (SQL сначала назывался SEQUEL — Structured English Query Language). Автор описывает теоретические и реализованные в коммерческом софте возможности этого языка. После этого начинается подробное описание элементов языка SQL, ориентируясь на стандарт SQL:1999.

Кузнецов последовательно описывает типы данных, используемые в SQL, средства для определения доменов и таблиц, а также их изменение. Удобно, что все операции показываются на одной и той же базе данных. Для каждой операции приводятся несколько примеров с возрастающей сложностью.

Для каждой описываемой операции автор приводит ее определение в форме Бэкуса-Наура, не говоря об этом. Все-таки было бы неплохо, если бы он сначала кратко описал эту нотацию, хотя по мере чтения ее смысл проясняется (но все-таки некоторые ее элементы автор описывает в сносках). Форма Бэкуса-Наура приводится для всех операций, даже таких простых и понятных как +, -, * , / и булевых операций.

После этого идет большая глава, посвященная операции SELECT для выборки данных. Автор не забыл здесь и про рекурсивные запросы.

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

После этого начинается новый интересный раздел, посвященный развитию баз данных применительно к объектно-ориентированному программированию. В этом разделе находится три главы, каждая из которых посвящена одному из так называемых манифестов: Манифесту систем объектно-ориентированных баз данных (первый манифест), Манифесту систем баз данных третьего поколения (автор его называет манифестом объектно-реляционных баз данных или второй манифест) и манифесту Кристофера Дейта и Хью Дарвена, так называемому Третьему манифесту, в котором они призывают отказаться от SQL и разрабатывают строгую модель своего, «истинно реляционного» языка. В каждой из глав автор пересказывает суть манифеста с комментариями, а в конце приводит примеры реализованных СУБД, работа которых основана на данном из манифестов. Очень интересные главы, чтобы понять кто как видит дальнейшее развитие баз данных.

В заключении, а точнее в приложении, автор кратко рассказывает о том, что нового появилось в стандарте SQL:2003.

Итоги

По содержанию эта книга это как раз то, что я и искал, описано довольно много интересных тем, причем подробно. Но читается книга тяжело, в ней много математического формализма, через который приходится продираться, чтобы понять что-то на пальцах, хотя в каждом разделе есть примеры, и не мало. Некоторые главы перечитывал по два раза. Автор, по-моему, слишком упирает на стандарт SQL, описывая операторы. Это, конечно, полезно, но перед чтением стандарта хотелось бы сначала прочитать то же самое, но показанное более просто, с меньшим формализмом.

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

Книгу стоит читать, если вы хотите понять общую теорию баз данных, не привязываясь к какой-то конкретной релизации. Если вам надо по-быстрому изучить SQL, то лучше поискать другую книгу. «Базы данных. Модели и языки» не почитаешь и в транспорте, во-первых, у нее довольно большой размер (все-таки больше 700 страниц), а, во-вторых, читать ее надо в тишине, вдумываясь в каждое предложение, книга довольно трудная.

Под конец не могу не привести один запрос, который показался полезным :): «Удалить из таблицы EMP (сотрудники) все строки, относящиеся к служащим, размер заработной платы которых превышает размер заработной платы менеджеров их отделов» — менеджеры дорвались до базы и решили уволить всех, кто получает больше их самих 🙂

Ссылки

Как оказалось, многие главы книги можно найти в интернете, выложенные судя по всему с согласия автора еще за несколько лет до издания книги. Некоторые найденные ссылки, к сожалению, уже не работают. Вот несколько работающих ссылок:

Основы современных баз данных

Три манифеста баз данных: ретроспектива и перспективы

Наиболее интересные новшества в стандарте SQL:2003

Для полноты картины вынесу сюда еще некоторые ссылки, которые упоминались в тексте.

Манифест систем объектно-ориентированных баз данных

Системы баз данных третьего поколения: Манифест

Работающих ссылок на перевод третьего манифеста мне найти не удалось, зато есть англоязычный сайт, посвященный третьему манифету — The Third Manifesto

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 6, средняя оценка: 4,67)
Загрузка...

комментария 3

  1. Nicolaus:

    Спасибо за подробное описание книги!

    Я и сам последнее время присматриваюсь к работам С.Д.Кузнецова в области баз данных. Кое-что просматривал в электронном виде. Он пишет со знанием дела, основательно (не ТАК, как некоторые любители плагиата, которые бездумно переписывают сами не зная чего — есть у меня такая книга по БД — куча ошибок и нелепых фраз). Только, действительно, — Кузнецова читать тяжело!

    Вы, Jenyay, много читаете. Не могли бы Вы что-то посоветовать начинающему почитать по теории БД?
    Такое, чтобы можно было разобраться с нормализацией БД, к примеру.

    А также что-то хорошее по MS SQL.
    Или с чего лучше начать ПРАКТИЧЕСКИ изучать БД? Я начал с Delphi — Paradox. Но вижу — Парадокс это не то… Никому он не нужен. И несерьёзно это.

  2. Jenyay:

    В качестве теории многие хвалили книгу Основы реляционных баз данных Ульмана, сам я ее не читал, но когда листал в магазине, она действительно показалась толковой.

    А для практики есть неплохая книжка Мартина Грабера SQL. Там теории практически нет, но доходчиво объясняется сам язык.

  3. Nicolaus:

    Спасибо!

Leave a comment

Subscribe without commenting