Добавлен: 29.11.2023
Просмотров: 97
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Отношение реляционной базы данных состоит из набора однотипных записей (кортежей). Понятие записи в базах данных аналогично понятию записи в языках программирования, то есть запись — это информационная структура, которая содержит в себе несколько переменных (полей записи) простых типов, таких как Текстовый или Символьный (String, char, nchar, varchar и т. п.) и Числовой (Integer, Real, Single, Double, float, numeric, int, smallint, tinyint, byte, long, LongInt и т. п.).
То есть поле базы данных — это поле записи с определённым типом данных, который определяет диапазон и вид возможных значений (символьный или числовой) этого поля, информационный объём в битах и возможности по обработке его значения.
Принципиальное отличие текстового и числового типов данных состоит в том, что:
-
для переменной текстового типа, её значение в виде байтов кодирует при помощи каждого одного или каждого двух байтов один символ, которые и выводятся для восприятия пользователями информационной системы (ИС). А для алгоритмической обработки требует применения специальных подпрограмм (процедур и функций), предназначенных для работы с текстовыми (символьными, строковыми) данными; -
для переменной числового типа, значение которой равно определённому количеству (обычно кратному степеням числа 2 — 1, 2, 4, 8 и т. д.) байтов, её значение кодирует целое или вещественное число, которое и выводится для восприятия пользователями информационной системы (ИС). А для алгоритмической обработки требует применения специальных подпрограмм (процедур и функций), предназначенных для работы с числовыми данными.
Помимо этого, в отличие от языков программирования, в системах управления базами данных (СУБД) используются особые типы данных, значения которых тоже представляют собой набор байтов, но в зависимости от типа данных СУБД по-разному выводит их для восприятия пользователями информационной системы (ИС). Например, существует тип данных поля BLOB или OLE, содержимое которых может выводиться как сложный документ.
Часто используется такой тип данных как Дата/время (datetime, date, time, timestamp, smalldatetime и т. п.). Этот тип данных применяется для кодирования даты и/или времени. Этот тип данных тоже требует применения специальных подпрограмм (процедур и функций), предназначенных для работы с данными этого типа.
Существует ещё тип данных Денежный (Currency, Money, smallmoney и т. п.). Этот тип данных предназначен для хранения и обработки значений денежных единиц с поддержкой механизма уменьшения погрешностей при расчётах значений денежных сумм.
Также существует тип данных Логический (Boolean), который может иметь значения 1 или 0, «Да/Нет», «Истина/Ложь», «Включено/Выключено» («Yes/No», «True/False», «On/Off») и служит для определения наличия или отсутствия признака (флага) какого-либо состояния.
Специальный тип данных Счётчик (Identity) служит для автоматического указания значения первичного ключа для каждой записи (кортежа) таблицы (отношения) реляционной базы данных.
Задача грамотного проектирования базы данных в случае использования для работы с ней СУБД, поддерживающей реляционную (состоящую из отношений, англ. relation) модель данных, состоит в том, чтобы для каждого отношения (таблицы) реляционной базы данных подобрать такой набор полей чтобы их значения описывали необходимые и достаточные свойства сущности, для которой и создана эта таблица. Типы данных этих полей необходимо подбирать таким образом, чтобы поля могли хранить значения в нужном виде и нужном диапазоне и при этом занимали минимальный объём памяти. Отдельную сложность представляет собой выбор размера текстовых полей, например ФИО, Адрес и Телефон. Общепринятыми значениями размеров этих полей являются 50, 50 и 15 байт, соответственно.
Помимо этого, в каждой таблице реляционной базы данных должен быть первичный ключ (англ. PK — Primary Key). Это одно или несколько (составной первичный ключ) полей, значение которого (или общее значение которых в случае использования нескольких полей в качестве первичного составного ключа) должно отличаться от значения этого же поля (или общего значения нескольких полей, используемых в качестве первичного составного ключа) любой другой записи этой таблицы. Первичный ключ необходим для обеспечения уникальности записей в отношении и для задания связей между отношениями. Для этого в отношении, которое ссылается (связывается) на другое отношение, нужно создать дополнительное поле (или поля в случае использования составного первичного ключа), тип данных которого будет совпадать с типом данных первичного ключа родительской таблицы. И такое поле (или набор полей) называется внешний ключ (англ. FK — Foreign Key).
Можно выбрать одно или несколько полей таблицы реляционной базы данных в качестве первичного ключа, но это несёт за собой ряд проблем с избыточностью информации и обеспечением целостности (правильности) вводимых и изменяемых данных, поэтому общепринятым подходом в реляционных базах данных является создание отдельного поля с названием
Код (или ID в англоязычном варианте), которое и становится первичным ключом в каждой таблице реляционной базы данных.
В результате анализа предметной области базы данных автоцентра было принято решение создать отношения (таблицы) реляционной базы данных с параметрами, указанными в таблицах 2.1—2.9.
При этом нужно иметь ввиду, что все первичные ключи (англ. PK — Primary Key) являются уникальными, а все внешние (англ. FK — Foreign Key) — нет.
Таблица 2.1 — Логическая структура отношения «Автомобили»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
Код модели | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи автомобиля с моделью |
Мощность | Нет | Числовой | 2 байта | |
Год | Нет | Числовой | 2 байта | |
Цена | Нет | Денежный | 8 байт | |
Наименование | Нет | Текстовый | MAX | |
Таблица 2.2 — Логическая структура отношения «Дилеры»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
Код сети | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи дилера с сетью |
Наименование | Нет | Текстовый | 100 байт | |
Адрес | Нет | Текстовый | 100 байт | |
Телефон | Нет | Текстовый | 100 байт | |
Таблица 2.3 — Логическая структура отношения «Клиенты»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
ФИО | Нет | Текстовый | 100 байт | |
Телефон | Нет | Текстовый | 100 байт | |
Адрес | Нет | Текстовый | MAX | |
Таблица 2.4 — Логическая структура отношения «Заказы»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
Код клиента | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи заказа с клиентом |
Код автомобиля | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи заказа с автомобилем |
Код цвета | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи заказа с цветом |
Дата | Нет | Дата | 3 байта | |
Таблица 2.5 — Логическая структура отношения «Сети»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
Наименование | Нет | Текстовый | 100 байт | |
Адрес | Нет | Текстовый | 100 байт | |
Телефон | Нет | Текстовый | 100 байт | |
Таблица 2.6 — Логическая структура отношения «Модели»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
Код марки | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи модели с маркой |
Наименование | Нет | Текстовый | 100 байт | |
Таблица 2.7 — Логическая структура отношения «Поставщики»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
Код дилера | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи поставщика с дилером |
Код автомобиля | Да (внешний, FK) | Числовой | 8 байт | внешний ключ для определения связи поставщика с автомобилем |
Таблица 2.9 — Логическая структура отношения «Цвета»
Название | Ключ | Тип | Размер | Примечание |
Код | Да (первичный, PK) | Числовой | 8 байт | уникальный код для однозначной идентификации записей и для связи с подчинёнными/зависимыми отношениями |
Название | Нет | Текстовый | 100 байт | |