- •«Базы данных»
- •(Для студентов очной и заочной формы обучения)
- •1. Организационно-методическая часть (Программа дисциплины)
- •1.1. Цели и задачи дисциплины
- •1.2. Требования к уровню освоения содержания дисциплины
- •1.3. Объем дисциплины и виды учебной работы (в часах)
- •1.4. Содержание дисциплины
- •1.4.1. Разделы дисциплин и виды занятий
- •1.4.2. Содержание разделов дисциплины
- •Тема 1. Введение.
- •Тема 2. Основные понятия. Модели данных.
- •Тема 3. Язык sql. Формирование запросов к бд.
- •Тема 4. Основы проектирования баз данных.
- •1.5. Перечень практических занятий
- •1.6. График выполнения самостоятельных работ студентами
- •1.7. Рекомендуемая литература
- •2. Конспект лекций (семестр 5)
- •2.1. Введение в базы данных
- •2.2. Классификация моделей данных
- •2.3. Язык sql
- •2.4. Проектирование баз данных
- •2.5.Физические модели баз данных
- •2.6. Распределённая обработка данных
- •2.7. Обеспечение безопасности в бд
- •2.8. Современные направления исследований и разработок
- •3. Конспект лекций (семестр 6)
- •3.1. Представления
- •3.2. Компоненты языка Transact-sql
- •3.3. Курсоры
- •3.4. Хранимые процедуры
- •3.5. Триггеры
- •4. Задания для проведения семинарских занятий
- •Create table Salespeople - - продавцы
- •Create table Customers - - покупатели
- •Create table Orders - - заказы
- •2. Ввод данных
- •3. Компиляция table Offices без ограничения внешнего ключа
- •4. Ввод данных
- •5. Компиляция table Salesreps без ограничения внешнего ключа
- •11. Компиляция table Orders
- •12. Ввод данных
- •5. Контрольные и самостоятельные работы
- •I. Создать и описать 3 таблицы базы данных «Студенты»
- •II. Внести данные в каждую из таблиц, например:
- •III. Выполнить запросы:
- •Задание на «Курсоры»
- •Задание на «Хранимые процедуры»
- •Задание на «Триггеры»
- •6. Вопросы к экзамену (семестр 5)
- •Классификация моделей данных.
- •Распределённая обработка данных.
- •Практическое задание к билету № 1
- •7. Вопросы к зачёту(семестр 6)
- •8. Форма итогового контроля
5. Контрольные и самостоятельные работы
А. Спроектировать БД «Библиотека», ввести данные и сформулировать 10 запросов.
create table Categories_annkos
(
catnum integer not null primary key ,
catname char(15) not null
);
insert into Categories_annkos values (111, 'Базы данных');
insert into Categories_annkos values (112, 'ÎÎÏ');
insert into Categories_annkos values (113, 'Логика');
insert into Categories_annkos values (114, 'История');
insert into Categories_annkos values (115, 'Философия');
select * from Categories_annkos;
drop table Categories_annkos;
-------------------------------------------------
create table Author_annkos
(
autnum integer not null primary key ,
autname char(15) not null,
autsurname char(15) not null,
birth_year integer ,
comment char(30)
);
--drop table Author_annkos;
select * from Author_annkos;
insert into Author_annkos values (211, 'М.', 'Грабер', null, null);
insert into Author_annkos values (212, 'Дж.С.', 'Боуман', null, null);
insert into Author_annkos values (213, 'Í.', 'Âåðò', null, null);
insert into Author_annkos values (214, 'С.Ф.', 'Платонов', null, null);
insert into Author_annkos values (215, 'Е.К.', 'Войшвилло', null, null);
insert into Author_annkos values (216, 'М.Г.', 'Дегтярев', null, null);
insert into Author_annkos values (217, 'Е.', 'Мамаев', null, null);
insert into Author_annkos values (218, 'А.', 'Вишневский', null, null);
insert into Author_annkos values (219, 'Т.А.', 'Павловская', null, null);
insert into Author_annkos values (220, 'Ю.А.', 'Щупак', null, null);
------------------------------------------------------
create table Publishing_house_annkos
(
pubnum integer not null primary key ,
pubname char(20) not null,
city char(15) not null,
);
select * from Publishing_house_annkos;
insert into Publishing_house_annkos values (311, 'Весь мир', 'Москва');
insert into Publishing_house_annkos values (312, 'ВЛАДОС-ПРЕСС', 'Москва');
insert into Publishing_house_annkos values (313, 'Интерпракс', 'Москва');
insert into Publishing_house_annkos values (314, 'Вильямс', 'Москва');
insert into Publishing_house_annkos values (315, 'Лори', 'Москва');
insert into Publishing_house_annkos values (316, 'БХВ', 'Санкт-Питербург');
insert into Publishing_house_annkos values (317, 'Питер', 'Санкт-Питербург');
---------------------------------------------------------
create table Books_annkos
(
isbn integer not null primary key ,
bookname varchar(60) not null,
catnum integer not null,
pubyear integer not null,
FOREIGN KEY (catnum) references Categories_annkos (catnum),
);
select * from Books_annkos;
insert into Books_annkos values (411, 'SQL',111, 2003);
insert into Books_annkos values (412, 'История Советского государства',114, 2000);
insert into Books_annkos values (413, 'Полный курс лекций по русской истории',114, 2002);
insert into Books_annkos values (414, 'Логика:Учеб.для вузов',113, 2001);
insert into Books_annkos values (415, 'Логика с элементами эпистемологии и научной методологии',113, 1994);
insert into Books_annkos values (416, 'Практическое руководство по SQL',111, 2001);
insert into Books_annkos values (417, 'Microsoft SQL Server 2000',111, 2002);
insert into Books_annkos values (418, 'Microsoft SQL Server 7 для профессионалов',111, 2001);
insert into Books_annkos values (419, 'С++. Объектно-ориентированное программирование',112, 2005);
insert into Books_annkos values (420, 'С/ С++. Структурное программирование',112, 2005);
drop table Books_annkos;
-----------------------------------------------------------
create table Book_Author_annkos
(
isbn integer not null references Books_annkos ,
autnum integer not null references Author_annkos,
primary key(isbn,autnum)
);
select * from Book_Author_annkos;
insert into Book_Author_annkos values (411,211);--'SQL'
insert into Book_Author_annkos values (412,213);--'История Советского государства'
insert into Book_Author_annkos values (413,214);--'Полный курс лекций по русской истории'
insert into Book_Author_annkos values (414,215);--Логика:Учеб.для вузов'
insert into Book_Author_annkos values (414,216);--Логика:Учеб.для вузов'
insert into Book_Author_annkos values (415,215);--'Логика с элементами эпистемологии и научной методологии'
insert into Book_Author_annkos values (415,216);--'Логика с элементами эпистемологии и научной методологии'
insert into Book_Author_annkos values (416,212);--'Практическое руководство по SQL'
insert into Book_Author_annkos values (417,217);--'Microsoft SQL Server 2000'
insert into Book_Author_annkos values (418,217);--'Microsoft SQL Server 7 для профессионалов'
insert into Book_Author_annkos values (418,218);--'Microsoft SQL Server 7 для профессионалов'
insert into Book_Author_annkos values (419,219);--'С++. Объектно-ориентированное программирование'
insert into Book_Author_annkos values (419,220);--'С++. Объектно-ориентированное программирование'
insert into Book_Author_annkos values (420,219);--'С/ С++. Структурное программирование'
insert into Book_Author_annkos values (420,220);--'С/ С++. Структурное программирование'
--drop table Book_Author_annkos;
---------------------------------------------------------------
create table Book_Publishing_annkos
(
isbn integer not null references Books_annkos ,
pubnum integer not null references Publishing_house_annkos,
primary key(isbn,pubnum)
);
select * from Book_Publishing_annkos;
insert into Book_Publishing_annkos values (411,315);
insert into Book_Publishing_annkos values (412,311);
insert into Book_Publishing_annkos values (413,311);
insert into Book_Publishing_annkos values (414,312);
insert into Book_Publishing_annkos values (415,313);
insert into Book_Publishing_annkos values (416,314);
insert into Book_Publishing_annkos values (417,316);
insert into Book_Publishing_annkos values (418,317);
insert into Book_Publishing_annkos values (419,317);
insert into Book_Publishing_annkos values (420,317);
--drop table Book_Publishing_annkos;
------------------------------------------------------------------
--ЗАПРОСЫ
--1 Найти все книги, у которых 2 автора, и вывести книги, разделы и авторов
select bookname,catname,autsurname
from Categories_annkos,Author_annkos,Books_annkos,Book_Author_annkos
where Books_annkos.isbn in
(select isbn
from Book_Author_annkos
group by isbn
having count(autnum)=2)
and Categories_annkos.catnum=Books_annkos.catnum
and Author_annkos.autnum=Book_Author_annkos.autnum
and Books_annkos.isbn=Book_Author_annkos.isbn;
--2 Найти все книги, которые написала Павловская
select bookname,autsurname
from Author_annkos,Books_annkos,Book_Author_annkos
where Author_annkos.autnum =219
and Author_annkos.autnum=Book_Author_annkos.autnum
and Books_annkos.isbn=Book_Author_annkos.isbn;
--èëè
select bookname,autsurname
from Author_annkos,Books_annkos,Book_Author_annkos
where Book_Author_annkos.autnum =
(select autnum
from Author_annkos
where autsurname='Павловская')
and Author_annkos.autnum=Book_Author_annkos.autnum
and Books_annkos.isbn=Book_Author_annkos.isbn;
--3 Найти всех авторов, издававших книги в издательстве Питер
select distinct autsurname
from Author_annkos,Books_annkos,Book_Author_annkos,Book_Publishing_annkos
where Book_Author_annkos.autnum in
(select autnum
from Book_Author_annkos
where isbn in
(select isbn
from Book_Publishing_annkos
where pubnum=317))
and Author_annkos.autnum=Book_Author_annkos.autnum
and Books_annkos.isbn=Book_Author_annkos.isbn
and Book_Publishing_annkos.isbn=Books_annkos.isbn;
--4 Найти все книги по ООП
select bookname,catname
from Books_annkos,Categories_annkos
where Books_annkos.catnum =112
and Books_annkos.catnum=Categories_annkos.catnum;
--èëè
select bookname,catname
from Books_annkos,Categories_annkos
where Books_annkos.catnum =
(select catnum
from Categories_annkos
where catname='ÎÎÏ')
and Books_annkos.catnum=Categories_annkos.catnum;
--5 Вывести всех авторов, написавших 2 книги
select bookname,catname,autsurname
from Categories_annkos,Author_annkos,Books_annkos,Book_Author_annkos
where Author_annkos.autnum in
(select autnum
from Book_Author_annkos
group by autnum
having count(isbn)=2)
and Categories_annkos.catnum=Books_annkos.catnum
and Author_annkos.autnum=Book_Author_annkos.autnum
and Books_annkos.isbn=Book_Author_annkos.isbn
order by 3;
--6 Найти все издательства, издавшие книги по истории
select distinct pubname, city
from Books_annkos,Book_Publishing_annkos,Publishing_house_annkos
where Publishing_house_annkos.pubnum in
(select pubnum
from Book_Publishing_annkos
where isbn in
(select isbn
from Books_annkos
where catnum=114))
and Books_annkos.isbn=Book_Publishing_annkos.isbn
and Book_Publishing_annkos.pubnum=Publishing_house_annkos.pubnum;
--7 Найти всех авторов, написавших книги по SQL
select distinct autsurname,autname
from Author_annkos,Books_annkos,Book_Author_annkos
where Author_annkos.autnum in
(select autnum
from Book_Author_annkos
where isbn in
(select isbn
from Books_annkos
where catnum=111))
and Books_annkos.isbn=Book_Author_annkos.isbn
and Book_Author_annkos.autnum=Author_annkos.autnum;
--8 Вывести все книги, издававшиеся в Москве
select distinct bookname,catname
from Categories_annkos,Author_annkos,Books_annkos,Book_Author_annkos
where Books_annkos.isbn in
(select isbn
from Book_Publishing_annkos
where pubnum in
(select pubnum
from Publishing_house_annkos
where city='Москва'))
and Categories_annkos.catnum=Books_annkos.catnum
and Author_annkos.autnum=Book_Author_annkos.autnum
and Books_annkos.isbn=Book_Author_annkos.isbn;
--9 Найти все книги издававшиеся до 2003 года, но не по Истории
select distinct bookname,Categories_annkos.catname,pubyear
from Categories_annkos,Books_annkos
where pubyear < 2003
and Books_annkos.catnum <>
(select catnum
from Categories_annkos
where catname = 'История')
and Categories_annkos.catnum=Books_annkos.catnum;
--10 Вывести все категории, в которых больше, чем 2 книги
select catname
from Categories_annkos
where catnum in
(select catnum
from Books_annkos
group by catnum
having count(isbn)>2);
Б. Разработать небольшую БД «Студенты», ввести данные и реализовать запросы
