«Базы данных» Лекция 1
Объект - это нечто существующее и различимое. Объектами могут быть материальные предметы, а также абстрактные понятия, например, произведения искусства. Данное - это некоторый показатель, который характеризует объект и принимает для конкретного экземпляра объекта некоторое числовое или текстовое значение. Пример: Объектом является продукция, производимая фирмой. Данными вида продукции являются его код, название, показатели, себестоимость и т. д. NB: Необходимо различать имя данного и значение данного. Имя данного - только одно, а значение данного может изменяться (хотя и необязательно) при переходе от одного объекта к другому. Пример: Два объекта «груша» характеризуются данным «вес»; имя данного для них одно и то же, но значение данного будет разным.
Информацию об объектах можно и нужно структурировать, т.к. структурированную информацию легче обрабатывать. Структурирование информации - введение каких-то соглашений о способах представления данных (процесс приспособления форматов и значений данных к нуждам автомата, т. е. устранение произвола в представлении длины и (или) значений). Структуризация нужна для эффективной обработки данных автоматом, в частности ЭВМ.
Информационная система (ИС) - совокупность тем или иным образом структурированных данных и комплекса аппаратно - программных средств для хранения данных и манипулирования ими. Классификация ИС:
Функции ИС:
ИС условно можно разбить на части: База данных - поименованная совокупность взаимосвязанных данных, находящихся под управлением СУБД. Отличительной чертой БД следует считать совместное хранение данных и их описаний (которые называются метаданными). Важнейший компонент ИС - СУБД, которая состоит из ядра и сервисных программ. СУБД - программно-аппаратный пакет, который позволяет обеспечить пользователю простой доступ к базе данных. Архитектура СУБД:
Более широкое понятие - Банк данных. Банк данных - система баз данных, программных, технических, языковых, организационно-методических средств, предназначенных для обеспечения централизованного накопления и коллективного многоцелевого использования данных (т.е. Банк данных включает в себя БД, СУБД, соответствующее оборудование и персонал).
Предметная область БД - часть реального мира, подлежащая изучению с целью управления и автоматизации. При работе с БД СУБД поддерживает в памяти компьютера некоторую модель предметной области, называемую моделью данных, т.е. модель данных определяется типом СУБД.
Классификация моделей данных:
Структура института. Сп1, ... Сп5 - специальности соответствующих факультетов.
Генеалогическое древо.
Опр. Пусть даны несколько множеств: D1,D2,...Dn. Тогда множество последовательностей вида < d1,d2,...,dn>, где d1 элемент из D1, d2 элемент из D2, ... , dn элемент из Dn; называется отношением над множествами D1,D2, ... ,Dn. Множества D1,D2, ... ,Dn называются доменами отношения; Последовательности < d1,d2,...,dn> называются кортежами отношения. Имена полученных столбцов называются атрибутами. Пример: D1= {001, 002, 003, 004, 005, 006} D2= {карандаш, ручка, дневник, тетрадь, ластик} D3= {12, 23, 13, 18, 10, 25, 29} D4= {США, Германия, Корея, Венгрия, Россия, Болгария}
Обратите внимание на порядок элементов в кортеже: первый элемент каждого кортежа выбран из D1, второй из D2 и т.д.
Атрибут, значение которого идентифицирует кортежи, называется главным ключом. В некоторых отношениях кортежи идентифицируются соединением нескольких атрибутов и наз. составным ключом. Главный ключ должен обладать двумя свойствами:
Каждое значение главного ключа в пределах таблицы должно быть уникальным. Указание главного ключа - единственный способ отличить один экземпляр объекта от другого. Примеры: Отношение служащих небольшой организации, выбрать главный ключ, структуру атрибутов.
Операции над данными:
Реляционная БД представляет собой совокупность отношений, содержащих всю информацию, которая должна храниться в БД. Отношение в реляционной теории есть не что иное, как таблица БД, кортеж называются записью, атрибут - полем. В простейшем случае БД представляет собой единственную таблицу. При проектировании для каждого поля таблиц необходимо определить тип хранимого результата. Возможные типы данных определяются используемой СУБД. Возможные типы: текстовый, целый, вещественный, дата, логический, текстовый произвольной длины(memo), двоичный произвольной длины(general). Примеры таблиц. Таблица, хранящая сведения о студентах: номере дома, номере комнаты проживания, телефоне.
Прежде чем приступать к проектированию таблиц для БД необходимо выяснить цели проектирования:
Универсальное отношение - отношение, в которое включаются все представляющие интерес атрибуты и оно может содержать все данные, которые предполагается разместить в БД в будущем. Примеры. Таблица заказов, хранятся сведения о заказчике и заказе. Один заказчик может делать множество заказов. Проблемы, связанные с УО (вставка, обновление, удаление).
Лекция 2
В реляционных БД любые совокупности данных представляются в виде двумерных таблиц. Вся предметная область может быть представлена в виде одной универсальной таблицы. Недостатки этого способа хранения устраняются при помощи нормализации. Процесс представления произвольной структуры данных в виде простых двумерных таблиц называется нормализацией. Е. Кодд предложил в рамках реляционной теории аппарат называемый нормализацией отношений. Было выделено пять форм нормальных отношений. Был предложен механизм перехода от формы к форме.
Достоинства нормализации:
Недостатки:
Задание. Требуется спроектировать БД, в которой содержится следующая информация: Номер заказа, дата заказа, заказанные продукты (код и название), общая сумма заказа. Строим универсальное отношение:
Главным ключом является поле «Заказ №». Эта структура работает нормально до тех пор, пока клиент не закажет более 4-х видов товаров за раз. Возникает необходимость в первой нормальной форме, в замене повторяющихся полей одним полем, при этом создается несколько записей. 1-ая нормальная форма:
Поле «Заказ №» перестает быть уникальным, значит, требуется введение нового главного ключа. Им становится составной ключ «Заказ №» + «Код товара». Наличие главного ключа исключает повторение записей. Но и здесь структура таблицы далека от совершенства. Возникает необходимость во второй нормальной форме. 2-ая нормальная форма:
Для нашей таблицы это не так. Поле «Дата заказа» однозначно идентифицируется лишь частью главного ключа, а именно полем «Заказ №». Изменим структуру таблиц.
Чтобы связать информацию в двух таблицах, необходимо определить связь между ними, в частности на основе поля «Заказ №». Типы связей между таблицами:
Схемки нарисовать. В данном случае отношение «Один - ко - Многим», т.к. каждой записи в первой таблице соответствует несколько записей во второй таблице. Главный ключ первой таблицы - на основе поля «Заказ №»; второй таблицы - на основе связки полей «Заказ №» + «Счетчик товара». Эта структура тоже не идеал. Поэтому движемся дальше - к третьей нормальной форме.
3-ая нормальная форма:
Обратим внимание на вторую таблицу. Здесь неключевое поле «Название товара» идентифицируется с помощью другого неключевого поля «Код товара». Примем меры. Первая таблица останется без изменений, а вот вторая преобразуется в две.
Главный ключ второй таблицы остается без изменений: «Заказ №» + «Счетчик товара», главный ключ третьей таблицы: «Код товара». Связь между второй и третьей таблицами осуществляется по полю «Код товара». Мы сделали это. В смысле, спроектировали!!! Существуют 4-ая и 5-ая НФ, которые накладывают более жесткие требования на таблицы, но на практике применяют НФ по 3-ую формы включительно.
Дополнительной проблемой нормализации является т.н. «ссылочная целостность»(Referential Integrity).
Например, в третьей таблице может не оказаться записи для кода товара, который значится в заказе в таблице второй (его случайно удалили). Это довольно неприятная ситуация. В таких случаях, при удалении из третьей таблицы записи, необходимо проверять: не ссылается ли какая-нибудь запись второй таблицы на ту, которую мы хотим удалить. Обязанность поддержания этой целостности в зависимости от используемой СУБД ложится либо на систему, либо на плечи программиста.
Лекция 3
Как уже отмечалось ранее, одними из функций ИС являются просмотр и поиск, а также выборка информации. Поиск можно осуществлять по значению конкретного поля. Пример. Скорость поиска по полю можно увеличить в сотни и тысячи раз, если упорядочить записи в таблице по этому полю. В этом случае используется специальный алгоритм поиска. Упорядочить записи по выбранному полю можно двумя способами:
Но на перезапись всей таблицы тратится время и дисковое пространство. Поэтому обычно идут другим путем.
Индекс Таблица Индекс - таблица, с которой связана процедура, получающая на входе информацию о некоторых значениях атрибутов и выдающая на выходе информацию, помогающую найти запись или группу записей, которые имеют заданные значения атрибутов. Основной индекс получает в качестве входной информации главный ключ. Индексный файл - файл, в котором хранится индекс. Способы поиска в индексном файле:
При поиске система быстро находит в индексном файле требуемое значение ключа, а затем читает искомую запись по ее номеру.
Таблица, для которой существует индекс, называется индексированной. Система индексирования образует мощный аппарат поиска и просмотра в базах данных. Индексные файлы применяются не только для быстрого поиска конкретных записей, но и для многих других целей. Например, с помощью индексных файлов мы можем просматривать таблицы в любом порядке.
Запрос(Query) - это ряд вопросов к имеющимся данным, результатом выполнения которого является некоторое подмножество данных. Запросы позволяют просматривать данные из полей одной или нескольких таблиц, отвечающих определенным критериям. Например, работая с таблицей, содержащей информацию о продажах, можно задать следующие вопросы:
И многие другие. Способы создания запросов:
Обзор рынка СУБД:
Примеры: Microsoft Visual FoxPro, Microsoft Access, Paradox for Windows, Borland Delphi, dBase for Windows.
Примеры: Microsoft SQL Server, Oracle, IBM DB2, Sybase.
Основы технологии клиент - сервер: Приложение разделяется на две части Front-End (клиентская часть) обеспечивает графический интерфейс и находится на компьютере пользователя. Back-End (сервер) обеспечивает управление данными, разделение информации, администрирование и безопасность и находится на специально выделенных компьютерах или мэйнфреймах. При технологии клиент-сервер клиентское приложение (front-end) формулирует запрос к серверу (back-end), на котором выполняются все команды. Результаты команд посылаются затем клиенту для использования и просмотра. Microsoft SQL Server является на сегодняшний день одним из наиболее мощных серверов БД.
Важным этапом в построении приложения клиент-сервер является установка связи клиентского приложения с источником данных, находящимся на сервере БД. Различные средства разработки используют несколько технологий обеспечения доступа к данным. Одним из стандартов является ODBC (Open Database Connectivity) - открытый доступ к данным, общее определение языка и набор протоколов. ODBC позволяет клиентскому приложению, написанному, например на Access, работать с командами и функциями, поддерживаемыми сервером. В качестве сервера может выступать любой сервер БД, имеющий драйвер ODBC(MS SQL Server, Oracle и т. д.). ODBC определяет минимальный набор SQL команд и набор функций вызова, механизм для вызова специфических для сервера возможностей.
Язык запросов SQL. С помощью языка SQL можно создавать запросы к реляционным БД, актуализировать их и управлять ими. Когда пользователь проектирует QBE запрос в окне, Access формулирует на заднем плане соответствующий SQL - запрос. SQL запрос состоит из последовательности SQL - инструкций. Они задают то, что нужно сделать с входным набором данных для генерации выходного набора. Результаты запроса можно обработать с помощью специальных анализирующих функций (aggregate functions). Основные SQL инструкции: INSERT INTO; DELETE; SELECT ... INTO; UPDATE. Основа большинства SQL- запросов составляет инструкция SELECT, важнейшие параметры которой приведены в списке:
SELECT Список полей FROM Имена_таблиц WHERE Критерий_поиска IN Имя_базы_данных ALL, DISTINCT - предикаты Таблица1 INNER JOIN Таблица2 GROUP BY Список_полей ORDER BY Список_полей
Рассмотрим на примере базы данных «Библиотека». Таблица «Писатели».
Таблица «Книги».
Пример1. SELECT Книги . Title, Книги . year FROM Книги WHERE Книги .Title = «Овод»;
Пример2. SELECT Писатели.* FROM Писатели;
Пример3. SELECT ALL * FROM Книги;
Пример4. SELECT DISTINCT sname, name, lname FROM Писатели, Книги WHERE Писатели . id = Книги . author;
Пример5. SELECT sname, name, lname, title FROM Писатели , Книги WHERE Писатели. id = Книги . author ORDER BY sname DESC;
Агрегатные функции : Count - определяет численность: First/Last - определяет первое и последнее значения: Min/Max - определяет стандартное отклонение ; Avg - определяет среднее значение; Sum - определяет сумму.
Пример1. SELECT Count (*) FROM Книги
Пример2. SELECT First(year) FROM Книги WHERE title = «Пятнадцатилетний капитан»;
SELECT Last(year) FROM Книги WHERE title = «Пятнадцатилетний капитан»;
Пример3. SELECT Min(year) FROM Книги WHERE Title = «20 тысяч лье под водой»;
SELECT Max(year) FROM Книги WHERE Title = «20 тысяч лье под водой»;
Пример4. SELECT Avg(year) FROM Книги WHERE year > 1965;
Пример5. SELECT Sum(year) FROM Книги WHERE Title = «Серая магия»;
Задание 1. Создание БД, таблиц, форм.
1. Создать базу данных под названием «Библиотека», состоящую из таблиц: Таблица «Писатели» содержит личную информацию о писателях (фамилия, имя, отчество, страна проживания, национальность и т.д.). Таблица «Книги» содержит информацию о написанных ими книгах, в том числе о разных изданиях одного и того же произведения (название, год издания, издательство, жанр книги и т.д.). Таблица «Писатели».
Таблица «Книги».
Настроить для них тип и формат полей, подписи, индексацию, обязательное поле и т. д.
Задание2.Создание запросов, отчетов.
Примечание : Все отчеты снабдить эмблемой и красиво расположить на странице, нужные места выделить обрамлением и т.д. Посмотреть результаты отчетов в режиме предварительного просмотра.
КомментарииЧасто используемые элементы Textile, которые могут вам пригодиться при написании текста:
О дополнительных элементах можно прочитать тут: http://redcloth.org/textile
Войдите, чтобы оставить комментарий
|
Николай Глущенко
Был вчера
Рубрики сообщества
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||