Введение в системы БД (542480), страница 28
Текст из файла (страница 28)
Предопределенность означает, что пользовательский интерфейс прост для понимания, документирования, обучения, изучения, использования и запоминания." 3.3. Раге СЗ. апд НцЕЬ Рагчгеп. Роопдаг!оп Бог ОЬ)есОКе!аг!опа! РагаЬазез: ТЬе гЬ!гс! щап!1езго. — Кеад!п8, Маваг Адд!зоп-%ез!еу, 1998. Также см. вводный обзор статьи "ТЬе ййгд щап!Тезго: Роопдабоп Бог ОЬ)есг/Ке!аг!опа! РасаЬазез" в издании Раге С.Ю., НоЕЬ Рамеп, РачЫ Мсбочегап. Ке!аг!опа! РагаЬазе %г!г!пйз 1994-1997.— Кеад!п8, Маваг Адд!зоп-%ез!еу, 1998.
Третий манифест — это детализированное, формальное и подробное предложение будущих направлений развития СУБД. Манифест можно рассматривать как абстрактный план проектирования СУБД и языка этой СУБД. Данный план основан на классических фундаментальных понятиях тип, значение, переменная и оператор. Например, у нас может быть тип 1ЕТЕОЕЕ; целое число "3" может быть значением этого типа; Е может быть переменной этого типа, значение которой в каждый момент — это некоторое целое значение (т.е. некоторое значение этого типа); знак "+" может быть оператором, применяемым к целым значениям (т.е. к значениям этого типа).
Ответы к некоторым упражнениям 3.3. На рис. 3.10 показаны строки таблиц ТАЕЕЕЯ и СОЬОИЕЯ (остальные строки, описывающие пользовательские таблицы, пропущены). Понятно, что дать точные значения в столбцах СОЕСООЕТ и ЕОИСООЕТ невозможно. Рйс 3.10. Записи каталога для самих иеременных-отношений ТЛВЕЕЯ и СОМИКЕ 1схсмот ически) 117 Глрва 3. Введение в реляционные базы данных 3.4.
Запрос предназначен для выбора номеров и городов тех поставщиков, которые поставляют деталь с номером 'Р2'. 3.5. Значение этого запроса следуюшее; "Выбрать номер поставшика из Лондона, поставляющего деталь с номером 'Р2'". Первый шаг при выполнении запроса (замена имени Ч значением, определяющим переменную-отношение Ч) дает следуюшее. ( ( ( ( Я 301Н ЯР ) ИНЕНЕ Р() = 'Р2' ) ( Я(), С1ТТ ) ) ИНЕЕЕ С1ТТ = '1опдоп' ) ( Я() ) Это выражение можно упростить. ( ( Я МНЕЕЕ С1ТТ = ')спбоп' ) 001Н ( ЯР ИНЕЕЕ Р( = 'Р2' ) ) ( Я() ) Объяснение и дальнейшее обсуждение правил построения подобных выражений приводятся в главах 9 и 17. 118 Чисть 1 Основные понятия Глава 4 Введение в язык ЯЦЕ 4.1.
Введение Как отмечалось в главе 1, БОЬ является стандартным языком для работы с реляционными базами данных и в настоящее время поддерживается практически всеми продуктами, представленными на рынке. Он был разработан в компании 1ВМ Кезеагсй в начале 1970-х годов [4.8], [4.9], [4.28]. Первой серьезной реализацией этого языка был продукт- прототип Буыеш К компании!ВМ [4.1]-[4.3], [4.11]-[4.13]; впоследствии он был реализован в многочисленных коммерческих продуктах как компании! ВМ [4.20], так и других изготовителей. В этой главе представлено введение в язык БОЬ, а дополнительные аспекты, касающиеся таких вопросов, как целостность, защита и т.п., обсуждаются в последующих главах, специально посвященных этим темам. При обсуждении языка мы будем основываться (если не утверждается противное) на текущем стандарте, неформально называемом БОЬ/92 (иначе — ВД1-92 или просто ВДЕ2 [4.22], [4.23]).
Его официальное название — Международный стандарт языка баз данных БОЬ (1992) (1пгегпаг1опа! Бгапбагб РагаЪазе Ьапйцайе БОЬ). Замечание. Необходимо сразу же добавить, что разработка следующего нового стандарта БОЬЗ близится к завершению и его утверждение ожидается в конце ! 999 года. К этому времени данная книга уже появится в продаже и текущий стандарт, возможно, будет называться БОЬ'99, а не БОЬ/92.
Однако мы сочли, что, если при обсуждении языка основываться на еще не утвержденном стандарте 9 Н.З, зто может привести к недоразумениям, поскольку совершенно очевидно, что ни один продукт еще не поддерживает данный стандарт. Поэтому мы решили рассмотреть стандарт БОЬЗ отдельно, в приложении Б. Во всяком случае, и это необходимо отметить, ни один из коммерческих пролуктов к моменту написания книги не поддерживал в полной мере даже стандарт БОЬ!92'.
Те языки, которые обычно поддерживаются отдельными продуктами, можно назвать "надмножестаами подмножества" языка 8 Н '92. Другими словами, любой продукт, не поддерживающий некоторых аспектов стандарта, в других отношениях, возможно, превосходит его. Например, СУБД 1ВМ РВ2, безусловно, не поддерживает всех функциональных возможностей, предусмотренных стандартом БОЬI92 в отношении обеспечения целостности данных, тем не менее она превосходит стандарт в отношении правил, связанных с обновлением представлений. И еще несколько предварительных замечаний. ° Язык БОЬ первоначально разрабатывался конкретно как подъязык данных. Однако после включения в стандарт в конце 1996 года такого средства, как постоянные хранимые модули (Регзапепг Бгогес! Мода!ез — РБМ), язык стал полностью вычис- Г На саллом деле ни один иэ продуктов, по-видимому, и не смог бы поддерживать в полной мере спландарпл 5йь 92, поскольку в этим стандарте на сегодняшний день содерлсится множество рисложден ий, ошибок и противоречий.
Подробно элют вопрос рассматривается в г4. 197. 119 Глава 4. Введегене в язык ЯДА лительным (и сейчас в нем имеются процедурные операторы, например СИ1, ЕЕТОЕЕ, ЕЕТ, САЯЕ, 1Р, ЕСОР, ЕЕАЧЕ, кВ1ЕЕ, ВЕРЕАТ, а также несколько связанных с ними функциональных возможностей, например можно использовать переменные и обработчики исключительных ситуаций). Поэтому во многих случаях отпала необходимость в объединении ЕОЬ с каким-то отдельным "основным" языком для разработки полнофункционального приложения.
Однако в этой книге возможности РБМ рассматриваться не будут. ° Вас не должно удивлять, что в языке ЕОЬ вместо терминов отношение и переменная-отношение используется термин таблица (см. главу 3). Именно этот термин используется стандартом языка Б()Ь и поддерживающими его продуктами, поэтому в соответствии с ними мы будем использовать указанный термин в данной главе (и везде, где пойдет речь о языке Е Ь), Кроме того, в языке Я)Ь не употребляются термины заголовок и тело (таблицы или отношения).
° Необходимо подчеркнуть, что ЕОЬ вЂ” язык очень большого объема. Документ по его стандарту [4.22] содержит свыше 600 страниц (а описание стандарта БОЬЗ— в два раза больше). Поэтому в книге, подобной этой, невозможно дать исчерпывающее описание языка. Достаточно полно мы сможем рассмотреть лишь самые важные его аспекты.
Хотелось бы предупредить читателя, что приведенное здесь описание языка во многих случаях беглое и поверхностное. В частности, мы, не колеблясь, опустили материал, не относящийся непосредственно к обсуждаемой теме, и для краткости сделали существенные упрощения. Более полное (но также учебное) описание языка БОЬ можно найти в [4.4], [4.
!9] и [4.27]. ° И наконец, нельзя не сказать о том (как уже неоднократно отмечалось в предыдущих главах), что языку ЯИ. еше очень далеко до совершенного реляционного языка, В нем много недостатков, появившихся в результате как недоделок, так и переделок. Однако как бы там ни было, это — стандарт, он полдерживается практически всеми продуктами, представленными на рынке, и поэтому каждый специалист по базам данных должен быть знаком с этим языком, по крайней мере в том объеме, который охватывает эта книга. 4.2.
Обзор языка Я)Е В языке Б()Ь имеются операции как определения данных, так и манипулирования ими. Сначала мы познакомимся с операциями определения данных. На рис. 4.1 показано, как с помощью средств языка Я)Ь определяется база данных поставщиков и деталей (ср. с рис. 3.9 в главе 3). Как можно видеть, определение включает один оператор СЕЕАТЕ ТАВБЕ для каждой базовой таблицы (как указывалось в главе 3, ключевое слово ТАВЕЕ в операторе СЕЕАТЕ ТАВЕЕ обозначает именно базовую таблицу).
Каждый оператор СЕЕАТЕ ТАВБЕ задает имя создаваемой базовой таблицы, имена и типы данных столбцов этой таблицы, а также первичный ключ таблицы и любые внешние ключи, присутствующие в ней (кроме того, может быть указана другая дополнительная информация, которая не показана на рис. 4.1). Приведем еше пару замечаний по синтаксису. ° Обратите внимание, что символ "Е", который мы часто используем в именах столбцов, на самом деле в стандарте ЕОЫ92 недопустим. 1го Часть 1. Основньге понятия ° В качестве признака конца оператора мы здесь используем символ ";", хотя согласно стандарту Я() '92 выбор используемого для этой цели символа зависит от реализации.
Детальное рассмотрение данного вопроса выходит за рамки этой книги. Рис. 4. ). Определение базы данныи настави)иков и деталей средстваии языка БДБ Одно из важных отличий между рис. 4.1 и его аналогом (рис. 3.9) в главе 3 состоит в том, что на рис. 4.1 нет ничего, соответствующего определениям типов (т.е, операторов ТУРЕ). И причина этого, конечно, заключается в следующем: в языке Б()). пользователю не разрешается определять собственные типыз. Поэтому для определения столбцов можно использовать только встроенные (определенные систелюй) типы. В языке Я()). поддерживаются следующие встроенные типы, которые фактически не требуют дополнительных разъяснений. 1НТЕОЕК БМАЬЫНТ РВОАТ (Р) З В языке лоб 92 разрешается определять собственные типы для так называемых доменов, однако эти "домены" на самом деле — не домены (т.е.
типы) е реляционном смысле (см, подробности приводятся в главе 5). Замечание. Определяемые пользователем типы данных поддерживаются стандартом о01.3 (приложение Б). 1"л((ва 4. Введение в язык ВД(, СКЕАТЕ ТАВОТЕ Я ( Я$ СКАК(5), БНАМЕ СКАК(20), БТАТВЯ Н11МЕК1С(5), СУТХ СНИЦ15), РКУМАКУ КЕУ ( Б$ ) ) ; СКЕАТЕ ТАВОТЕ Р ( Р$ СНИЦб), РНАМЕ СКАК(20), СОЫК СНАК(б), НЕ16НТ НВМЕК1С(5,1), С1ТХ СНИЦ15), РКУМАКУ ЕЕУ ( Рб ) ) СКЕАТЕ ТАВОТЕ ЯР ( Я$ СКАК(5), Р$ СНАК(б), ОТУ НОМЕК1С(9), РКУМАКУ КЕУ ( Я$, Р$ ), РОКЕ16Н КЕХ ( Я$ ) КЕРЕКЕНСЕБ Я, РОКЕ16Н КЕХ ( Р$ ) КЕРЕКЕНСЕЯ Р ) СЯАКАСТЕК ( ЛЖУ1НО ) (п) ВУТ [ з)АКУ1НО ) (и) ННМЕК1С (РгН) ОЕС1МА)з (Рг<Х) РАТЕ Т1МЕ ТТМЕЯТАМР 1НТЕКЧАВ В языке ЯОЬ поддерживается множество значений, принимаемых по умолчанию, сокращений и альтернативных написаний.