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

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


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

недетерминированные» выражения..................... 314
Пустые множес­тва................................................................... 315
БНФ-грамматика таб­личных выражений SQL.............................. 315
Упражнения............................................................................ 318

Приложение A. Реляционная модель.......................................... 320
Реляционная и другие модели.................................................... 322
Определение реляционной модели.............................................. 325
Цели реляционной модели........................................................ 331
Некоторые принципы баз данных............................................... 331
Что осталось сделать?............................................................... 333

Приложение B. Теория проектирования баз данных.................... 338
Место теории проектирования................................................... 339

Оглавление

11

Функциональные зависимости
и нормальная форма Бойса/Кодда.............................................. 342
Зависимости соединения и пятая нормальная форма..................... 348
Тост за здоровье нормализации.................................................. 357
Ортогональность...................................................................... 361
Некоторые замечания о физичес­ком проектировании.................... 364
Заключительные замечания...................................................... 366
Упражнения............................................................................ 368

Приложение С. Ответы к упражнениям....................................... 372
Глава 1................................................................................... 372
Глава 2................................................................................... 379
Глава 3................................................................................... 387
Глава 4................................................................................... 392
Глава 5................................................................................... 398
Глава 6................................................................................... 404
Глава 7................................................................................... 413
Глава 8................................................................................... 424
Глава 9................................................................................... 433
Глава 10.................................................................................. 440
Глава 11.................................................................................. 448
Глава 12.................................................................................. 450
Приложение B......................................................................... 450

Приложение D. Дополнительная литература.............................. 460
Алфавитный указатель............................................................... 469

Предисловие
Язык SQL распространен повсеместно. Но работать с SQL трудно: он
сложен, запутан, при написании SQL-команд легко допустить ошибку –
рискну предположить, что куда легче, чем можно судить по уверениям
апологетов этого языка. Поэтому, чтобы уверенно писать правильный
SQL-код (то есть такой, который делает в точности то, что вам нужно, не
больше и не меньше), необходимо четко следовать некоторому правилу.
А основной тезис настоящей книги заключается в том, что таким правилом может стать использование SQL в соответствии с реляционной
теорией. Но что это означает? Разве SQL не является изначально реляционным языком?
Да, конечно, SQL – стандартный язык для всех реляционных баз данных, но сам по себе этот факт не делает его реляционным. Как это ни
печально, SQL слишком час­то отходит от принципов реляционной теории; строки-дубликаты и null-значения – два наиболее очевидных примера, которыми проблема отнюдь не ограничивается. Следовательно,
он предлагает вам путь, который может привести в западню. А если вы
не желаете попадать в западню, то должны понимать реляционную теорию (что она собой представляет и для чего предназначена), знать, в чем
именно SQL отклоняется от этой теории, и уметь избегать проблем, которые могут из этого проистекать. Одним словом, SQL следует использовать в реляционном духе. Тогда вы сможете действовать так, будто
SQL на самом деле реляционный язык, и получать все преимущества
от работы с тем, что по сути является истинно реляционной сис­темой.
В подобной книге не возникло бы необходимости, если бы все и без того
использовали SQL реляционным образом, – но, увы, это не так. Напротив, в современном применении SQL я вижу проявление множества
вредных тенденций. Более того, эти способы применения относятся
к рекомендуемым в различных учебниках и иных публикациях авторами, которые должны были бы относиться к своей работе более ответственно (имен не привожу и на посмешище выставлять не хочу); анализ литературы в этом от­но­ше­нии оставляет удручающее впечатление.
Реляционная модель появилась на свет в 1969 году, и вот – почти сорок
лет спустя – она, похоже, так и не понята по-настоящему сообществом
пользователей СУБД в целом. Отчас­ти поэтому в основу организации
настоящей книги положена сама реляционная модель; подробно объясняются различные аспекты этой модели, и для каждого аспекта демонстрируется, как лучше всего реализовать его средствами SQL.

14

Предисловие

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