Лекции по информатике / Раздел08(Базы данных)
.pdf
по языкам программирования Conference on Data Systems Languages (CODASYL),
организации, ответственной за определение языка программирования Кобол. Отчет DBTG был опубликован в 1971 г., а в 70-х годах появилось несколько систем, среди которых
IDMS.
Сетевые структуры данных
Сетевой подход к организации данных является расширением иерархического. В иерархических структурах запись-потомок должна иметь в точности одного предка; в сетевой структуре данных потомок может иметь любое число предков.
Сетевая БД состоит из набора записей и набора связей между этими записями.
Тип связи определяется для записей предка и потомка. Экземпляр типа связи состоит из одного экземпляра записи предка и упорядоченного набора экземпляров записи потомка. Для данного типа связи L записи предка P и записью потомка C должны выполняться следующие два условия:
На формирование типов связи не накладываются особые ограничения Простой пример сетевой схемы БД:
Слайд 10
Манипулирование данными
Примерный набор операций может быть следующим:
Найти конкретную запись в наборе однотипных записей (инженера Сидорова); Перейти от предка к первому потомку по некоторой связи (к первому сотруднику отдела 310); Перейти к следующему потомку в некоторой связи (от Сидорова к Иванову);
Перейти от потомка к предку по некоторой связи (найти отдел Сидорова); Создать новую запись; Уничтожить запись; Модифицировать запись; Включить в связь; Исключить из связи;
Переставить в другую связь и т.д.
Ограничения целостности
В принципе их поддержание не требуется, но иногда требуют целостности по ссылкам (как в иерархической модели).
11
Основные понятия реляционных баз данных
Слайд 1 Слайд 2
Понятие реляционный связано с разработками известного американского специалиста в области систем баз данных Е.Кодда.
Эти модели характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.
Слайд 3
Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:
каждый элемент таблицы один элемент данных (атомарность);
все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковый тип (числовой, символьный и т.д.) и длину;
каждый столбец имеет уникальное имя;
одинаковые строки в таблице отсутствуют;
порядок следования строк и столбцов может быть произвольным.
№ личного дела |
Фамилия |
Имя |
Отчество |
Дата |
Группа |
|
рождения |
||||||
|
|
|
|
|
||
|
|
|
|
|
|
|
16493 |
Сергеев |
Петр |
Михайлович |
01.01.76 |
111 |
|
|
|
|
|
|
|
|
16593 |
Петрова |
Анна |
Владимировна |
15.03.75 |
112 |
|
|
|
|
|
|
|
|
16693 |
Анохин |
Андрей |
Борисович |
14.04.76 |
111 |
|
|
|
|
|
|
|
Отношения представлены в виде таблиц, строки которых соответствуют кортежам или записям, а столбцы атрибутам отношений, доменам, полям.
Поле, каждое значение которого однозначно определяет соответствующую запись, называется простым ключом (ключевым полем). Если записи однозначно определяются значениями нескольких полей, то такая таблица базы данных имеет соответственный ключ. В представленной таблице ключевое поле № личного дела.
Слайд 4
Чтобы связать две реляционные таблицы, необходимо ключ первой таблицы ввести в состав ключа второй таблицы, в противном случае нужно ввести в структуру первой таблицы внешний ключ ключ второй таблицы.
12
Студент |
|
СТИПЕНДИЯ |
(номер) |
|
|
|
(Результат) |
|
|
|
|
|
|
|
ПК |
|
ПК |
|
ВК |
СЕССИЯ |
ВК |
|
(номер) |
|||
|
|
||
|
(Результат) |
|
|
Представлен пример реляционной модели, |
построенной на основе отношений |
||
(таблиц): СТУДЕНТ, СЕССИЯ, СТИПЕНДИЯ. СТУДЕНТ (Номер, Фамилия, Имя, Отчество)
СЕССИЯ (Номер, Оценка1, Оценка2, Оценка3, Результат) СТИПЕНДИЯ (Результат, Процент)
СТУДЕНТ и СЕССИЯ имеют совместные ключи (номер). СЕССИЯ первичный ключ НОМЕР, внешний ключ РЕЗУЛЬТАТ.
Слайд 5
Формальное понятие |
Неформальный эквивалент |
|
|
Отношение |
Таблица |
|
|
Кортеж |
Строка, запись |
|
|
Кординальное число |
Количество строк |
|
|
Атрибут |
Столбец, поле |
|
|
Степень |
Количество столбцов |
|
|
Первичный ключ |
Уникальный идентификатор |
|
|
Домены |
Совокупность дополнительных значений |
|
атрибутов (столбца) |
|
|
Слайд 6
Целостность реляционной БД
Для РБД фиксируются два базовых требования целостности, которые должны поддерживаться любой реляционной СУБД:
Целостность сущностей. В БД должны быть различимые сущности, это обеспечивается если каждый кортеж имеет первичный ключ. Это требование автоматически удовлетворяется, если в системе не нарушаются базовые свойства отношений.
Целостность по ссылкам требование внешнего ключа состоит в том, что для каждого значения внешнего ключа, появляющегося в ссылающемся отношении, в отношении на которое идет ссылка должен найтись кортеж с таким же значением первичного ключа, либо значение внешнего ключа должно быть неопределено, т.е. никуда не
13
ссылаться. Если связь установлена, то должны быть связаны конкретные кортежи. Это может обеспечиваться следующими способами:
1)Запрещение удаления записи, на которую идет ссылка
ограничение, т.е. сначала удаляются ссылающиеся записи;
2) При удалении записи удаляются все ссылки на нее каскадирование;
3)Обнуление значений внешних ключей, при удалении записи на которую имеются ссылки.
Слайд 7
Обработка данных в реляционной модели.
Обработка данных построена на двух основных механизмах:
1.Реляционная алгебра
2.Реляционное исчисление
1.Реляционная алгебра имеет в виду набор операторов, в которых опрандами являются отношения и результат так же отношение.
Кодд предложил 8 операторов, которые можно разделить на 2 группы. В первую входят традиционные теоретико множественные операторы, во вторую
специальные реляционные операторы.
Первая группа (теоретико-множественные операторы): объединение пересечение вычитание
декартово произведение
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1) Объединение |
возвращает |
|
результатом |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
множество, |
которое состоит |
из |
элементов, |
|
А |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
принадлежащих |
обоим |
множествам. |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
|
|
|
Объединяемые |
отношения |
должны быть |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
В |
|
|
|
|
|
|
|
|
|
|
|
|
|
совместимы |
по |
объединению: |
отношения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
должны обладать одинаковыми заголовками. |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
2) |
Пересечение возвращает отношение, включающее все кортежи, |
|||||||||||||
|
|
|
|
|
|
|
|||||||||||||||
А |
|
|
|
|
|
|
|
|
|
входящие одновременно в оба отношения операнда. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
С=A Intersect B |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
Отношения должны обладать одинаковыми заголовками. |
||||||||||
|
|
|
В |
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
3) |
Вычитание возвращает все кортежи, входящие в отношение |
|||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||
первый операнд; и которые не входят в отношение второй операнд. |
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
A Minus B |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
А |
|
|
|
|
|
|
|
|
|
|
Отношения должны быть совместимы по типу. |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
Примеры по таблице: |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
14
А |
|
|
|
A Union B = S1 S2 S3 |
|
|
|
A Intersect B = S2 |
|
|
S1 |
|
|
|
|
|
|
|
|
|
S2 |
|
|
A Minus B = S1 |
|
|
|
|
|
|
|
|||
В |
|
|
|
|
|
S2 |
|
|
|
|
S3 |
|
|
|
4)Декартово произведение возвращает отношение, кортежи которого являются сцеплением (слиянием) кортежей первого и второго операторов. Совместимость по декартову произведению: отношения должны иметь заголовки с несовпадающими атрибутами.
Дано отношение: А={А1……Аn} с заголовками А1…Аn |
|
|
||||
Другое отношение В={В1……Вm} с заголовками В1……Вm |
|
|
||||
A Times B={Ai Bj}={A1…An, B1…Bm} |
слияние заголовков |
|
|
|||
A |
|
|
|
|
|
|
А2 А3 А4 |
|
|
|
|
|
|
|
S# |
A2……A4 |
P# |
B2……B5 |
||
|
S1 |
|
||||
|
|
|
|
|
|
|
|
S2 |
|
S1 |
|
P1 |
|
|
|
A B= |
|
|
||
|
|
|||||
|
|
S1 |
|
P2 |
|
|
|
|
|
|
|
||
B |
B2 B3 B4 B5 |
|
S2 |
|
P1 |
|
|
P1 |
|
S2 |
|
P2 |
|
|
P2 |
|
|
|
|
|
|
|
|
|
|
|
|
Специальные реляционные операторы
Выборка, проекция, соединение, деление.
1)Выборка. В результате выполнения выборки получаем отношение, заголовок которого совпадает с заголовком операнда, а в тело входят те кортежи операнда отношения, для которых выполняется условие:
A Where X YX,Y |
атрибуты; |
операция сравнения. |
|||
Ех: Поставщики S Where City = ―London‖ |
|||||
Возвращают S1 |
и S4 |
|
символьные переменные |
||
Результат |
|
|
|
|
|
|
|
S# |
|
|
|
|
|
|
|
|
|
|
|
|
S1 |
|
London |
|
|
|
|
|
|
|
|
|
S2 |
|
|
|
|
|
S3 |
|
London |
|
|
|
S4 |
|
|
2) Проекция. |
|
|
S5 |
|
|
|
|
|
|
||
|
|
|
|
|
|
А={А1…Аn} В |
{Аi…Аm} результат подмножество исходного отношения. |
||||
15
атрибуты результата.
Операция взятия проекции требует наличия двух операндов проецируемого отношения А и списка имен атрибутов, входящих в заголовок отношения А.
Результатом проекции отношения А по списку атрибутов аi…аm является отношение B с заголовком, определенным множеством атрибутов аi…аm. При выполнении этой операции выделяется вертикальная вырезка отношения операнда с уничтожением кортежей дубликатов.
3) Соединение. Операция требует наличия двух операндов (соединяемых отношений) и оператора простого условия. Пусть соединяются отношения А и В.
A={x1…xn, y1…ym} первый операнд
B={y1…ym, z1…zk} AJoinB={x1…xn, y1…ym, z1…zk}
где X, Y и Z – атрибуты. Кортежи атрибутов Z и X выбираются по совпадению кортежей Y. Если одинаковых кортежей Y нет, то соединение не получится, будет прямое декартово произведение.
4) Деление. Пусть имеется два операнда А – делимое, В – делитель
ADivideB=C – частное
С включает такие Х кортежи из А, у которых соответствующие значения атрибутов С={x1…xn}
Ex: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A: |
x |
y |
B: |
y |
C: |
x |
|
|
|
|
|
|
|
|
|
|
x1 |
y1 |
|
|
y1 |
|
x1 |
|
|
|
|
|
|
|
|
|
x2 |
y2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
…… |
…… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xn |
yn |
|
|
|
|
|
|
|
|
|
|
|
|
|
16
8.4 СУБД. Объекты баз данных.
Слайд 1 Слайд 2
Microsoft Access является настольной СУБД реляционного типа, которая имеет все необходимые средства для выполнения перечисленных выше функций. Достоинством Access является то, что она имеет очень простой графический интерфейс, который позволяет не только создавать собственную базу данных, но и разрабатывать простые и сложные приложения.
В отличие от других настольных СУБД, Access хранит все данные в одном файле, хотя и распределяет их по разным таблицам.
Слайд 3
Для того чтобы запустить Microsoft Access 2002, необходимо:
1.Нажать кнопку Пуск (Start) на Панели задач в нижней части рабочего стола.
2.Открыть в главном меню пункт Программы (Programms).
3.Выбрать программу Microsoft Access.
Базой данных Access является файл, который имеет расширение mdb. Этот файл может содержать не только все таблицы, но и другие объекты приложений Access — запросы, формы, отчеты, страницы доступа к данным, макросы и модули.
Слайд 4
Создание таблиц
В Access используются три способа создания таблиц: путем ввода данных, с помощью Конструктора таблиц и с помощью Мастера создания таблиц. Для каждого из этих способов существует специальный ярлык новых объектов в списке таблиц. Если вы создали новый файл базы данных, то, кроме этих ярлыков, в списке таблиц больше ничего нет.
Замечание
Если эти ярлыки не видны, необходимо открыть окно Параметры (Options) (с помощью команды Сервис, Параметры (Tools, Option),) затем раскрыть вкладку Вид
(View) и установить флажок новые ярлыки объектов (New Object Shortcuts).
Слайд 5
Создание таблицы с помощью Конструктора таблиц
Теперь мы познакомимся с режимом Конструктора. В режиме Конструктора таблицы создаются путем задания имен полей, их типов и свойств. Чтобы создать таблицу в режиме Конструктора, необходимо:
1.Дважды щелкнуть левой кнопкой мыши на ярлыке Создание таблицы с помощью конструктора. Откроется пустое окно Конструктора таблиц (на слайде).
2.В окне Конструктора таблиц в столбец Имя поля (Field Name) ввести имена полей создаваемой таблицы.
3.В столбце Тип данных (Data Type) для каждого поля таблицы выбрать из раскрывающегося списка тип данных, которые будут содержаться в этом поле.
4.В столбце Описание (Description) можно ввести описание данного поля (не обязательно).
Совет
Хотя Access не требует, чтобы для поля вводилось описание, мы рекомендуем не экономить время и описать большинство полей в таблицах. При выборе поля в форме или таблице это описание выводится в строке состояния окна
17
приложения. Поэтому оно может служить справкой для пользователя вашего приложения.
5.В нижней части окна Конструктора таблиц на вкладках Общие и Подстановка ввести свойства каждого поля или оставить значения свойств, установленные по умолчанию.
6.После описания всех полей будущей таблицы нажать кнопку Закрыть (в верхнем правом углу окна таблицы).
7.На вопрос Сохранить изменения макета или структуры таблицы <имя таблицы>? нажать кнопку Да.
8.В окне Сохранить как (Save As) в поле Имя таблицы ввести имя создаваемой таблицы и нажать кнопку ОК.
9.В ответ на. сообщение Ключевые поля не заданы и вопрос Создать ключевое поле сейчас? нажмите кнопку Да (Yes) если ключевое поле необходимо, или кнопку Нет (No) если такого не требуется.
После указанных действий в списке таблиц в окне базы данных появятся имя и значок новой таблицы. Ввести данные в созданную таблицу можно, открыв таблицу в режиме Таблицы.
Существуют также и другие варианты, создания таблиц. Можно, например, создать таблицу с помощью запроса на создание таблицы (см. гл. 8).
Можно создавать таблицы путем импорта из других баз данных или создавая связи с такими внешними таблицами (см. гл. 3).
Определение полей
При создании таблиц в режиме Конструктора приходится задавать имена таблиц и полей в таблицах. При этом необходимо придерживаться ряда правил.
Имена полей в таблице не должны повторяться, т. е. должны быть уникальными. Имена полей могут содержать не более 64 символов, включая пробелы. Желательно избегать употребления имен полей, совпадающих с именами встроенных функций или свойств Microsoft Access (например, Name — имя).
Имя поля не должно начинаться с пробела или управляющего символа (коды ASCII
00-31).
Имена полей могут содержать любые символы, включая буквы, цифры, пробелы, специальные символы, за исключением точки (.), восклицательного знака (!), апострофа (') и квадратных скобок ([), (]).
Эти же правила действительны и для имен таблиц, а также других объектов Microsoft
Access.
Совет
Рекомендуется не использовать очень длинные имена, т. к. они плохо запоминаются, и не включать в имена большое количество пробелов, особенно если с именами предполагается работать с помощью процедур Visual Basic for Application. Чтобы следовать этой рекомендации и при этом получать понятные имена, можно либо использовать вместо пробелов между словами знак подчеркивания (_), либо писать все слова слитно, но каждое начинать с заглавной буквы.
18
После ввода имени поля необходимо задать тип данных, которые будут находиться в этом поле. Наиболее удобным способом является выбор типа из списка, но наименование типа можно ввести и вручную. Обычно при ручном вводе Конструктор автоматически предлагает закончить вводимое название типа. В Microsoft Access имеются следующие типы данных:
Слайд 6
Текстовый (Text) — символьные или числовые данные, не требующие вычислений. Поле данного типа может содержать до 255 символов. Размер текстового поля задается с помощью свойства Размер поля (FieldSize), в котором указывается максимальное количество символов, которые могут быть введены в данное поле. При необходимости ввести строку большего размера, чем указано в данном свойстве, надо значение свойства изменить, т. к. место под дополнительные символы не резервируется. Независимо от длины текстового поля оно хранится в базе данных Access в записи переменной длины. Access не занимает память под неиспользуемую часть текстового поля в записи, что уменьшает общий размер базы данных.
Поле MEMO (MEMO) — поле MEMO предназначено для ввода текстовой информации, по объему превышающей 255 символов. Такое поле может содержать до 65 535 символов. Этот тип данных отличается от типа Текстовый (Text) тем, что в таблице хранятся не сами данные, а ссылки на блоки данных, хранящиеся отдельно. За счет этого ускоряется обработка таблиц (сортировка, поиск и т. п.). Поле типа MEMO не может быть ключевым или проиндексированным.
Совет
Не используйте поле типа MEMO, если нужно будет сортировать записи таблицы по данному полю — это невозможно. Если 255 символов не достаточно для хранения всех данных, придется разбить его на два или три текстовых поля.
Числовой (Number) — числовой тип применяется для хранения числовых данных, используемых в математических расчетах. Имеет много подтипов. От выбора подтипа (размера) данных числового типа зависит точность вычислений. Для установки подтипа числовых данных служит свойство Размер поля (FieldSize). Данные этого типа могут содержаться в 1, 2, 4, 8 или 16 байтах. Обычно по умолчанию используется подтип Длинное целое (Longlnteger), который занимает 4 байта и представляет собой число в пределах от -2 147 483 648 до +2 147 483 647. Но, кроме этого типа, можно указать Байт
(Byte) — 1 байт, Целое (Integer) — 2 байта, Одинарное с плавающей точкой (Single) — 4 байта, Двойное с плавающей точкой (Double) — 8 байтов, Десятичное (Decimal) — 12
байтов, Код репликации (Replication ID) — 16 байтов.
Дата/Время (Date/Time) — тип для представления даты и времени. Позволяет вводить даты с 100 по 9999 год. Размер поля — 8 байтов. Даты и время хранятся в специальном фиксированном числовом формате. Дата является целой частью значения поля типа Дата/Время, а время — его дробной частью. Access предоставляет большой выбор форматов отображения даты и времени.
Денежный (Currency) — тип данных, предназначенный для хранения данных, точность представления которых колеблется от 1 до 4 десятичных знаков. Целая часть данного типа может содержать до 15 десятичных знаков.
Слайд 7
Счетчик (AutoNumber) — поле содержит 4-байтный уникальный номер, определяемый Microsoft Access автоматически для каждой новой записи либо случайным
19
образом, либо путем увеличения предыдущего значения на 1. Значения полей типа счетчика обновлять нельзя. Максимальное число записей в таблице с полем счетчика не должно превышать двух миллиардов.
Логический (Yes/No) — логическое поле, которое может содержать только два значения, интерпретируемых как Да/Нет, Истина/Ложь, Включено/Выключено. Поля логического типа не могут быть ключевыми, но их можно индексировать.
Внимание
Access использует величину -1 для представления значения Истина и величину 0 — для значения Ложь.
Поле объекта OLE (OLE object) — содержит ссылку на OLE-объект (лист Microsoft Excel, документ Microsoft Word, звук, рисунок и т. п.). Объем объекта ограничивается имеющимся в наличии дисковым пространством. Тип объекта OLE не указывается в свойствах поля объекта OLE. Он зависит от приложения, использованного для создания объектов OLE, которые хранятся в этом поле. Упаковщик объектов позволяет внедрять файлы, созданные приложениями, которые не являются серверами объектов OLE. Например, он позволяет внедрить текстовые файлы в качестве объектов в таблицы Access 2002. В поле объекта OLE могут храниться произвольные данные, в том числе и данные нескольких типов. Это позволяет обойти основное ограничение реляционных баз данных, которое требует, чтобы в каждом поле хранились данные только одного типа.
Гиперссылка (Hyperlink) — дает позможность хранить в поле ссылку, с помощью которой можно ссылаться на произвольный фрагмент данных внутри файла или Webстраницы на том же компьютере, в интранет или в Интернет. Гиперссылка состоит из четырех частей: отображаемый текст, адрес (путь к файлу или странице), дополнительный адрес (положение внутри файла или страницы) и текст всплывающей подсказки. Каждая часть гиперссылки может содержать до 2048 символов. Поле типа Гиперссылка не может быть ключевым или индексированным.
Как только вы выбираете тип данных для поля, так на нижней панели окна отображается список свойств этого поля. Данный список зависит от типа поля. Для того чтобы просмотреть или изменить свойства конкретного поля таблицы необходимо:
1.Выделить нужное поле таблицы (то есть установить курсор в строку с именем поля) в окне Конструктора.
2.Раскрыть вкладку Общие (General) для просмотра общих свойств поля или вкладку Подстановка (Lookup) для просмотра параметров подстановки.
Рассмотрим основные свойства полей для каждого типа данных.
Свойства полей таблицы
Для большинства типов данных характерно свойство Подпись (Caption). С помощью этого свойства можно задать названия полей таблицы, которые выводятся в различных режимах (в надписях, присоединенных к элементам управления формы, в заголовке столбца в режиме Таблицы; в строке заголовка в режиме Формы; в заголовке отчета, выводящемся в режиме Предварительного просмотра; текст, который выводится в элементе управления). Поле может содержать до 2048 символов.
20
