SQL и реляционная теория. Как грамотно писать код на SQL [К. Дж. Дейт] (pdf) читать постранично, страница - 5

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

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

«Database in Depth»
Эта книга базируется на ранее изданной книге «Database in Depth: Re­
la­tional Theory for Practitioners» (O’Reilly, 2005) и должна заменить ее.
В предыдущей книге я ставил перед собой такую цель (цитата взята из
предисловия):
Посвятив много лет работе с базами данных в разном качестве,
я пришел к выводу, что существует настоятельная потребность
в книге для практиков (не новичков), где принципы реляционной теории излагались бы вне связи с особенностями конкретных существующих продуктов, коммерческими обычаями или
стандартом SQL. Таким образом, в качестве читательской аудитории я вижу опытных пользователей СУБД, достаточно честных, чтобы сознаться в том, что они не понимают теоретических
основ той области, в которой работают, в той мере, в какой могли
бы и должны были бы понимать. Этой теорией, естественно, является реляционная модель, и хотя фундаментальные идеи, положенные в ее основу, очень просты, надо признать, что они чуть ли
не повсеместно неверно представляются, или недооцениваются,

15

Предисловие
или то и другое вместе. Фактически час­то их не понимают вовсе.
Вот, к примеру, несколько вопросов по реляционной теории1...
На сколько из них вы сможете ответить?
Что в точности означает первая нормальная форма?
Какая связь существует между от­но­ше­ниями и предикатами?
Что такое семантическая оптимизация?
Что такое от­но­ше­ние-образ?
Почему так важна полуразность?
Почему отложенная проверка ограничений целостности не имеет смысла?
Что такое пе­ре­мен­ная-от­но­ше­ние?
Что такое предваренная нормальная форма?
Может ли от­но­ше­ние иметь атрибут, значениями которого являются от­но­ше­ния?
Является ли язык SQL реляционно полным?
Почему так важен принцип информации?
Как XML укладывается в реляционную модель?
Настоящая книга дает ответы на эти и многие другие вопросы.
В общем и целом, ее цель – помочь пользователям-практикам баз
данных глубоко разобраться в реляционной теории и применить
полученные знания в повседневной профессиональной деятельности.

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

По причинам, которые здесь несущественны, я заменил несколько вопросов из оригинального перечня.

16

Предисловие

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