1. Развитие архитектуры вычислительного комплекса. Типы серверов. Определение Открытой системы. Развитие архитектуры вычислительного комплекса

Вид материалаДокументы

Содержание


Архитектура ODBC.
2. Полнота реляционных СУБД (правила Кодда).
3. Microsoft Access (МА) – функционально полная реляционная СУБД. Достоинства системы.
Достоинства ма
Объекты ма.
Форма – объект, предназначенный для ввода данных, отображения на экране данных из запросов и твбл., управления работой приложени
Макрос – объект представляющий собой описание одного или нескольких действий, выполняющихся в ответ на некоторые события. Модуль
Оределение полей
Типы данных
Св-ва полей (общие)
Байт – целые числа (0255), занимает для хранения 1 байт.
Формат поля – задаёт формат представленных данных при выводе на экран и печать.
Маска ввода
Значение по умолчанию
Сообщение об ошибке
Обязательное поле
Пустые строки
Св-во подстановка
1-е окно мастера
Подстановка в табл. данных из справочника
...
Полное содержание
Подобный материал:
ПЕРВЫЙ ВОПРОС:

1. Развитие архитектуры вычислительного комплекса. Типы серверов. Определение Открытой системы.

Развитие архитектуры вычислительного комплекса.

1). Основные ф-ии:

– общение с пользователем;

– вычисление;

– управление;

– работа переферийных устройств.

Режим работы – однопользовательский (в один момент можно использовать только одну ф-ию).

2). Повышение производительности – увеличение кол-ва пользователей (по очереди)


3). Работает гораздо эффективнее локальной сети. (заменили терминалы компьютерами, научный центр PAPC, корпорация XEROX)


4). Функция мейнфрейма разделена между серверами.


Серверы – специальные служебные процессоры, предназначенные для выполнения специфических ф-ий:

– вычислительный сервер

– файл-сервер

В конце 80-х гг. более 30 влиятельных компаний (Microsoft Corporation, SQL Access Group, CLI (Common Language Interface) – стандартный интерфейс языка) – любое приложение с помощью CLI может иметь доступ к другим БД.

Формализованный интерфейс CLI компании Microsoft: ODBC (Open Database Connectivity) – открытый доступ к данным.

В поставку МА входит администратор ODBC для Microsoft SQL Server и Sybase SQL Server и др.

Архитектура ODBC.

SQL-приложение (Microsoft Access)  Архитектура ODBC  1  2.

1 – драйверы ODBC для СУБД (предоставленные разработчиком этих СУБД).

2 – локальные или удалённые БД SQL.

2. Полнота реляционных СУБД (правила Кодда).

Полнота реляционных систем (РС). Помимо представленных данных в виде двумерных табл. принадлежность к разряду реляционных систем определяется целым набором признаков, сформулированных Коддом и получивших название правила Кодда. Кодд предложил 12 правил, которые определяют требования к РС.

1). Явное представление данных. Вся инфо в БД должна быть представлена явно на логическом уровне в виде атрибутов отношений.

2). Гарантированный доступ к данным. Вся инфо в БД должна быть доступной для приложений. Единственным способом доступа к данным должна быть цепочка: имя-отношения – значение ключа – атрибут. Каждое отношение должно иметь первичный ключ.

3). Полная обработка неопределённых значений. Неопределённые значения, отличные от определённых, должны поддерживаться для всех типов данных при выполнении всех операций. (Пустые строки, обязательное поле, Null).

4). Доступ к описанию БД в терминах РМ. Описание БД (перечень отношений, определение ключей, схемы данных и т.д.) должно рассматриваться на реляционном уровне. Пользователь должен иметь доступ к этой инфо с помощью реляционного языка.

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

– определение данных (отношения, атрибуты, ключи, ограничение целостности данных);

– определение представлений (виртуальные отношения, образованные на основе одного или нескольких отношений с помощью реляционных операций);

– манипулирование данными (интерактивное или программное);

– санкционированный доступ к данным.

Корректность инфо, доступной через виртуальное представление, обуславливается шестым правилом:

6). Обновляемость представлений. Все предоставления, являются теоретически обновляемыми, должны авто обновляться при модификации данных в базовых отношениях.

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

8). Физическая независимость данных. Прикладные программы (ПП) не должны зависеть от использованных способов хранения данных на носителях инфо и методов доступа к ним.

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

9). Логическая независимость данных. ПП не должны зависеть от реализации любого из использованных представлений. Т.е., приложение, использующее виртуальное отношение, не должно изменяться, если структура БД изменится, и виртуальное отношение будет строиться на основе другого реляционного выражения.

10). Независимость контроля целостности. Ограничения целостности данных должны определяться системой, а не в приложении.

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

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

3. Microsoft Access (МА) – функционально полная реляционная СУБД. Достоинства системы.

МА – это многофункциональная система, функционально полная реляционная СУБД, в которой поддерживаются следующие ф-ии:

– определение данных;

– обработка данных;

– управление данными.

1). Определение данных. Предусматривает св-ва для задания стр-ры данных, описание их типов, указание связей между данными.

С какими типами данных может МА?

А). Собственные типы данных (числовой, текстовый, денежный);

Б). Т.к. МА является приложением Win, то она поддерживает OLE (Object Linking and Embedding) – связь и внедрение объектов. Это позволяет установить связь с др. приложениями Win (Word, Excel, Power Point) и внедрить их объекты в БД Access:

– текстовые документы;

– электронные табл.;

– картинки, диаграммы;

– звук, видео;

– почта.

В). МА может использовать возможности DDE (Dynamic Data Exchange) – динамический обмен данными, что позволяет ей обращаться и обрабатывать данные др. СУБД: Paradox, Fox Pro, dBASE |||, dBASE |V, Btrieve и т.д.

Г). Кроме того, МА может работать с БД, поддерживающими ODBC СУБД–(Open Database Connectivity)– открытый доступ к данным: Microsoft SQL Server, Oracle, Db 2, Rd 6. т.е. МА может обрабатывать данные, расположенные на сервере.

2). Обработка данных.

Для разработки приложений в МА используют:

– QBE (Query by example)– запрос по образцу– средство графического построения запросов;

– язык SQL (Structured Query Language) Структурированный язык запросов;

– макроязык– позволяет автоматическую работу приложения;
  • язык для программирования Visual Basic(VBA) для разработки сложных приложений.

3). Управление данными.

МА имеет надежные средства защиты и целостности данных.

МА обеспечивает защиту:

– защиту данных от несанкционированного доступа(право просматривать данные или вносить в них изменения могут только определенные пользователи );

– защиту от одновременного их использования несколькими пользователями(изменение);

– учёт защитных средств других СУБД при подключении их объектов к БД Access;

– средства контроля вводных данных.

ДОСТОИНСТВА МА:

– набор мастеров по разработке объектов;

– встроенные панели инструментов, соответствующие текущему этапу работы;

– наличие обширной справочной системы:

а) “?” – содержание справки;

– окно диалога справочной системы;

– содержание;

б) кнопка “Справка” на ПИ;

в) кнопка F1

ОБЪЕКТЫ МА.

МА называет объектом всё, что может иметь имя: ТАБЛИЦЫ, ОТЧЁТЫ, МАКРОСЫ, МОДУЛИ, ФОРМЫ, ЗАПРОСЫ.

Таблица – объект для хранения данных (индексы, первичные ключи).

Запрос – объект, позволяющий получать данные из одной или нескольких табл. (QBE, SQL).

Форма – объект, предназначенный для ввода данных, отображения на экране данных из запросов и твбл., управления работой приложения.

Отчёт – объект предназначенный для создания документа, который может быть распечатан или включён в документ др. приложения.

Макрос – объект представляющий собой описание одного или нескольких действий, выполняющихся в ответ на некоторые события.

Модуль – объект содержащий программы, написанные на VB.

4. Типы данных в МА; св-ва полей: размер поля, формат, маска ввода, условие на значение, обязательное поле, пустые строки, индексированное поле, подстановка.

ОРЕДЕЛЕНИЕ ПОЛЕЙ


– имя;

– тип;

– св-ва;

– описание.

Имя – <= 64 символов (буквы пробелы).

Замечание: большинство БД SQL, к которым МА может подключиться, не поддерживает _ в имени (VBA так же).

Описание – пояснительный текст на поле (не обязательное).

Типы данных (полей):

Текстовый (<= 255б) для представления алфавитно-цифровых (символьных) данных.

МЕМО (<= 64000б) для символьных данных длина >=255символов, тексты, в которых могут встречаться типы «табуляция» и «возврат каретки.»

Числовой (1, 2, 4, 8 б).

Дата-время (8б) для хранения календарных дат или значений времени (позволяет выполнять вычисления в минутах, секундах, часах, днях, месяцах, годах).

Денежный (8б) – денежные суммы с 4-мя знаками после запятой.

Счётчик (4б) искусственный первичный ключ – авто сгенерированные последовательные или случайные целые значения.

Логический (1б) для хранения истина/ложь.

Объект OLE (до 1 Гб) для хранения объектов OLE из др. приложений Windows: Word; Excel; Power Point (картинки); Paint Brush, Draw (рисунки); *.wal (звуковые файлы); *.avi (видео файлы).

СВ-ВА ПОЛЕЙ (ОБЩИЕ):

Каждый тип данных характеризуется определённым набором св-в.

Размер поля – задаёт max размер данных, для хранения которых предназначено это поле (текстовые, числовые).

Для числовых данных:

Байт – целые числа (0255), занимает для хранения 1 байт.


Целое – целые числа (1*1<=32767) 2 байта.

Длинное целое – целые числа (1*1<=2.109), 4 байта.

С плавающей точкой (4 байта) числа с точкой до 6-ти знаков (1*1<=3.4*1038).

С плавающей точкой (8 байт), точность до 10-ти знаков (1*1<=10308).

Формат поля – задаёт формат представленных данных при выводе на экран и печать.


1). Для типов данных числовой и денежный:

– основной формат – отсутствуют разделители групп разрядов и символы денежной единицы. Число единичных знаков зависит от точности данных(устанавливается по умолчанию);

– с разделителями разрядов – 2 знака после запятой и разделители групп разрядов;

– фиксированный – по крайней мере 1 знак до и 2 знака после;

– денежный – символы денежной единицы и 2 знака после запятой;

– процентный – знак %

2). Для типа данных Дата/время:

– полный формат даты (17.02.98 06:30:02 PM (по умолчанию));

– длинный формат даты (Суббота 17 августа 1998 г.);

– средний формат даты (17-авг-98);

– краткий формат даты (17.08.98);

– краткий формат времени: 18:30 и др.

3). Для данных логического типа: Да/Нет (по умолчанию), Истина/Ложь, Вкл/Выкл.

Число десятичных знаков – задаёт число десятичных знаков, вводимых после запятой. По умолчанию: авто – 2 знака. Всего может быть от 0 до 15.

Маска ввода – используется для удобства ввода данных.

Подпись – для определения более содержательного названия поля. Подпись поля будет появляться в заголовках запросов, форм, отчётов.

Значение по умолчанию – для указанного значения, которое сразу появляется в поле. Например: date() – текущая дата. Для числового типа равного 0.

Условие на значения – можно задать выражение, которое при вводе или редактировании значения поля всегда должно быть TRUE (т.е. вводимое значение поля должно удовлетворять заданному условию).

Сообщение об ошибке – можно указать текстовое сообщение, которое МА будет выводить, когда вводимое значение не будет удовлетворять «условию на значения»

Обязательное поле – если поле обязательно, должно иметь значение, то нужно установить «Да» (Если «Нет», то курсор из поля не выйдет), «Нет» – в поле хранится Null.

Пустые строки – для текстовых и МЕМО полей допускается ввод пустых строк.

Индексированное поле – для упорядочивания данных типов текстовый, числовой, дата/время, счётчик, денежный может построить индексы, с помощью которых ускоряется доступ к данным. Если поле – первичный ключ, система сама заполняет значение этого св-ва, она напишет «да» (совпадения не допускаются).

Св-во подстановка:

– тип эл-та управления;

– тип источника строк;

– источник строк.

Мастер подстановок (не кодовые поля, а их описание в режиме табл. в запросах, формах, отчётах.):

1-е окно мастера: откуда столбец подстановок будет получать значения: из другой табл (или запроса) или из фиксированного набора. «Далее»

2-е окно: выбор табл., в которой хранятся подставные значения.

3-е окно: выбирается из табл. обязательное поле.

4-е окно: настройка ширины полей в списке, кодовое поле авто. Скрывается.

5-е окно: можно изменить подпись кодового поля в основной табл. (не рекомендуется)

Подстановка в табл. данных из справочника.

Если значение в табл. берётся из справочника, то в режиме конструктора табл этого поля нужно выбрать мастер подстановок.

5. Целостность БД, ссылочная целостность, ограничение целостности данных. Реализация ограничений целостности в МА. Каскадное обновление полей, каскадное удаление записей.

Целостность БД – св-во БД, при наличии которого БД содержит полную и непротиворечивую инфо, необходимую и достаточную для корректного функционирования приложения.

Для того, чтобы РМД была не противоречивой, каждому вхождению внешнего ключа в некоторую запись должна соответствовать запись в другой табл., первичный ключ которой совпадает с этим внешним ключом. Это св-во называется ссылочная целостность БД.

Ограничение целостности – набор условий, поддерживающих состояние целостности БД

Реализация ограничений целостности в МА:

1). Создание первичного ключа.

2). Схема данных.

3). Условие на значения.

4). Каскадное обновление.

5). Каскадное удаление.

6). Поддержание ссылочной целостности.

7) Первичный ключ – счётчик.

8). Корректная обработка пустых строк.

9). Индексированное поле.

Каскадное обновление связанных полей при изменении значения первичного ключа в «отце» (табл. со стороны один) все его вхождения в «сын» авто изменяются (табл. со стороны многие), каскадное обновление не устанавливается в названиях, т.к. первичный ключ – счётчик.

Каскадное удаление связанных записей: при удалении записей в «отце» все связанные с ней записи авто удаляются из «сына».

6. Запрос на выборку: значение, виды. Строки бланка QBE. Включение полей табл. запрос. Условие отбора. Вычисляемые поля. Использование параметров в запросе. Примеры. Индексирование.

Запросы на выборку.

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

Создаётся временный набор записей (сортировка (физически в БД не существует)).

Позволяет: просматривать, выбирать, печатать, обновлять (с ограничением).

Окно БД –> Запросы.

Строки бланка QBE:

1. ПОЛЕ:
  1. Постоянные поля табл.
  2. Вычисляемое поле (на основе нескольких полей).
  3. Итоговые поля (используются встроенные ф-ии ACCESS).

2. СОРТИРОВКА:

1). По возрастанию.

2). По убыванию.

3. ВЫВОД НА ЭКРАН с помощью флажков указываются те поля, которые должны отображаться в наборе записей.

4. УСЛОВИЕ ОТБОРА указываются условия-фильтры.

Включение полей в запрос.
  1. Выбрать поле в списке полей.
  2. Перетащить его в бланк QBE в строку поле.
  3. * – выбор всех полей табл. F6 – переменная из верхней в нижнюю панель.

Поля запроса наследуют св-ва полей табл., но имеется и для запроса и свой бланк св-в.

Для изменения значения св-в полей: Вид –> Св-ва.

Составление условий отбора:

1). Операторы сравнения <>,<=,<,>=,>,=.

2). Спец. BETWEEN, LIKE.

3). AND,OR.

Вычисляемые поля.

В бланк QBE можно вкл. Поле, являющееся:

1). Результатом выполнения вычислений над полями табл. (встроенные ф-ии ACCESS, арифмет. операции).

2). Результатом конкатенации двух и более символов полей.

В выражении используются операторы +, - ,*, / (округляет операнды до целого и делит (рез-т – целое)), .

Mod – округляет операнды до целого и делит, рез-т остаток от деления.

& – конкатенация (сцепление) двух строк (число преобразуется в строку символов)

Запросы с параметрами.

Перед выполнением запроса МА запрашивается усл. отбора.

Для запроса с параметром в строке усл. отбора нужно указать имя (фразу) параметра. В одном запросе можно задать несколько параметров.

Пример.

Поле Товар Город

Условие отбора [товары из города]

То, что заключено в [ ] МА рассматривает как параметр.

Для каждого параметра нужно указать тип данных (по умолчанию – текстовый).

Запрос–> параметры.

Эта инфо (о параметрах запроса) используется для проверки введённых значений.

Индексы


Индекс – это внутренняя табл., состоящая из двух столбцов: значение ключа индексирования и внутренний № записи.

Новая запись заносится в конец табл. Система присваивает № – внутренний системный №.

В номерах нет дырок (если запись № i удаляется из табл., остальные записи подтягиваются).

Записи с одинаковым значением кода будут постоянно находится логически рядом, по возрастанию.

Наличие индекса позволяет выполнить следующие действия:

1). Упорядочить данные в табл. вместо сортировки.

2). Ускорение выбора данных из табл.

3). Ускорение процесса доступа к данным, находящимся в нескольких связанных табл.

Индекс:

1). По одному полю.

2). По группе полей (многоуровневое индексирование) – составной индекс.

Индексы по одному полю: большинство индексов, которые требуются при работе приложения

Создание:

– открыть табл. в режиме Конструктора;

– выбрать поле;

– задать значение св-ва «Индексированное поле» (по умолчанию Нет (кроме первичного ключа), иначе 1) Да, совпадения допускаются; 2) Да, совпадения не допускаются).

Если создаётся индекс, ключ которого повторяется, то (1), иначе (2).

А если для повторяющихся значений поля выбрать (2) – создается индекс, который создаёт уникальное значение этого поля.

Составные индексы: при частом поиске в больших табл. по нескольким полям нужно создать составной индекс.

Пример: вывести инфо о товаре (код задается) предложенном указанным поставщиком (код задается).

Индекс: Код поставщика + Код товара.

Длина ключа: 4+4=8 байт

Построение составного индекса:

– открыть табл. в режиме Конструктора;

– использовать кнопку индексы на ПИ или Вид  Индексы;

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

Имя индекса вводится с клавиатуры; имя поля, поля сортировки из раскрывающихся списков.

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

Метод Rushmore.

Индекс при поиске по нескольким ключам можно обойтись без составного индекса.

Например: в таблицеСотрудники нужно определить список сотрудников, указать факультеты и кафедры.

Условие поиска:

Фак = ВТИ  Каф  ПМИ 

Нужно ли создавать индекс Фак+Каф –

Пусть уже имеются индексы по полю Фак и по полю Каф. При задании критерия поиска по более чем 1 полю(*), ACCESS использует указанные индексы совместно, используя метод Rushmore из Microsoft Fox Pro.

Условие поиска:


Система будет обращаться только к этим записям в таблице Сотрудники напрямую.

Созданные или измененные индексы сохраняются при сохранении таблицы. Для удаления строки – указать на неё и нажать Delete.

Ограничения.

1. Составные индексы могут включать не более 10 полей, общая их длина не более 255 байт.

2. Таблица не более 32 индексов.

Замечания:
  1. Можно индексировать любое поле кроме типов OLE и MEMO.
  2. Индексы поддерживаются системой: при изменении значений поля, для которого создан индекс, он автоматически обновляется (перестраивается), при выполнении таких операций с записями, как добавление, удаление будут перестраиваться все индексы таблицы.
  3. Индексированное поле нужно в случаях поиска или сортировки.
  4. При выполнении запроса система сама выбирает нужный индекс.

7. Итоговые запросы: назначение, правила построения. Перекрёстный запрос. Строки бланка QBE в итоговых запросах. Примеры.

Итоговые запросы.

Для определения итоговых или средних значений по группам данных (общие суммы, средние цены и т.д.).

Кнопка «Групповые операции» => появляется новая строка «Групповая операция» осуществляется в этой ячейке группировка: определяет группу записей, для которых рассчитывают итоговые значения.

Групповые операции:

SUM – вычисляет сумму всех значений поля в каждой группе для денежных и числовых полей.

AVG – среднее арифметическое всех значений поля в каждой группе для денежных и числовых полей (значение 0 не учитывается).

MIN – минимум (в том числе и для текстовых полей).

MAX – максимум (в том числе и для текстовых полей).

COUNT – число значений данного поля, где выводится их кол-во.

Итоговые запросы

1). Без условия – для получения итоговых значений используются все записи табл.

2). С усл. на группы – итоговые значения вычисляются не для всех возможных групп, а только для тех, которые удовлетворяют условию отбора (фильтр на группы).

3). С усл. на данные внутри группы – итоговые значения вычисляются не для всех записей в группах, а только для тех, которые удовлетворяют условию отбора (фильтр на записи в группах).

Многотабличные запросы.

Чаще всего запросы создаются на основе нескольких взаимосвязанных табл. Самый простой из них – автоподстановка (объём данных двух табл. на основе значения кол-венных связей этих табл.).

Операция JOIN (соединение)

Перекрёстный запрос.

Особый тип итогового запроса позволяющий представить вычисляемые значения в виде перекрёстной таблицы, напоминающей электронную таблицу (матрицу).

Построение:

1). Активизировать окно конструктора запросов.

2). В бланк QBE добавить строку «Перекрёстная табл.».

Значение строки перекрёстная табл. (выбирают из списка):

а). Заголовки строк.

б). Заголовки столбцов.

в). Значение.

г). Не отображаются (пусто).

1). Заголовки строк: Одно поле запроса должно быть определено в качестве заголовка строки.(Можно несколько полей для уточнения отображаемой информации).

2). Заголовки столбцов. Одно поле в качестве заголовка столбцов (в результирующем наборе данных в качестве заголовков столбцов выступает не имя поля, указанное в запросе, а его значение).

3). Значение. Одно поле значений (выводимых в ячейках перекрёстной табл.).

Соответствие между строками. Групповая операция и перекрёстная табл.

1). Перекрёстная табл.: заголовки строк

Групповая операция: группировка, итоговая ф-ия (SUM), выражение (в этом случае в строке Поле должно быть введено выражение, содержащее итоговую ф-ию).

Для любого поля, определённого в качестве заголовка строк, можно задавать условие отбора, а также для нескольких полей – заголовков строк одновременно.

Строка Условие отбора => условие.

В результирующий набор будут вкл. только те строки, которые удовлетворяют усл. отбора.

2). Перекрёстная табл.: заголовки столбцов.

Групповая операция: группировка.

Можно также задавать условие отбора: в этом случае в перекрёстной табл. выведутся только столбцы с условие.

3). Перекрёстная табл.: значение.

Групповая операция: итоговая ф-ия, выражение.

Условие отбора – задавать нельзя!

Если же для выводимых значений нужно указать условие отбора, то данное поле надо ещё раз повторить в запросе (см. 4).

4). Для отбора данных, включённых в перекрёстную табл., можно использовать также дополнительные поля.

Для них:

Перекрёстная табл.: не отображается.

Групповая операция: условие.

Условие отбора: условие.

Сортировка для перекрёстных табл.

Заголовки строк: строки выводятся отсортированные.

Заголовки столбцов: по умолчанию по возрастанию (в алфавитном порядке).

Для вывода столбцов в нужной последовательности следует вызвать диалоговое окно св-ва запроса и в стоке заголовки столбцов указать необходимый порядок.

Недостатки мастера перекрёстного запроса

  1. Строит на основании только одной табл.
  2. Нельзя использовать усл. отбора.
  3. Нельзя указывать порядок столбцов.

8. Внешние объединения: назначение, правила построения, примеры. Св-ва запроса.

Внешние объединения.

При создании запросов на базе двух связанных табл. можно указывать различные типы этих табл.

1. Симметричные (внутренние) – записи соединяются на основе совпадения связующих полей табл. (по умолчанию !!!).

2. Объединение слева (левое внешнее объединение).

3. Объединение справа (правое внешнее объединение).

Св-ва запроса


ACCESS позволяет устанавливать ряд св-в запроса, которые изменяют ход его выполнения.

9. Язык SQL. Основные ф-ии реляционных СУБД, реализованные в SQL. Реализация SQL в МА. Архитектура ODBC.

Кнопка SQL – режим SQL для определения всех запросов. Не все типы запросов можно предоставить в QBE. (Подчиненные запросы, запрос в запросе).

В начале 70-х годов сотрудниками IBM был разработан язык SEQUEL (S.Q.L.)– структурированный английский язык запросов (Structured English Query Language).
SEQUEL 2

SQL – структурированный язык запросов (Structured Query Language).

В 1979 году СУБД Oracle (Relation Software => Oracle Corporation).

1981г. – SQL Data System (SQL/DS) от IBM.

Стандарт сам по себе, системы сами.

1982г. – ANSI – Американский национальный институт стандартов, признавая значимость РМД, начал разработку стандарта реляционной БД.

В основу этого стандарта был положен SQL. Первая версия этого стандарта SQL–86 была принята и ANSI и ISO(Международная организация стандартов) в октябре 86г..

SQL/2 или SQL–92

Oracle, R: base, INGRES, Db 2, SQL Server, Vax SQL, dBade lV, SQL/DS, INFORMIX, Sybase.

Существующий сегодня стандарт – это одновременно подмножество основных реализаций языка и обобщение почти всех его реализаций.

Новый вариант SQL3.

SQL сочетает в себе возможности:

– языка определения данных;

– языка манипулирования данными;

– языка запросов.

Он реализует основные ф-ии СУБД:

– определение данных;

– доступ к данным;

– манипулирование данными;

– управление доступом;

– разбитие данных;

– обеспечение целостности данных.

SQL в стандарте ANSI/ISO является реляционно-полным языком и СУБД, поддерживающая его, удовлетворяет всем правилам Кодда

Реализация SQL в МА.

Microsoft SQL Server

Db2, Oracle, Rdb

В конце 80-х гг. более 30 влиятельных компаний (Microsoft Corporation, SQL Access Group, CLI (Common Language Interface) – стандартный интерфейс языка) – любое приложение с помощью CLI может иметь доступ к другим БД.

Формализованный интерфейс CLI компании Microsoft: ODBC (Open Database Connectivity) – открытый доступ к данным.

В поставку МА входит администратор ODBC для Microsoft SQL Server и Sybase SQL Server и др.

Архитектура ODBC.

SQL-приложение (Microsoft Access)  Архитектура ODBC  1  2.

1 – драйверы ODBC для СУБД (предоставленные разработчиком этих СУБД).

2 – локальные или удалённые БД SQL.

10. Назначение и синтаксис инструкции SELECT: список выбора, предложения FROM, WHERE, GROUP BY, HAVIN, ORDER BY. Примеры. Построение итоговых и перекрёстных запросов.

Инструкция SELECT выполняет реляционные операции выбора и объединения набора записей на базе др. табл. или запросов.

Синтаксис инструкции SELECT (стандарт):

SELECT список_выбора

FROM список_твбл.

[WHERE условие_отбора]

[GROUP BY список полей для группировки]

[HAVIN условие выбора групп]

[ORDER BY условие упорядочения];

В МА синтаксис расширен (соглашения при описании синтаксиса SQL):

– русские слова показывают эл-т, который будет вставлен.

– ??? | на выбор эл-т {…|…|…} нескольких эл-ов на выбор.

список выбора определяет, какие поля должен иметь результирующий набор записей (проэкция)

FROM – определяет список табл., на основе которых строится запрос.

WHERE – позволяет определить условие, которому должны удовлетворять записи результата набора.

GROUP BY – определяет, еае должны быть сформированы группы для итогового запроса (т.е. указывается список полей, по одинаковым значениям которых будет выполнятся группировка строк/записей)

HAVIN – используется для отбора тех групп, которые должны быть включены в результаты запроса.

ORDER BY – сортировка (ASC – по возрастанию (по умолчанию), DESC – по убыванию).

TRANSFORM выражение1

<инструкция SELECT (заголовки строк)>

PIVOT выражение2

[IN (<список заголовков столбцов>)]

Синтаксис SELECT МА.

SELECT [ALL|DISTINCT| DISTINCTROW|TOP число [PERCENT]] список выбора

FROM {{ имя_табл. [[AS] псевдоним]| имя запроса_выборки [[AS] псевдоним]}твбл._объединения},…

Для каждой табл. и каждого запроса можно определить альтернативное имя_псевдоним, которое можно использовать вместо имени табл. при задании имён полей (при объединении табл. самой с собой использование псевдонима обязательно).

ВТОРОЙ ВОПРОС:

Проектирование реляционной модели БД для заданной предметной обл.

ТРЕТИЙ ВОПРОС:

Формирование запросов к БД на языке SQL.

Запрос на выборку.

Формулировка: Вывести сведения о выставках, которые проводились в указанный период, и их экспонатах.

SELECT Выставка, Выставки.КодСтраны, ДатаНачала, ДатаЗавершения, Экспонат, Автор, Музей, Музеи.КодСтраны

FROM (Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея) INNER JOIN (Выставки INNER JOIN [Экспонаты на выставках] ON Выставки.КодВыставки = [Экспонаты на выставках].КодВыставки) ON Экспонаты.КодЭкспоната = [Экспонаты на выставках].КодЭкспоната

ORDER BY Выставки.Выставка;

Запрос на выборку.

Формулировка: Вывести сведения о музеях и их экспонатах.

SELECT Музей, КодСтраны, ГодСоздания, Телефон, Экспонат, КодТипа, ВекСоздания, ГодПрибытия, СтраховочнаяЦена

FROM Музеи, Экспонаты

WHERE Музеи.КодМузея = Экспонаты.КодМузея

ORDER BY Музей;

Итоговый запрос без условия.

Формулировка: Вывести сведения о музеях, количестве экспонатов в них и общей страховочной цене.

SELECT Музей, КодСтраны, ГодСоздания, Count(Экспонаты.КодЭкспоната), Sum(Экспонаты.СтраховочнаяЦена)

FROM Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея

GROUP BY Музей, КодСтраны, ГодСоздания

ORDER BY Музей;

Итоговый запрос без условия.

Формулировка: Для каждого музея по каждому типу экспоната определить их количество, максимальную, минимальную, общую и среднюю страховочную цену.

SELECT Музей, Тип, Count(Экспонаты.КодЭкспоната), Sum(Экспонаты.СтраховочнаяЦена), Min(Экспонаты.СтраховочнаяЦена), Max(Экспонаты.СтраховочнаяЦена), Avg(Экспонаты.СтраховочнаяЦена)

FROM Типы INNER JOIN (Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея) ON Типы.КодТипа = Экспонаты.КодТипа

GROUP BY Музей, Тип

ORDER BY Музей, Тип;

Итоговый запрос с условием на группу.

Формулировка: Вывести сведения о музеях, созданных в указанный промежуток времени, количестве хранящихся в них экспонатов и их общей страховочной цене

PARAMETERS [начало периода] Short, [конец периода] Short;

SELECT Музей, НазваниеСтраны, ГодСоздания, Телефон, Count(Экспонаты.КодЭкспоната) , Sum(Экспонаты.СтраховочнаяЦена)

FROM Типы INNER JOIN (Страны INNER JOIN (Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея) ON Страны.КодСтраны = Музеи.КодСтраны) ON Типы.КодТипа = Экспонаты.КодТипа

GROUP BY Музей, НазваниеСтраны, ГодСоздания, Телефон

HAVING Музеи.ГодСоздания Between [начало периода] And [конец периода]

ORDER BY Музей, ГодСоздания;

Итоговый запрос с условием на группу.

Формулировка: Вывести сведения о выставках, проводимых в указанный промежуток времени, количестве экспонатов на них и их общей и средней страховочной цене.

PARAMETERS [начало периода] Short, [конец периода] Short;

SELECT Выставка, Year([ДатаНачала]) AS Выражение1, Count([Экспонаты на выставках].КодЭкспоната) , Sum(Экспонаты.СтраховочнаяЦена) , Avg(Экспонаты.СтраховочнаяЦена)

FROM Экспонаты INNER JOIN (Выставки INNER JOIN [Экспонаты на выставках] ON Выставки.КодВыставки = [Экспонаты на выставках].КодВыставки) ON Экспонаты.КодЭкспоната = [Экспонаты на выставках].КодЭкспоната

GROUP BY Выставки.Выставка, Year([ДатаНачала])

HAVING Year([ДатаНачала]) Between [начало периода] And [конец периода];

Итоговый запрос с условием на группы.

Формулировка: Вывести сведения о музеях, созданных в указанном периоде и кол-ве экспонатов в них, их max и min страховочной цене.

PARAMETERS [начало периода] Short, [конец периода] Short;

SELECT Музей, КодСтраны, ГодСоздания, Телефон, Count(Экспонаты.КодЭкспоната), Max(Экспонаты.СтраховочнаяЦена), Min(Экспонаты.СтраховочнаяЦена)

FROM Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея

GROUP BY Музей, КодСтраны, ГодСоздания, Телефон

HAVING Музеи.ГодСоздания Between [начало периода] And [конец периода];

Итоговый запрос на данные внутри группы.

Формулировка: Вывести сведения о выставках и количестве экспонатов на них, поступивших в музеи в указанный интервал времени.

PARAMETERS [начало периода] Short, [конец периода] Short;

SELECT Выставка, ДатаНачала, ДатаЗавершения, КоличествоПосетителей, Count([Экспонаты на выставках].КодЭкспоната) , ГодПрибытия

FROM (Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея) INNER JOIN (Выставки INNER JOIN [Экспонаты на выставках] ON Выставки.КодВыставки = [Экспонаты на выставках].КодВыставки) ON Экспонаты.КодЭкспоната = [Экспонаты на выставках].КодЭкспоната

GROUP BY Выставка, ДатаНачала, ДатаЗавершения, КоличествоПосетителей, ГодПрибытия

HAVING Экспонаты.ГодПрибытия Between [начало периода] And [конец периода];

Итоговый запрос с условием на данные внутри группы.

Формулировка: Вывести сведения о музеях и количестве экспонатов, поступивших в них в указанный период, и их общей, средней, минимальной и максимальной страховочной цене.

PARAMETERS [начало периода] Short, [конец периода] Short;

SELECT Музей, Count(Экспонаты.КодЭкспоната), Экспонат, Тип, Автор, ГодПрибытия, Avg(Экспонаты.СтраховочнаяЦена) , Sum(Экспонаты.СтраховочнаяЦена) , Min(Экспонаты.СтраховочнаяЦена) , Max(Экспонаты.СтраховочнаяЦена)

FROM Типы INNER JOIN (Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея) ON Типы.КодТипа = Экспонаты.КодТипа

GROUP BY Музей, Экспонат, Тип, Автор, ГодПрибытия

HAVING Экспонаты.ГодПрибытия Between [начало периода] And [конец периода]

ORDER BY Музей, Экспонат;

Итоговый запрос с условием на данные внутри группы.

Формулировка: Вывести сведения о музеях и кол-ве экспонатов по типам, поступивших в музеи в указанном промежутке времени.

PARAMETERS [начало периода] Short, [конец периода] Short;

SELECT Музей, КодСтраны, Телефон, КодТипа, Count(Экспонаты.КодЭкспоната)

FROM Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея

GROUP BY Музей, КодСтраны, Телефон, КодТипа, ГодПрибытия

HAVING Экспонаты.ГодПрибытия Between [начало периода] And [конец периода];

Перекрёстный запрос без условия.

Формулировка: Для каждой выставки определить количество экспонатов заданного типа.

TRANSFORM Count([Экспонаты на выставках].КодЭкспоната)

SELECT Выставка, КодСтраны

FROM (Типы INNER JOIN Экспонаты ON Типы.КодТипа = Экспонаты.КодТипа) INNER JOIN (Выставки INNER JOIN [Экспонаты на выставках] ON Выставки.КодВыставки = [Экспонаты на выставках].КодВыставки) ON Экспонаты.КодЭкспоната = [Экспонаты на выставках].КодЭкспоната

GROUP BY Выставка, КодСтраны

ORDER BY Выставка

PIVOT Тип;

Перекрестный запрос с условием.

Формулировка: Для каждого музея определить количество экспонатов, участвующих в выставках в заданном интервале времени.

PARAMETERS [начало периода] Short, [конец периода] Short;

TRANSFORM Count([Экспонаты на выставках].КодЭкспоната)

SELECT Музей

FROM (Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея) INNER JOIN (Выставки INNER JOIN [Экспонаты на выставках] ON Выставки.КодВыставки = [Экспонаты на выставках].КодВыставки) ON Экспонаты.КодЭкспоната = [Экспонаты на выставках].КодЭкспоната

WHERE Year([ДатаНачала]) Between [начало периода] And [конец периода]

GROUP BY Музей

ORDER BY Музей

PIVOT Year([ДатаНачала]);

Перекрестный запрос с условием.

Формулировка: Для каждой выставки определить кол-во эк-ов, поступивших в музей в заданном интервале времени.

PARAMETERS [начало периода] Short, [конец периода] Short;

TRANSFORM Count([Экспонаты на выставках].КодЭкспоната)

SELECT ГодПрибытия

FROM Экспонаты INNER JOIN (Выставки INNER JOIN [Экспонаты на выставках] ON Выставки.КодВыставки = [Экспонаты на выставках].КодВыставки) ON Экспонаты.КодЭкспоната = [Экспонаты на выставках].КодЭкспоната

WHERE ГодПрибытия Between [начало периода] And [конец периода]

GROUP BY ГодПрибытия

PIVOT Выставка;

Объединение слева.

Формулировка: Вывести сведения об экспонатах, которые не участвовали в выставках

SELECT Экспонат, Тип, Музей

FROM (Типы INNER JOIN (Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея) ON Типы.КодТипа = Экспонаты.КодТипа) LEFT JOIN [Экспонаты на выставках] ON Экспонаты.КодЭкспоната = [Экспонаты на выставках].КодЭкспоната

WHERE ([Экспонаты на выставках].КодЭкспоната) Is Null;

Объединение слева.

Формулировка: Вывести список стран, в которых нет музеев.


Симметричное объединение.

Формулировка: Вывести сведения о музеях и их экспонатах.

SELECT Музей, КодСтраны, Экспонат, КодТипа, Автор, ВекСоздания, Экспонаты.ГодПрибытия, СтраховочнаяЦена

FROM Музеи INNER JOIN Экспонаты ON Музеи.КодМузея = Экспонаты.КодМузея

ORDER BY Музей, Экспонат;

ДОПОЛНИТЕЛЬНЫЕ ВОПРОСЫ:

1. Определение РМД.

Перед Реляционной моделью данных были СУБД на инвертированных файлах.

«ADABAS» (пример) поддерживало 8-и уровневую таблицу. В РМД многоуровневые таблицы не разрешены, только одноуровневые!!! Т.е. в РМД таблицы должны быть представлены в нормализованном виде.

В 1970г. Кодд, сотрудник фирмы IBM, предложил организовать данные в виде таблиц, получивший название РМД (Реляционная модель данных). Он предложил: набор таблиц может быть использован для хранения данных об объектах предметной области и использования связей между ними. И данные и связи указываются единообразно в виде таблиц. До того были древовидная и сетевая МД, которые были неудобными.

Обоснование РМД было произведено с помощью «Теории множеств».

Основу РМД составляет совокупность данных сформированных в виде таблиц.

Концептуальная модель – модель предметной области. Ей отводится главная роль в обеспечении целостности и защите данных.

Реляционная модель данных представляет собой набор таблиц, который используется для хранения данных об объектах предметной области и для моделирования взаимосвязей между ними. Стоит отметить, что таблицы в реляционной модели данных должны быть нормализованы.

2. Нормализованное отношение.

Для обеспечения нормализованного отношения необходимо выполнение следующих условий: 1). Кортежи должны быть различны (кортеж – строка таблицы); 2). Порядок кортежей не существенен; 3). Порядок атрибутов не существенен (атрибут – столбец таблицы); 4). Каждый атрибут неделим.

– кортежи должны быть различны (не должно быть одинаковых записей);

– порядок кортежей не существенен (т.е. записи не упорядочены, новая запись заносится в конец файла);

– порядок атрибутов не существенен (т.е. столбцы табл. в любом порядке, т.к. каждый атрибут имеет имя);

– каждый атрибут должен быть неделимым.

3. Нормальные формы отношений.

Нормализация – это формализованная процедура, в процессе выполнения которой атрибуты данных (поля) группируются в табл., а табл., в свою очередь, – в БД.

А). Первая нормальная форма – избыточность данных. Не нормализованные отношения меняют т.о., чтобы удалить повторяющиеся группы и выделить в получившемся отношении первичный ключ.

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

В). Приведение к третьей нормальной форме заключается в удалении транзитивно-зависимых атрибутов, т.е. атрибутов, зависящих от других не ключевых атрибутов.

4. Первичный, искусственный, внешний ключи.

Первичный ключ – атрибут или мн-во атрибутов, значение которых уникально идентифицирует кортеж в отношении.

Внешний ключ – это ключ, который в др. табл. называется первичным ключом и служит для моделирования связей между табл.

Искусственный ключ имеет смысл вводить:

– если первичный ключ состоит из нескольких полей;

– если первичный ключ состоит из одного, но длинного поля;

– если первичный ключ в др. табл. является внешним ключом.

5. Реализация связей 1:1, 1:m, m:n в МА.

1:1 (один к одному) – любая запись одной табл. может быть связана только с одной записью др. табл.

1:m (один ко многим) – любая запись первой табл. может быть связана с несколькими записями др. табл.

m:n (многие ко многим) – в РМД непосредственно не реализовавана, а в жизни очень много. Но такая связь в РМД такая связьотображается через третью табл. (табл. пересечения), что позваляет свести связи m:n к 1:m в двух экземплярах.