Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие СУБД 2011.pdf
Скачиваний:
68
Добавлен:
10.06.2015
Размер:
2.75 Mб
Скачать

15

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

Характеристики любого столбца реляционной таблицы всегда определяется индивидуальными свойствами данных, которые мы намерены хранить в этом поле. Если столбец предназначен для фамилии или имени человека, то мы выберем текстовый тип данных и ограничим его 15-20 символами. Если речь идёт о количественных значениях, то мы воспользуемся числовыми типами данных. В таблице 2.1 представлены основные типы данных, которые могут иметь поля в Microsoft Access.

Основные типы данных. Таблица 2.1.

Тип данных

Назначение

Размер

Текстовый

Хранение текстовых данных.

До 255 символов

Поле МЕМО

Большое количество неформатированных

До 65 536 символов.

 

текстовых данных.

 

 

Числовой

Хранение целых и действительных значе-

1, 2, 4 или 8 байт

 

ний.

 

 

Денежный

Денежные величины.

8

байт

Дата/время

Значения дат и времени.

8

байт

Счетчик

Автоинкрементное значение.

4

байта

Логический

Булевы значения (истина/ложь).

1

бит

В отличие от всех языков программирования базы данных построены на 3-хзначной логике. Помимо значений True (истина) и False (ложь) мы можем столкнуться с определителем NULL. Определитель NULL воспринимается как неопределённое (или неизвестное) значение.

Определитель NULL указывает, что значение поля в настоящий момент неизвестно или недопустимо для записи.

Определившись с типом данных и их размерностью, программист может наложить на данные дополнительные ограничения:

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

2.Указать значение, передаваемое в поле по умолчанию.

3.Ввести ограничения на допустимые значение (например, диапазон значений, которые разрешено передавать в поле).

4.Назначить маску ввода, определяющую жёсткий порядок ввода и представления значений.

Создание таблиц в среде Microsoft Access

Попробуем повторить простую задачу по учёту студентов ВУЗа, но на этот раз не с помощью файловых систем, а на основе таблиц. В качестве инструмента воспользуемся услугами среды Access – программного продукта Microsoft предназначенного для построения реляционных баз данных малой степени сложности.

Запустите приложение Access. Воспользовавшись пунктом меню: Файл – Создать. создайте новый файл базы данных и сохраните его под любым именем, например

“students.mdb”.

Access предлагает три пути создания таблиц (см. рис. 2.3):

1.В режиме конструктора.

2.С помощью мастера.

3.Путём ввода данных.

Ставропольский государственный университет, кафедра КБ

16

Рисунок 2.3. – Режимы создания таблиц в среде Access

Мы направимся по наиболее функциональному пути и выберем режим конструктора. Именно этот режим предоставляет пользователю максимальные возможности по формированию будущей таблицы. Двойной щелчок по строке “Создание таблицы в режиме конструктора” вызовет окно конструктора (рис. 2.4).

СОВЕТ

При назначении имён столбцам и выборе названия таблицы старайтесь не применять символы национальных алфавитов. Иначе Вы можете столкнуться с рядом ограничений при получении доступа к данным из других программ.

Рисунок 2.4. – Конструктор таблицы

В конструкторе назначаются имена полей (столбцов) будущей таблицы, определяются типы данных и их ограничения. Например. Для хранения фамилии мы определяем поле “SurName”, тип данных “Текстовый”, размер поля – 15 символов.

Ставропольский государственный университет, кафедра КБ

17

Созданная нами таблица пока не может претендовать на высокое звание реляционной таблицы (R-таблицы). Для этого она должна пройти несколько стадий нормализации, но уже сейчас в ней присутствуют некоторые родовые черты R-таблиц:

1.Таблица поименована.

2.Каждое поле таблицы имеет уникальное имя.

3.Каждое поле содержит только атомарное (неделимое) значение.

4.Значения полей описываются доменами.

Задание

В среде Microsoft Access в режиме конструктора создаёте таблицу, предназначенную для хранения следующих данных:

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

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

В.3. Телефонный справочник (фамилия, инициалы, номер телефона, адрес абонен-

та).

В.4. Домашняя библиотека (автор, название произведения, жанр, издательство, год издания, количество страниц).

В.5. Телепередачи (название телевизионного канала, название передачи, дата и время эфира).

В.6. Домашняя фонотека (исполнитель, название концерта, год выхода, формат данных (CD, DVD, mp3), страна).

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

Ставропольский государственный университет, кафедра КБ

18

III. Ключи, организация связи между таблицами

Вид занятия – лабораторная работа. Время занятия – 2 часа.

ПО – среда Microsoft Access.

Создаваемые нами на прошлом занятии таблицы нельзя назвать в полной мере реляционными. Они не удовлетворяют ряду требований, предъявляемых к реляционным отношениям. Сегодня мы уделим внимание двум из них:

1.Обеспечению уникальности строк в R-таблице.

2.Устранению избыточности данных в R-таблице.

Реляционные ключи

Реляционная модель требует, чтобы каждая отдельная запись отношения уникально идентифицировалась по значениям, содержащихся в её полях.

Не надолго вернёмся к прошлому занятию и взглянем на разработанную нами таблицу студентов (рисунок 3.1).

Рисунок 3.1. – Данные таблицы Students

В таблице содержится только 4-ре строки. Технически все эти записи уникальны, ведь нет ни одного повторения в содержащейся в строках информации. Но это не добавляет нам уверенности, в том, что такая благоприятная ситуация будет продолжаться и дальше. Можно ли с вероятностью в единицу исключить возможность поступления на один и тот же курс, на одну и ту же специальность двух человек с одинаковыми именами и фамилиями? Допустим, что кроме Петрова Михаила (с отчеством Алексеевич) в его же группе учится (а может быть и прогуливает занятия) Петров Михаил Антонович. Внеся данные о втором Петрове в таблицу, мы сразу получим две абсолютно одинаковые строки. С этого момента никто не сможет отличить записи друг от друга. С точки зрения реляционной модели это недопустимо. Элементарный практический пример. Допустим, что второй Петров (да простят меня все Петровы отличники) благополучно “завалил” сессию и подлежит отчислению. Вопрос: какую строку из таблицы следует удалить?

Что делать, чтобы добиться уникальности каждой записи в таблице? Предвижу ответ

– добавить в наше отношение поле отчества (LName). Хорошее решение, но согласитесь, что всё таки, можно допустить и такое совпадение, что нам встретятся полные тёски – Ивановы Иваны Ивановичи. Надо идти дальше – ввести в таблицу даты рождения, либо номер паспорта, а ещё лучше то и другое. Одним словом обеспечение уникальности процесс творческий, требующий опыта и интуиции.

© Осипов Д.Л., 2011

19

Суперключ (superkey) – это поле (множество полей), которое единственным образом идентифицирует запись в таблице.

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

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

Первичный ключ – это потенциальный ключ, который выбран для уникальной идентификации записей внутри таблицы.

Первичный ключ может включать одно поле таблицы или несколько её полей. В по-

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

Многие СУБД позволяют использовать в качестве ключа поле автоинкрементного типа. Подобная возможность имеется и в Access, для этого предназначен счётчик. Для присвоения полю признака первичного ключа щёлкните правой кнопкой мышки по имени поля и выберите пункт меню “ключевое поле”.

Рисунок 3.2. – Добавление первичного поля в таблицу

СОВЕТ

При выборе названия поля, которое станет первичным ключом, используйте название таблицы и аббревиатуру “ID” (от англ. identification). Например: Students_ID.

Внеся необходимые дополнения в таблицу, сохраните её. Вставьте в таблицу новую запись и посмотрите на поведение поля “Students_ID” – поле автоматически получило новое значение (предыдущее значение + 1). Таким образом, СУБД гарантирует, что каждая новая строка отношения получит очередной уникальный идентификатор. Даже если мы удалим последнюю строку в таблице, значение старого первичного ключа больше никогда не будет задействовано.

Ставропольский государственный университет, кафедра КБ