2. Физическая модель
.docЛабораторная работа №2. Физическая модель базы данных
Физическая модель – логическая модель базы данных, выраженная в терминах языка описания данных конкретной СУБД.
Физическая модель базы данных содержит все детали, необходимые конкретной СУБД для создания базы: наименования таблиц и столбцов, типы данных, определения первичных и внешних ключей и т.п. (рис. 2.11).
Физическая модель строится на основе логической с учетом ограничений, накладываемых возможностями выбранной СУБД (в нашем случае - MS SQL Server 2008 R2):
Имена
Имена таблиц и столбцов должны быть записаны латинскими буквами, без пробелов, начиная с буквы.
Типы данных
Для каждого атрибута необходимо определить тип данных его значений (табл. 2.2).
Связи
Реляционная модель данных требует преобразования связей «многие ко многим» и иерархии наследования и допускает их только на уровне логической модели базы данных.
Наследование (обобщение) может быть реализовано различными способами; наиболее предпочтительным является преобразование каждого подтипа (дочерние сущности) в отдельную таблицу с включением в нее вторичного ключа, соответствующего первичному ключу таблицы-супертипа (родительская сущность).
Преобразование связи «многие ко многим» (таблицы «Поставка» и «Способ доставки») включает создание новой таблицы развязки и двух новых связей «один ко многим» от старых таблиц к новой.
Рис. 2.11. Физическая модель базы данных в нотации IDEF1X
Таблица 2.2. Основные типы данных в MS SQL Server |
|
Тип данных |
Описание |
Целые числа |
|
bigint |
Целочисленные данные от -263 до 263-1 |
int |
Целые числа от -2147483648 до 2147483647 |
smallint |
Целые числа от -32768 до 32767 |
tinyint |
Целые числа от 0 до 255 |
Вещественные числа |
|
decimal / numeric |
Являются синонимами. Заданная точность и масштаб от -1038-1 до 1038-1 |
float |
Приближенные числовые данные от -1,79Е+308 до 1,79Е+308 |
real |
Частный случай типа float, от -3,40Е+38 до 3,40Е+38 |
money |
Количество денежных единиц от -263 до 263 с точностью до четырех десятичных позиций |
smallmoney |
Денежные единицы от -214748,3648 до 214748,3647 |
Дата и время |
|
datetime |
Данные о дате и (или) времени, которые относятся к периоду с 1 января 1753 года по 31 декабря 9999 года, определяемые с точностью до трех сотых секунды |
smalldatetime |
Данные о дате и (или) времени, которые относятся к периоду с 1 января 1900 года по 6 июня 2079 года, определяемые с точностью до одной минуты |
date |
Дата с точностью до дня, занимает 3 байта |
Строки |
|
char (n) |
Символьные данные фиксированной длины. Значения данных с длиной короче заданной заполняются пробелами до указанной длины. Максимальное заданное значение длины - 8000 символов. |
varchar (n) |
Символьные данные переменной длины. Значения данных с длиной короче заданной не дополняются пробелами. Максимальное заданное значение длины - 8000 символов, но для обозначения длины можно использовать ключевое слово max, что позволяет определять столбцы с символьными данными объемом до 231 байтов. |
nchar (n) |
Символьные данные в кодировке Unicode фиксированной длины. Максимальное заданное значение длины может составлять 4000 символов. |
nvarchar (n) |
Символьные данные в кодировке Unicode переменной длины. Максимальное заданное значение длины может составлять 4000 символов, но для обозначения длины можно использовать ключевое слово max, что позволяет определять столбцы с символьными данными объемов до 231 байт. |
text / ntext |
Устаревший тип данных, вместо него следует использовать тип varchar (max) / nvarchar (max). |
binary |
Двоичные данные фиксированной длины с максимальной длиной 8000 байт. |
varbinary |
Двоичные данные переменной длины с максимальной указанной длиной 8000 байт, но для обозначения длины можно использовать ключевое слово max, что позволяет определять столбцы типа LOB, имеющие объем до 231 байт |
image |
Устаревший тип данных, вместо него следует использовать тип данных varbinary (max). |
table |
Данные типа таблицы, предназначены для использования в работе с результирующими наборами. Как правило, они передаются из пользовательских функций. Применение данных типа table в определениях таблиц не допускается. |
sql_variant |
Данные различных типов. |
xml |
Определяет символьное поле как содержащее данные XML. |
Timestamp / rowversion |
Специальное значение, которое является уникальным в пределах данной базы данных. Устанавливается автоматически. |
uniqueidentifier |
Специальный глобально уникальный идентификатор (GUID). Уникальность любого идентификатора GUID в пространстве и времени является гарантированной. |
Задание: постройте физическую модель базы данных в соответствии с описанием предметной области из вашего варианта задания. Для этого воспользуйтесь уже имеющейся логической моделью базы данных.