Средства поддержания целостности
Для реализации целостности необходимо создать таблицы со следующими параметрами:
1. Таблица: Покупатели.
Содержит поля:
· ID. Идентификатор покупателя, устанавливаем автогенерацию, без NULL значений. Тип данных – int,
· Фамилия. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar(20).
· Имя. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar(20).
· Отчество. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar(20).
· Адрес. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar(50).
· Город. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar(20).
· Телефон. Строковые данные длины из 12 символов c поддержкой NULL значений. Тип данных –char (12).
· Дата_регистрации. Укажем значения по умолчанию, т.е. дату на момент регистрации. Тип данных –date.
Для поддержания целостности таблицы необходимо создать ограничение на корректность ввода номера телефона.
2. Таблица: Сотрудники.
Содержит поля:
· ID. Идентификатор сотрудника, устанавливаем автогенерацию, без NULL значений. Тип данных – int.
· Фамилия. Строковые данные переменной длины без поддержки NULL значений. Тип данных – nvarchar (20).
· Имя. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar (20).
· Отчество. Строковые данные переменной длины без поддержки NULL значений. Тип данных – nvarchar (20).
· Зарплата. Данные без поддержки NULL значений. Тип данных – money.
· ОтделID. Идентификатор отдела, без NULL значений. Тип данных – int.
· Премия. Данные с поддержкой NULL значений. Тип данных – money.
· Семейное положение. Строковые данные переменной длины без поддержки NULL значений. Тип данных – nvarchar (10).
· Дата рождения. Данные без поддержки NULL значений. Тип данных –date.
· Адрес. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar(50).
· Телефон. Строковые данные длины из 12 символов c поддержкой NULL значений. Тип данных –char (12).
Для поддержания целостности таблицы необходимо создать следующие ограничение:
· Ограничения согласно которому премия не может равняться и быть больше чем зарплата
· Ограничение на корректность ввода номера телефона и ограничение, согласно которому в интернет-магазин могут устраиваться кандидаты в возрасте от 18 до 50 лет.
· Ограничение на ввод данных в столбец "Семейное положение" (ввод: Женат, Не женат, Замужем, Не замужем)
3. Таблица: Отдел.
Содержит поля:
· ID. Идентификатор отдела, без NULL значений. Тип данных – int.
· Название отдела. Строковые данные переменной длины c поддержкой NULL значений. Тип данных – nvarchar (20).
4. Таблица: Товары.
Содержит поля:
· ID. Идентификатор продукта, без поддержки NULL значений. Тип данных – int.
· Название продукта. Строковые данные переменной длины без поддержки NULL значений. Тип данных – nvarchar(50).
5. Таблица: Детали товара.
Содержит поля:
· ID. Идентификатор продукта, без поддержки NULL значений. Тип данных – int.
· Цвет. Строковые данные фиксированной длины с поддержкой NULL значений. Тип данных – nchar(20).
· Материал. Строковые данные фиксированной длины с поддержкой NULL значений. Тип данных – nchar(20).
· Текстовое описание. Строковые данные максимальной длины с поддержкой NULL значений. Тип данных – nvarchar (max).
6. Таблица склад.
Содержит поля:
· ТоварID. Идентификатор продукта, без поддержки NULL значений. Тип данных – int.
· Остаток, данные без поддержки NULL значений. Тип данных – int.
Для поддержания целостности таблицы необходимо создать ограничение, согласно которому остаток товара на складе не может быть отрицательным.
7. Таблица Заказы.
Содержит поля:
· ID. Идентификатор заказа, устанавливаем автогенерацию, без NULL значений. Тип данных – int.
· СотрудникID. Идентификатор покупателя, с поддержкой NULL значений. Тип данных – int,
· ПокупательID. Идентификатор сотрудника, с поддержкой NULL значений. Тип данных – int,
· Дата оформления. Укажем значения по умолчанию, т.е. дату на момент оформления покупки. Тип данных – date.
8. Таблица Детали заказа.
Содержит поля:
· ЗаказID. Идентификатор заказа, данные без поддержки NULL значений. Тип данных – int.
· Количество позиций. Количество позиций, данные без поддержки NULL значений. Тип данных – int.
· ТоварID. Идентификатор продукта, с поддержкой NULL значений. Тип данных – int,
· Количество проданного, данные без поддержки NULL значений. Тип данных – int.
· Цена. Данные без поддержки NULL значений. Тип данных – money.
· Стоимость заказа. Вычислимое столбе по форуме (CONVERT([money],[Количество проданного]*[Цена])) Для подсчета общей суммы заказа.
После определения необходимых таблиц, свойств атрибутов мы получим модель базы данных интернет-магазина (см. рис. 2).
Рис. 2. Физическая модель базы данных
Таким образом, в результате проведенного проектирования базы данных описаны все необходимые данные для построения БД: определена структура базы данных: таблицы, сущности, атрибуты и типы данных; выбор первичных ключей; назначение необходимых внешних ключей. Кроме проектирования структуры базы данных, была произведена ее нормализация до второй и третьей нормальной формы. После проектирования таблиц, их ключей и связей, необходимо приступить к созданию базы данных. Помимо базы, таблиц, и их связей, необходимо создать хранимые процедуры, триггеры и представления.