Смекни!
smekni.com

Методические указания к лабораторным работам по дисциплине "организация баз данных" для студентов специальности Утверждено (стр. 3 из 6)

15. Необходимо разработать электронную библиотеку методических изданий университета, для функционирования которой необходимо создать электронный каталог, который содержит такую информацию:

  • информация об авторах – ФИО, ученая степень (нет, кандидат наук, доктор наук), ученое звание (нет, приват-доцент, приват-профессор, доцент, профессор, старший научный сотрудник, ведущий научный работник, член-корреспондент, академик), название кафедры где работает автор;
  • дисциплина, для которой предназначено издание;
  • название и шифр специальностей или направлений, для студентов которого предназначено издание;
  • тип издания (конспект лекций, методические указания (к лабораторным работам, к практическим работам, к курсовым работам, к контрольным работам для студентов заочной формы обучения), мультимедийный учебник);
  • год издания;
  • объем: количество печатных страниц, объем файла, формат файла, регистрационный номер или код ISBN, шифр УДК, аннотация.

Кроме того, структура базы данных должна предоставлять возможность хранить другую информацию, которая, по мнению студента, относится к данной предметной области и задачам, решаемым разрабатываемой системой.

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);