Этапы проектирования баз данных.
1) Постановка задачи
2) Создание таблицы.
После того, как содержимое базы данных будет определено, его нужно разбить на разделы, каждый из которых станет таблицей.
3) Определение полей.
4) Установка связей между таблицами.
Изучить каждую таблицу, решая, каким образом данные в ней должны быть связаны с данными в других таблицах. При необходимости добавляют новые поля или новые таблицы, предназначенные для связи между таблицами.
5) Тестирование и улучшение.
Выполнить анализ спроектированной базы данных, т.е. создаём таблицы, вводим несколько тестовых записей, пытаемся извлечь нужную информацию и вносим изменения (если необходимо).
Типичные ошибки при проектировании:
1) База данных состоит из большого количества полей, содержащих информацию. (Разделить таблицы на несколько логических разделов).
2) В таблице есть поля, которые в основном не заполнены, то есть неприменимы к большей части записей.
3)Несколько таблиц содержат одни и те же поля.
Рекомендации по определению полей
1) Каждое поле должно содержать информацию по теме таблицы.
2) Не следует включать в таблицу производные или вычисляемые данные.
3) Информация должна храниться в виде минимального количества полей.
Ключевые поля.
Основным достоинством любой системы управления реляционными базами данных является способность быстро находить и объединять данные, которые хранятся в разных таблицах. Для повышения эффективности работы каждая база данных (таблица) должна содержать поле или набор полей, совокупность значений которых однозначно определяет каждую запись в таблице. Как правило, таким полем является поле с уникальным номером или кодом. На языке баз данных такое поле или совокупность полей называется ключом таблицы.
Access использует ключевые поля для связывания данных из разных таблиц.
При выборе ключевого поля следует помнить, что Access не допускает пропусков и повторений ключевого поля. Значения в ключевом поле удобно использовать для поиска информации. Оно не должно быть длинным и сложным для запоминания.
Размер ключа влияет на скорость выполнения поиска в базах данных.
Установка связей между таблицами.
После распределения информации по таблице следует решить и указать Access, какие действия следует выполнить для объединения содержимого этих таблиц. Access является системой управления реляционными базами данных. Это означает, что разные таблицы содержат данные, которые могут быть связаны между собой после того, как пользователь установит связи между таблицами. Access может использовать эти связи для поиска связанной информации, хранящейся в разных таблицах.
Для установки связи между таблицами следует добавить ключевое поле одной таблицы в другую таблицу.
Возникает вопрос: поле из какой таблицы следует использовать? Чтобы ответить на этот вопрос, необходимо определить, какие отношения могут быть установлены между этими таблицами. Существует три типа отношений: один к одному, один ко многим, многие ко многим.
Отношение один ко многим означает, что каждая запись из первой таблицы может соответствовать нескольким записям во второй таблице, а каждой записи во второй таблице соответствует не более одной записи из первой таблицы.
Отношение один к одному означает, что каждой записи из первой таблицы может соответствовать не более одной записи во второй таблице и наоборот.
Отношение многие ко многим означает, что каждой записи из первой таблицы может соответствовать несколько записей из второй таблицы и наоборот.
Создание таблицы.
Свойства полей.
1) Размер поля. Изменяет размер текущего поля или определяет диапазон допустимых значений для числового поля.
2) Формат поля. Изображение даты и числа в указанном формате.
3) Число десятичных знаков. Изображение, указанное число знаков после разделителя (запятой).
4) Маска ввода. Изображает постоянные символы у поля, чтобы их не надо было вводить, и проверяет, чтобы значения, помещенные в маску ввода, соответствовали формату маски (день, месяц, год).
5) Подпись поля. Позволяет указать подпись, отличную от имени поля, которую следует использовать в новых формах и отчётах.
6) Значение по умолчанию. Автоматически вводит указанное значение во все новые записи.
Условие назначения и сообщения об ошибке позволяют указать, каким условиям должны удовлетворять значения, которые мы можем вводить в данное поле.
В поле сообщение об ошибке вводим тот текст, который будет отображаться в поле при вводе ошибочного значения.
7) Пустые строки - разрешает хранить пустые строки при MEMO полях.
8) Индексированное поле. Ускоряет поиск в тех полях, которые мы часто используем.
Диапазон допустимых значений для числовых полей.
Значение | Диапазон | Дробная часть | Объём памяти |
Байт | 0-255 | - | 1 байт |
Целое | -32768 - 32767 | - | 2 байта |
Длинное целое | -2147483648 - -2147483647 | - | 4 байта |
Значение с плавающей точкой | -3,4*1038 – 3,4*1038 | 7 знаков | 4 байта |
Значение с плавающей точкой двойной точности | -1,797*10308 - 1,797*10308 | 15 знаков | 8 байт |
Установка связей между таблицами.
Только что созданные таблицы не связаны между собой. Установка связей начинается с открытия окна схемы данных и выбора таблицы или запроса, между которыми необходимо установить связь. Чтобы установить связь, с помощью мышки переносим поле, которое следует использовать из списка полей одной таблицы к соответствующему полю списка полей другой таблицы или запроса. Если одно из связанных полей является ключевым, переносить следует его. Ключевое поле выделено полужирным шрифтом. Поле, которое было перенесено, принадлежит главной таблице. Вторая таблица называется подчинённой.
Целостность данных.
В некоторых случаях Access может поддерживать целостность данных при вводе, удалении и изменении записей в связанных таблицах. Поддержка целостности данных гарантирует сохранность существующих связей между таблицами и недопущение случайного удаления связанных данных. Access может поддерживать целостность данных при выполнении следующих условий:
1) Связанное поле из главной таблицы является ключевым или имеет уникальный индекс.
2) Связанные поля имеют одинаковый тип данных.
3) Обе таблицы относятся к одной базе данных.
Если эти таблицы являются присоединёнными, они также должны относиться к одной базе данных.
При наличии поддержки целостности данных необходимо соблюдать следующие правила:
1) При вводе данных в связанное поле подчинённой таблицы, можно вводить только те значения, которые имеются в связанном поле главной таблицы.
2) Невозможно удалить из главной таблицы запись, с которой связаны одна или несколько подчинённых записей.
Эту ситуацию можно ликвидировать, если для данной связи установить флажок "Каскадное удаление связанных записей".
Отношения и их типы.
1) В связанных таблицах выбираются только те записи, которые имеются в обеих таблицах.
2) Выбираются все записи из главной таблицы и связанные с ними подчинённые записи.
3) Отображаются все записи из подчинённых таблиц и связанной с ними главной таблицы.
Файловые системы.
Первая развитая файловая система была разработана фирмой IBM для ее серии 360. Понятие файла в OS/360 было выбрано как основное абстрактное понятие, которому соответствовал любой внешний объект, включая внешние устройства. Работат с файлами на уровне пользователя было очень неудобно. Требовался целый ряд громоздких и перегруженных деталями конструкций.
Структуры файлов
Устройствами внешней памяти являются магнитные диски с подвижными головками. При выполнении обмена с диском аппаратура выполняет три основных действия:
· подвод головок к нужному цилиндру,
· поиск на дорожке нужного блока,
· обмен данными с этим блоком.
Из всех этих действий в среднем наибольшее время занимает первое. Поэтому существенный выигрыш в суммарном времени обмена за счет считывания или записывания только части блока получить практически невозможно.
Для того, чтобы работать с частями блоков, файловая система должна обеспечить соответствующего размера буфера оперативной памяти, что существенно усложняет распределение оперативной памяти.
Поэтому во всех файловых системах явно или неявно выделяется некоторый базовый уровень, обеспечивающий работу с файлами, представляющими набор прямо адресуемых в адресном пространстве файла блоков.
Размер этих логических блоков файла совпадает или кратен размеру физического блока диска и обычно выбирается равным размеру страницы виртуальной памяти.
В некоторых файловых системах базовый уровень доступен пользователю, но более часто прикрывается некоторым более высоким уровнем, стандартным для пользователей.
Распространены два основных подхода. При первом подходе, свойственном, например, файловым системам операционных систем фирмы DEC RSX и VMS, пользователи представляют файл как последовательность записей. Каждая запись - это последовательность байтов постоянного или переменного размера. Записи можно читать или записывать последовательно или позиционировать файл на запись с указанным номером. Некоторые файловые системы позволяют структурировать записи на поля и объявлять некоторые поля ключами записи. В таких файловых системах можно потребовать выборку записи из файла по ее заданному ключу. Естественно, что в этом случае файловая система поддерживает в том же (или другом, служебном) базовом файле дополнительные, невидимые пользователю, служебные структуры данных. Распространенные способы организации ключевых файлов основываются на технике хэширования и B-деревьев (мы будем говорить об этих приемах более подробно в следующих лекциях). Существуют и многоключевые способы организации файлов.
Второй подход, ставший распространенным вместе с операционной системой UNIX, состоит в том, что любой файл представляется как последовательность байтов. Из файла можно прочитать указанное число байтов либо начиная с его начала, либо предварительно произведя его позиционирование на байт с указанным номером. Аналогично, можно записать указанное число байтов в конец файла, либо предварительно произведя позиционирование файла.
Во всех разновидностях файловых систем ОС UNIX, является базовое блочное представление файла,но оно скрыто от пользователя.
для обоих подходов можно обеспечить набор преобразующих функций, приводящих представление файла к некоторому другому виду. Примером: поддержание стандартной файловой среды системы программирования на языке Си.
Наименование файлов.
Все современные ф.с. поддерживают многоуровневое именование файлов за счет поддержки во внешней памяти дополнительных файлов специальной структурой. Они называются каталогами. Каждый каталог содержит имена каталогов и имена файлов, которые содержатся в данном каталоге. Таким образом полное имя файла состоит из списка имен каталогов и имени файла.
Разница между способами именования файлов в разных ф.с. состоит в том, с чего начинается эта цепочка имен.
Имеется 2 кратких варианта во многих системах управления файлами. Требуется, чтобы каждый архив файлов целиком располагался на одном дисковом пакете. В этом случае имя файла начинается с имени дискового устройства, на котором установлен соответствующий диск. Такой способ именования файлов исп-ся в ф.с. фирмы PBC. Очень близко к этому способу находится антифайловый системник персональных компьютеров.
Др. краткий вариант был реализован в ф.с. ОС Multics. Здесь пользователю представляется совокупность каталогов и файлов как единое дерево, т.е. полное имя файла начинается с имени корневого каталога, и пользователь не обязан был заботиться об установке на дисковое устройство к-либо конкретных дисков. Сама система выполняла поиск файлов по их именам, т.е. запрашивала установку необходимых дисков. Такую ф.с. можно назвать полностью централизованной.
Во многом централизованные ф.с. удобнее, но в таких системах возникают существенные проблемы, если кому-то потребуется перенести код дерева ф.с. на др. вычислительную установку.
Компромиссное решение,примененное в ф.с. от Unix,т.е. на базовом уровне. В этих системах поддерживаются изолированные архивы файлов, при этом один из этих разделов объявляется корневой ф.с.
После запуска системы можно импортировать корневую ф.с. в ряд изолированных ф.с. Технически это производится с помощью заявления в корневой ф.с. специальных пустых каталогов. Специальный системный вызов ОС Unix позволяет подключить к одному из этих каталогов указанный архив файлов. После монтирования общей ф.с. именование файла производится также, как если бы она с самого начала была централизованной. Если учесть, что обычно монтирование ф.с. производится при раскрутке систем, то пользователи ОС Unix обычно задумываются об исходном происхождении ф.с.
Защита файлов
Поскольку файловые системы являются общим хранилищем файлов, принадлежащих, вообще говоря, разным пользователям, системы управления файлами должны обеспечивать авторизацию доступа к файлам. В общем виде подход состоит в том, что по отношению к каждому зарегистрированному пользователю данной вычислительной системы для каждого существующего файла указываются действия, которые разрешены или запрещены данному пользователю. Существовали попытки реализовать этот подход в полном объеме. Но это вызывало слишком большие накладные расходы как по хранению избыточной информации, так и по использованию этой информации для контроля правомочности доступа.
Поэтому в большинстве современных систем управления файлами применяется подход к защите файлов, впервые реализованный в ОС UNIX. В этой системе каждому зарегистрированному пользователю соответствует пара целочисленных идентификаторов: идентификатор группы, к которой относится этот пользователь, и его собственный идентификатор в группе. Соответственно, при каждом файле хранится полный идентификатор пользователя, который создал этот файл, и отмечается, какие действия с файлом может производить он сам, какие действия с файлом доступны для других пользователей той же группы, и что могут делать с файлом пользователи других групп. Эта информация очень компактна, при проверке требуется небольшое количество действий, и этот способ контроля доступа удовлетворителен в большинстве случаев.