- •Создание базы данных «Домашняя библиотека»
- •Ягту 220301.65-016 лр
- •Оглавление Содержание:
- •1 Разработка структуры бд
- •1.1 Уточнение задач
- •1.2 Сущности
- •1.3 Нормализация Приведение к 1нф: Первая нормальная форма требует:
- •Приведение ко 2 нф:
- •Приведение к 3нф:
- •1.4 Проектирование таблиц
- •2. Реализация серверной части.
- •2.1 Создание таблиц.
- •2.2 Команды
- •3. Реализация клиентской части.
- •3.1 Проектирование интерфейса пользователя.
- •3.2 Проектирование отдельных графических форм.
- •3.3 Разработка алгоритмов.
- •3.4 Разработка структуры sql-запросов.
2. Реализация серверной части.
2.1 Создание таблиц.
Запросы SQL для создания таблиц выглядят следующим образом:
create table mesto_vidachi_bav
(kod_mesta_vidachi number(5,0) constraint pk_kod_mesta_vidachi_bav PRIMARY KEY CHECK(kod_mesta_vidachi>0),
nazvanie varchar2(40) NOT NULL,
adress varchar2(40) NOT NULL,
tip varchar2(10) NOT NULL) ;
CREATE TABLE mesto_vidachi_bav - данный запрос создаёт таблицу Место Выдачи.
Далее в скобках указывается, из каких полей будет состоять данная таблица и какой тип данных каждого из полей:
Поле kod_mesta_vidachi – является первичным ключом, имеет тип number(5,0), т.е. число состоящее максимум из 5 цифр. Не может быть отрицательным.
Поле nazvanie - имеет тип varchar2(40), т.е. строка переменного размера до 40 символов, не может иметь пустого значения, т.к. у любой книги есть название.
Поле adress - имеет тип varchar2(40), т.е. строка переменного размера до 40 символов, не может иметь пустого значения, т.к. у любого места выдачи книги есть адрес.
Поле tip - имеет тип varchar2(10), т.е. строка переменного размера до 10 символов, не может иметь пустого значения, т.к. у любого места выдачи книги есть тип (библиотека или магазин).
create table avtor_bav
(kod_knigi number(5,0) constraint fk_kod_knigi references knigi_bav(kod_knigi) CHECK(kod_knigi>0),
avtor varchar2(40) NOT NULL);
create table avtor_bav - данный запрос создаёт таблицу Авторы.
Далее в скобках указывается, из каких полей будет состоять данная таблица и какой тип данных каждого из полей:
Поле kod_knigi - является внешним ключом, то есть ссылка на соответствующее поле kod_knigi таблицы "knigi_bav", имеет тип number(5,0), т.е. число состоящее максимум из 5 цифр. Не может быть отрицательным.
Поле avtor- имеет тип varchar2(40), т.е. строка переменного размера до 40 символов. Не может иметь пустого значения, т.к. у любой книги есть автор.
Остальные таблицы создаются аналогично:
CREATE TABLE razdel_bav
(razdel varchar2(40) CONSTRAINT pk_razdel PRIMARY KEY NOT NULL,
podrazdel varchar2(40) NOT NULL);
CREATE TABLE knigi_bav
(kod_knigi number(5,0) CONSTRAINT pk_kod_knigi PRIMARY KEY CHECK(kod_knigi>0),
nazvanie_knigi varchar2(40) NOT NULL,
izdatelstvo varchar2(40) NOT NULL,
god_izdaniya number(4,0) CHECK(god_izdaniya>1900),
janr varchar2(40) NOT NULL,
kod_mesta_vidachi number(5,0) constraint fk_mesto_vidachi references mesto_vidachi_bav(kod_mesta_vidachi) CHECK(kod_mesta_vidachi>0),
razdel varchar2(40) constraint fk_razdel references razdel_bav(razdel) NOT NULL);
CREATE TABLE fio_bav
(fio varchar2(40) constraint pk_fio_bav PRIMARY KEY NOT NULL,
adress varchar2(40) NOT NULL);
create table polzovatel_knigi_bav
(kod_knigi number(5,0) constraint pk_kod_knigi_bav references knigi_bav(kod_knigi) CHECK(kod_knigi>0),
polzovatel varchar2(40) NOT NULL);
CREATE TABLE polzovatel_bav
(kod_knigi number(5,0) constraint fk_kod_knigi_bav references knigi_bav(kod_knigi) CHECK(kod_knigi>0),
data_vidachi varchar2(10) NOT NULL,
fio varchar2(40) constraint fk_fio references fio_bav(fio) NOT NULL,
srok_vozvrata varchar2(10) NOT NULL,
constraint pk_polzovatel_bav primary key(kod_knigi, data_vidachi));
2.2 Работа с данными.
Запросы SQL на заполнение таблиц данными выглядят следующим образом.
Для заполнения таблицы сначала вводится команда INSERT INTO, затем название таблицы, которую будем заполнять данными.
Затем используется команда VALUES, где в скобках, в кавычках через запятую указываются значения полей:
Заполнение данными таблицы mesto_vidachi_bav
insert into mesto_vidachi_bav (kod_mesta_vidachi, nazvanie, adress, tip)
values(1,'biblioteka 1','slepneva 43','biblioteka') ;
insert into mesto_vidachi_bav (kod_mesta_vidachi, nazvanie, adress, tip)
values(2,'bukva','furmanova 14a','magazin');
insert into mesto_vidachi_bav (kod_mesta_vidachi, nazvanie, adress, tip)
values(3,'gorodskaya biblioteka №3','svobodi 47','biblioteka');
insert into mesto_vidachi_bav (kod_mesta_vidachi, nazvanie, adress, tip)
values(4,'foliant','pobedi 71','magazin');
insert into mesto_vidachi_bav (kod_mesta_vidachi, nazvanie, adress, tip)
values(5,'akademiya','doronina 15','magazin');
Заполнение данными таблицы razdel_bav
insert into razdel_bav(razdel, podrazdel )
values('nauka','fizika');
insert into razdel_bav(razdel, podrazdel )
values('psihologiya','vzaimootnosheniya');
insert into razdel_bav(razdel, podrazdel )
values('fantastika','kosmos');
insert into razdel_bav(razdel, podrazdel )
values('sadovodstvo','kustarniki');
insert into razdel_bav(razdel, podrazdel )
values('klassika','stihi');
Заполнение данными таблицы knigi_bav
insert into knigi_bav (kod_knigi, nazvanie_knigi, izdatelstvo, god_izdaniya, janr, kod_mesta_vidachi, razdel)
values(10,'kvantovaya mehanika','drofa','1995','uchebnaya literatura',1,'nauka');
insert into knigi_bav (kod_knigi, nazvanie_knigi, izdatelstvo, god_izdaniya, janr, kod_mesta_vidachi, razdel)
values(20,'iskusstvo lubit','psihologiya','2005','uchebnaya literatura', 2,'psihologiya');
insert into knigi_bav (kod_knigi, nazvanie_knigi, izdatelstvo, god_izdaniya, janr, kod_mesta_vidachi, razdel)
values(30,'warhamer 40k','epika','1990','fantastika',3,'fantastika');
insert into knigi_bav (kod_knigi, nazvanie_knigi, izdatelstvo, god_izdaniya, janr, kod_mesta_vidachi, razdel)
values(40,'kustarniki','sad','2010','enciklopediya', 4,'sadovodstvo');
insert into knigi_bav (kod_knigi, nazvanie_knigi, izdatelstvo, god_izdaniya, janr, kod_mesta_vidachi, razdel)
values(50,'sbornik stihov','proza','1986','stihi', 5,'klassika');
Заполнение данными таблицы fio_bav
insert into fio_bav (fio, adress)
values('Ivanov Ilya Vladimirovich','slepneva 43');
insert into fio_bav (fio, adress)
values('Galitsin Albert Semovich','doronina 15');
insert into fio_bav (fio, adress)
values('jukov Ilya Vladimirovich','furmanova 77');
insert into fio_bav (fio, adress)
values('Kuzmin Ilya Nikolaevich','moskovskiy prospect 158');
insert into fio_bav (fio, adress)
values('Batalin Alexey Vladimirovich','kalinina 33');
Заполнение данными таблицы avtor_bav
insert into avtor_bav (kod_knigi,avtor)
values(10,'Savelev A.I. , Gundin V.P.');
insert into avtor_bav (kod_knigi,avtor)
values(20,'Fromm E.B.');
insert into avtor_bav (kod_knigi,avtor)
values(30,'Lyuis L.J.');
insert into avtor_bav (kod_knigi,avtor)
values(40,'Popov R.I.');
insert into avtor_bav (kod_knigi,avtor)
values(50,'Skudrin F.N.');
Заполнение данными таблицы polzovatel_knigi_bav
Insert into polzovatel_knigi_bav (kod_knigi, polzovatel)
values(10,'Petrov A.I. , Ivanov I.V.');
Insert into polzovatel_knigi_bav (kod_knigi, polzovatel)
values(20,'Galitsin A.S.');
Insert into polzovatel_knigi_bav (kod_knigi, polzovatel)
values(30,'Jukov I.V.');
Insert into polzovatel_knigi_bav (kod_knigi, polzovatel)
values(40,'Kuzmin I.N.');
Insert into polzovatel_knigi_bav (kod_knigi, polzovatel)
values(50,'Batalin A.V.');
Заполнение данными таблицы polzovatel_bav
insert into polzovatel_bav(kod_knigi, data_vidachi, fio, srok_vozvrata )
values(10,'12.01.12','Ivanov Ilya Vladimirovich','12.02.12');
insert into polzovatel_bav(kod_knigi, data_vidachi, fio, srok_vozvrata )
values(20,'05.03.12','Galitsin Albert Semovich','05.04.12');
insert into polzovatel_bav(kod_knigi, data_vidachi, fio, srok_vozvrata )
values(30,'22.12.11','jukov Ilya Vladimirovich','22.01.12' );
insert into polzovatel_bav(kod_knigi, data_vidachi, fio, srok_vozvrata )
values(40,'12.03.12','Kuzmin Ilya Nikolaevich','12.04.12');
insert into polzovatel_bav(kod_knigi, data_vidachi, fio, srok_vozvrata )
values(50,'18.05.12','Batalin Alexey Vladimirovich','18.06.12');