SQL и реляционная теория. Как грамотно писать код на SQL

SQL и реляционная теория. Как грамотно писать код на SQL
Автор: К. Дж. Дейт
Год: 2010
ISBN: 978-5-93286-173-8
Страниц: 474
Язык: Русский
Формат: PDF
Размер: 10 Мб

Download

Язык SQL распространен повсеместно. Но работать с ним непросто: он сложен, запутан, при написании SQL-команд легко допустить ошибку. Понимание теории, лежащей в основе SQL, – лучший способ гарантировать, что ваш код будет написан правильно, а сама база данных надежна и легко сопровождаема.
В предлагаемой книге К. Дж. Дейт – признанный эксперт, начавший заниматься этими вопросами еще в 1970 году, – демонстрирует, как применить реляционную теорию к повседневной практике работы с SQL. Автор подробно объясняет различные аспекты этой модели, рассуждает и доказывает, приводит многочисленные примеры использования этого языка в соответствии с реляционной теорией.
Не будучи привязанным ни к какому конкретному продукту, издание опирается на многолетний опыт исследований и представляет наиболее актуальное на сегодняшний день изложение материала. Всякий, имеющий хоть какой-то опыт использования SQL – от скромного до весьма обширного, – получит от прочтения этой книги немалую пользу и удовольствие.

+

Предварительные требования

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

Я сказал, что ожидаю от вас достаточно близкого знакомства с SQL. Добавлю, однако, что некоторые аспекты SQL я все равно буду объяснять подробно – особенно те, что на практике применяются нечасто. (В качестве примера упомяну «потенциально недетерминированные выражения». См. главу 12.)

Введение

Реляционный подход к SQL – вот тема или одна из тем настоящей книги. Разумеется, чтобы должным образом раскрыть эту тему, мне придется рассматривать вопросы, касающиеся как реляционной теории, так и самого языка SQL. И хотя это замечание очевидным образом применимо ко всей книге, к первой главе оно относится в особенности. Поэтому здесь мы почти не будем говорить о языке SQL как таковом. Моя цель сейчас – дать обзор материала, большая часть которого вам, скорее всего, уже известна. Я хочу обозначить некую отправную точку, то есть заложить фундамент, на котором можно будет возводить здание
книги. Но, даже искренне рассчитывая на то, что вы в основном знакомы с тем, о чем я собираюсь рассказать в этой главе, я все же предлагаю не пропускать ее. Вы должны знать то, что знать надлежит (надеюсь, вы понимаете, что я хочу сказать); в частности, вы должны владеть всем, что понадобится для понимания материала следующих глав. На самом деле я – со всем уважением – порекомендовал бы вообще не пропускать рассмотрение тем, которые вам кажутся знакомыми. Например, так ли вы уверены, что знаете, что в реляционной терминологии понимается под ключом? Или что такое соединение?

Реляционная модель очень плохо понята

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

  • Модель преподносится в отрыве от всего, в «вакууме». Поэтому начинающему очень трудно уловить значимость материала или понять, какие проблемы модель призвана решить, или то и другое одновременно.
  • Сами преподаватели не до конца понимают или не в состоянии оценить важность материала.
  • Чаще всего на практике модель как таковая не рассматривается вовсе – вместо нее преподается язык SQL или какой-то его диалект, например принятый в Oracle.

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

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

Еще раз повторю: если ваши знания о реляционной модели проистекают исключительно из знания SQL, то ваши знания могут оказаться неверными. Отсюда, в частности, следует, что, читая эту книгу, вы, возможно, обнаружите, что кое-что из уже известного следует забыть, а переучиваться, к сожалению, всегда трудно.