15. Необходимо разработать электронную библиотеку методических изданий университета, для функционирования которой необходимо создать электронный каталог, который содержит такую информацию:
Кроме того, структура базы данных должна предоставлять возможность хранить другую информацию, которая, по мнению студента, относится к данной предметной области и задачам, решаемым разрабатываемой системой.
16. Необходимо разработать информационную систему для инспектора отдела кадров университета, база данных которой должна содержать такую информацию:
А также, любая другая информация на усмотрение студента.
17. Необходимо разработать информационную систему для работы аптечной сети. Система должна включать подсистему аптечной справки, что позволит узнать клиенту в какой аптеке по какой цене он сможет купить нужный ему препарат. База данных должна содержать следующую информацию:
Кроме того, структура базы данных должна предоставлять возможность хранить другую информацию, которая, по мнению студента, относится к данной предметной области и задачам, решаемым разрабатываемой системой.
Лабораторная работа №2 (SQL запросы для создания таблиц)
Основные понятия
Примеры
Напишите SQL запросы для создания таблиц, которые были спроектированы в лабораторной работе №1.
Пример 1
Создание таблиц.
Создание таблицы МестаХранения:
create table МестаХранения(
Id_склада int primary key, /*Целое число, первичный ключ*/
Наименование char(30), /*Массив символов длины 30*/
Расположение char(50), /*Массив символов длины 50*/
МОЛ char(30)); /*Массив символов длины 30*/
Создание доменов Цвета и ЕдиницыИзмерения:
create domain Цвета char(20) /*Домен типа массив символов длины 20*/
default 'без цвета' /*Значение по умолчанию*/
check(value in('красный', 'черный', 'белый', 'серебристый', 'без цвета')); /*В домен входит список перечисленных значений*/
create domain ЕдиницыИзмерения char(10) /*Домен типа массив символов длины 10*/
default 'шт' /*Значение по умолчанию*/
check(value in('кг', 'м', 'л', 'шт')); /*В домен входит список перечисленных значений*/
Создание таблицы Товары:
create table Товары(
Id_товара int primary key, /*Целое число, первичный ключ*/
Артикул char(20), /*Массив символов длины 20*/
Наименование char(50), /*Массив символов длины 50*/
Цвет Цвета, /*Массив типа домен Цвета */
ЕдИзмерения ЕдиницыИзмерения, /*Массив типа домен ЕдиницыИзмерения*/
Цена decimal(10,2)); /*Фиксированное число с плавающей точкой, 2 знака после запятой*/
Создание домена ВидыКонтрагентов:
create domain ВидыКонтрагентов char(20) /*Домен типа массив символов длины 20*/
default 'Юридическое лицо' /*Значение по умолчанию*/
check(value in('Юридическое лицо', 'Физическое лицо')); /*В домен входит список перечисленных значений*/
Создание таблицы Контрагенты:
create table Контрагенты(
Id_контрагента int primary key, /*Целое число, первичный ключ*/
Наименование char(50), /*Массив символов длины 50*/
ВидКонтрагента ВидыКонтрагентов, /*Массив типа домен ВидыКонтрагентов*/
Адрес char(50), /*Массив символов длины 50*/
Телефон char(30), /*Массив символов длины 30*/
ФИО_контактнЛица char(30)); /*Массив символов длины 30*/
Создание таблицы Поставки:
create table Поставки(
№Накладной int primary key, /*Целое число, первичный ключ*/
Дата date default current_date, /*Дата, по умолчанию проставляется текущая*/
Склад int references МестаХранения(Id_склада), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице МестаХранения в поле Id_склада*/
Товар int references Товары(Id_товара), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице Товары в поле Id_товара*/
Контрагент int references Контрагенты(Id_контрагента), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице Контрагенты в поле Id_контрагента*/
Цена decimal(10,2), /*Фиксированное число с плавающей точкой, 2 знака после запятой*/
Количество int check(Количество>0)); /*Целое число, проверка, число должно быть >0*/
Создание таблицы Продажи:
create table Продажи(
№Накладной int primary key, /*Целое число, первичный ключ*/
Дата date default current_date, /*Дата, по умолчанию проставляется текущая*/
Склад int references МестаХранения(Id_склада), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице МестаХранения в поле Id_склада*/
Товар int references Товары(Id_товара), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице Товары в поле Id_товара*/
Контрагент int references Контрагенты(Id_контрагента), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице Контрагенты в поле Id_контрагента*/
Цена decimal(10,2), /*Фиксированное число с плавающей точкой, 2 знака после запятой*/
Количество int check(Количество>0)); /*Целое число, проверка, число должно быть >0*/
Создание таблицы Остатки:
create table Остатки(
Склад int references МестаХранения(Id_склада), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице МестаХранения в поле Id_склада*/
Товар int references Товары(Id_товара), /*Целое число, ограничение, определяющее, что значение этого поля может быть только такое, которое есть в таблице Товары в поле Id_товара*/
Количество int check(Количество>=0), /*Целое число, проверка, число должно быть >=0*/
primary key(Склад, Товар)); /*Первичный ключ из двух полей Склад и Товар*/
Заполнение таблиц данными:
INSERT INTO "МестаХранения" ("id_склада", "Наименование", "Расположение", "МОЛ") VALUES (1, 'Склад - Косметика', 'ул.Толбухина 230', 'Иванов П.Р.');
INSERT INTO "МестаХранения" ("id_склада", "Наименование", "Расположение", "МОЛ") VALUES (2, 'Склад - Продукты', 'пр. Мира 8', 'Петров И.Т.');
INSERT INTO "МестаХранения" ("id_склада", "Наименование", "Расположение", "МОЛ") VALUES (3, 'Склад - Мебель', 'ул. М.Жукова 2', 'Сидоров М.Р.');
INSERT INTO "Контрагенты" ("id_контрагента", "Наименование", "ВидКонтрагента", "Адрес", "Телефон", "ФИО_контактнЛица") VALUES (1, 'ЧП "Алиса"', 'Юридическое лицо', 'ул. Героев Сталинграда 45', '554676', 'Васильев Петр Иванович');
INSERT INTO "Контрагенты" ("id_контрагента", "Наименование", "ВидКонтрагента", "Адрес", "Телефон", "ФИО_контактнЛица") VALUES (2, 'Новиков И.Н.', 'Физическое лицо', 'ул. Греческая 9 кв 5', '345678', 'Новиков Иван Николаевич');
INSERT INTO "Контрагенты" ("id_контрагента", "Наименование", "ВидКонтрагента", "Адрес", "Телефон", "ФИО_контактнЛица") VALUES (3, 'ОАО "Одескабель"', 'Юридическое лицо', 'Николаевская дорого 144', '234567', 'Максимов Сергей Васильевич');
INSERT INTO "Товары" ("id_товара", "Артикул", "Наименование", "Цвет", "ЕдИзмерения") VALUES (1, 'МОЛ123', 'Молоко в пакетах 1л', 'без цвета', 'шт', 3.80);
INSERT INTO "Товары" ("id_товара", "Артикул", "Наименование", "Цвет", "ЕдИзмерения") VALUES (2, 'МОЛ124', 'Молоко', 'без цвета', 'л', 3.20);
INSERT INTO "Товары" ("id_товара", "Артикул", "Наименование", "Цвет", "ЕдИзмерения") VALUES (3, 'М567', 'Масло сливочное, 1 сорт', 'без цвета', 'кг', 5.50);
INSERT INTO "Товары" ("id_товара", "Артикул", "Наименование", "Цвет", "ЕдИзмерения") VALUES (4, 'М6778', 'Масло растительное, высший сорт, 1л', 'без цвета', 'шт', 6.70);
INSERT INTO "Товары" ("id_товара", "Артикул", "Наименование", "Цвет", "ЕдИзмерения") VALUES (5, 'Х687897', 'Хлеб обеденный', 'без цвета', 'шт', 2.40);
INSERT INTO "Товары" ("id_товара", "Артикул", "Наименование", "Цвет", "ЕдИзмерения") VALUES (6, 'Д6888', 'Диван двуспальный, производитель "Арт"', 'красный', 'шт', 1000.00);
INSERT INTO "Товары" ("id_товара", "Артикул", "Наименование", "Цвет", "ЕдИзмерения") VALUES (7, 'Г6677', 'Гарнитур кухоный', 'серебристый', 'шт', 1500.00);