- •22 Методические указания к лабораторной работе №1 "Проектирование базы данных"
- •Проектирование базы данных введение
- •Порядок выполнения работы
- •Наибольшее распространение для семантического моделирования получила модель "сущность-связь" (Entity-Relationship) 2, или er-модель.
- •Рассмотрим базовые понятия er-модели.
- •Различают следующие виды атрибутов:
- •Реляционная модель данных
- •Ограничения целостности
- •6. Ссылочная целостность
- •Стандартные типы данных
- •Типы данных
- •Создание баз данных и таблиц на sql Для операций над базами данных и таблицами в стандарте sql имеются следующие операторы:
- •Объявление текущей базы данных
- •Домены и пользовательские типы данных
- •Правила преобразования er-модели в реляционную
- •Проектирование доменов
- •Создание автоинкрементных столбцов
- •Нормализация
- •Первая нормальная форма (first normal form) – 1нф
- •Библиографический список
Реляционная модель данных
ER-модель не пригодна для машинного хранения данных. Она используется как промежуточная стадия при проектировании. Большинство современных СУБД использует для внутреннего представления данныхреляционную модель. В реляционной модели вся информация хранится в форме таблиц. Столбцы таблицы описывают определенные характеристики (атрибуты) объекта, строка содержит описание экземпляра объекта.
Реляционная таблица называетсяотношением(relation). От всех прочих таблиц отношение отличается тем, что: 1) ячейки содержат простые, неделимые (атомарные) значения, 2) порядок следования строк не важен, 3) не должно быть двух одинаковых строк. Первое положение показывает, что в отношении не допускаются объединения ячеек, и не допускается разбиения одной ячейки на несколько. Второе и третье положение говорят, что строки таблицы рассматриваются как множество (set). Из математического понятия множества следует, что элементы множества (в данном случае строки) не могут повторяться и не имеют порядковых номеров.
Для однозначной идентификации строк используетсяключ. Ключ – это один или несколько столбцов, совокупность значений которых уникальны для каждой строки. Если ключ представлен одним столбцом, он называетсяпростым, если несколькими столбцами –составным. Ключевые столбцы выбираются при проектировании реляционной таблицы с таким расчетом, чтобы ключи сохраняли свойство уникальности независимо от количества строк в таблице.
Пример 2
Найти ключи отношения. Отношение хранит информацию о работниках предприятия.
Работники
Табель-ный номер |
Фамилия |
Имя |
Отчество |
Дата рождения |
Серия паспорта |
Номер паспорта |
Номер отдела |
Должность |
406 |
Поляков |
Иван |
Иванович |
01.02.1964 |
38 00 |
0157998 |
5 |
наладчик |
409 |
Котова |
Нина |
Петровна |
24.12.1952 |
36 02 |
0020773 |
2 |
бухгалтер |
519 |
Жилин |
Егор |
Ильич |
18.06.1974 |
38 00 |
0267005 |
5 |
сборщик |
Все столбцы таблицы, кроме табельного номера, могут содержать повторяющиеся значения. Табельный номеру каждого работника свой – это простой ключ. Серия и номер паспорта в совокупности также обеспечивают уникальность – это составной ключ, хотя по отдельности серия и номер могут повторяться.
Кроме того, для любого отношения справедливо: ключ образуют все столбцы этой таблицы. Действительно, по определению, отношение не должно содержать двух повторяющихся строк, поэтому строка целиком является ключом сама себе. Это тривиальный случай.
Итак, в таблице Работникиесть два нетривиальных ключа:Табельный номери составной ключ (Серия паспорта, Номер паспорта).
Как показал пример, в отношении может быть несколько ключей. Все эти ключи называютсяпотенциальными, иливозможными, ключами. Один из них выбирают в качествепервичногоключа (primary key, PK). Он будет использоваться для идентификации строк и для организации связей между таблицами. Остальные потенциальные ключи с этих пор именуютальтернативнымиключами.
Поясним организацию связи между таблицами на примере.
Пример 3
Для хранения информации об отпусках работников используется таблица Отпуск.
Отпуск
-
Табельный номер
Начало
Окончание
406
1 июня 2003
3 июля 2003
409
11 мая 2004
20 мая 2004
409
9 августа 2004
31 августа 2004
406
2 сентября 2004
2 октября 2004
Таблица Отпусксвязана с таблицейРаботникипо столбцу "Табельный номер". Чтобы узнать, когда брал отпуск Поляков И.И., достаточно найти в таблицеОтпускстроки, соответствующие его табельному номеру 406.
Обратная задача: вывести Ф.И.О. работников, у которых отпуск приходится на летний период. Решение: по таблице Отпускопределяются табельные номера работников, затем по этим табельным номерам находятся фамилии в таблицеРаботники.
Ссылочные столбцы, подобные столбцу Табельный номертаблицыОтпуск, называютсявнешним ключом(foreign key, FK). Внешний ключ в точности повторяет формат того ключа, на который он ссылается (обычно на первичный ключ, реже на альтернативный).
Как было показано выше, отношение может иметь несколько потенциальных ключей. Поскольку внешние ключи ссылающихся таблиц имеют тот же формат, что и первичный ключ целевой таблицы, из всех потенциальных ключей целевой таблицы стараются выбрать первичный ключ самый "легковесный", то есть занимающий минимальный объем памяти. Это делается потому, что чем длиннее внешний ключ, тем больше памяти он "съест" при хранении ссылающихся таблиц, а во-вторых, поиск по короткому ключу быстрее, чем по длинному. По этим причинам в примере 2 первичным ключом был выбран Табельный номер, а не (Серия паспорта, Номер паспорта).
Однако слепо выбирать первичный ключ, исходя только из его легковесности, не стоит. Порой столбцы, входящие во внешние ключи, несут прямую смысловую нагрузку в подчиненных таблицах. Например, столбцы из внешнего ключа могут частично или полностью входить в потенциальный ключ подчиненного отношения. Поэтому при выборе первичного ключа следует учитывать не только размер, но и роль этого ключа в ссылающихся таблицах.
Бывает, что все потенциальные ключи таблицы имеют довольно большой размер. Чтобы не создавать такие же "тяжелые" внешние ключи, прибегают к использованию суррогатного ключа.Суррогатный ключ(ersatz key) – это новый столбец, добавляемый в целевую таблицу в качестве первичного ключа. Обычно это числовой, автоинкрементный4столбец, который используется для нумерации трок. Никакой смысловой нагрузки он не несет.