Процесс проектирования любой базы данных условно можно разделить на пять этапов:
анализ – определение круга задач и построение диаграмм, отображающих логические взаимосвязи в разрабатываемой системе;
проектирование – фактическая реализация таблиц и связей между ними на основании логических диаграмм;
разработка функциональности – создание подпрограмм и программ, реализующих процедуры обработки данных в соответствии с постановкой задачи; на этом этапе формируются связи между самой БД и обрабатывающим ее приложением;
тестирование – проверка корректности взаимодействия программной части и базы данных;
доработка – совершенствование БД и программной части с целью устранения недостатков, обнаруженных на этапе тестирования.
На этапе анализа необходимо:
идентифицировать сущности, которые осуществляют функциональную деятельность, и формирование из их операций последовательности событий, которые помогут идентифицировать все сущности (сущность – объект материального мира: работник, продукт…) и взаимосвязи между ними;
идентифицировать характеристики сущностей. Например, сущность «Работник» может включать такие характеристики как «Профессия», «Зарплата»;
идентифицировать взаимосвязи между сущностями (Например, «Работник» получает «Зарплату» …).
На этапе проектирования:
устанавливаются соответствия между сущностями и характеристиками и между отношениями и атрибутами. Составляется набор отношений (таблиц для сущностей) и их атрибутов (полей таблиц – свойств сущностей, например, работник имеет фамилию, должность …);
определяются атрибуты, которые уникальным образом идентифицируют каждую сущность (например, табельный номер работника);
задаются первичные ключи (поля с неповторяющимися значениями) для каждого из отношений, простые или составные (например, составной ключ по полям имя, отчество и фамилия);
вырабатываются правила, которые будут устанавливать и поддерживать целостность данных (типы данных, например, текстовый, числовой тип …, значения по умолчанию, например, равно 100, ограничения, например, не более, не менее);
выполняется нормализация данных. Каждой нормальной форме соответствует некоторый набор ограничений. В таблице, соответствующей первой нормальной форме, каждое поле должно содержать только один элемент данных, например, адресу соответствует сразу три поля: город, улица и дом. Во второй нормальной форме каждый вне ключевой атрибут должен полностью зависеть от первичного ключа, например, если в таблице определить составной первичный ключ по фамилии и имени, то есть вероятность существования двух сотрудников с одинаковой фамилией и будет связь с частью первичного ключа. Отношение находится в третьей нормальной форме в том случае, если каждый вне ключевой атрибут полностью зависит от первичного ключа. Для четвертой нормальной формы, между столбцами таблицы не допускается многозначная зависимость. Например, некоторый сотрудник может занимать сразу две должности, необходимо будет создать промежуточную таблицу.
Разработка СУБД с использованием языка SQL
При описании реляционной модели в SQL вместо терминов: отношение, атрибут, кортеж используется терминология: соответственно – таблица, столбец, строка.
Типы данных SQL
Символьные типы данных – содержат буквы, цифры и специальные символы.
CHAR или CHAR(n) -символьные строки фиксированной длины. Длина строки определяется параметром n. CHAR без параметра соответствует CHAR(1).
VARCHAR(n) – символьная строка переменной длины.
Целые типы данных – поддерживают целые числа. Над этими типами разрешается выполнять арифметические операции и применять к ним функции (определение максимального, минимального, среднего и суммарного значения столбца).
INTEGER или INT- целое, для хранения которого отводится, как правило, 4 байта. Интервал значений от – 2147483647 до + 2147483648
SMALLINT – короткое целое (2 байта), интервал значений от – 32767 до +32768
Вещественные типы данных – числа с дробной частью.
FLOAT и SMALLFLOAT – числа с плавающей точкой.
DECIMAL(p) – тип данных аналогичный FLOAT с числом значащих цифр p.
Денежные типы данных – денежные величины.
MONEY(p,n) – все аналогично типу DECIMAL(p).
Дата и время – используются для хранения даты, времени и их комбинаций. Большинство СУБД умеет определять интервал между двумя датами, а также уменьшать или увеличивать дату на определенное количество времени.
DATE – тип данных для хранения даты.
TIME – тип данных для хранения времени.
INTERVAL – тип для хранения интервала времени.
DATETIME – тип данных для хранения времени (год + месяц + день + часы + минуты + секунды + доли секунд).
Двоичные типы данных – позволяют хранить данные любого объема в двоичном коде (изображения, файлы и т.д.).
BINARY BYTE BLOB
Последовательные типы данных – используются для представления возрастающих числовых последовательностей.
SERIAL – тип данных на основе INTEGER, позволяющий сформировать уникальное значение.