База данных велосипедного магазина

Курсовая работапо дисциплине «Базы данных»
Выполнили студенты гр.3101:
Куприянов Андрей
Полывянный Артем
СанктПетербург
2009

Описаниепредметной области
База данныхвелосипедного магазина. Велосипедный магазин специализируется на продаже 2хосновных видов товара: велосипеды и запчасти к велосипедам.
Велосипеды делятся начетыре категории:
1.        Хардтейлы(велосипеды только с передним амортизатором (амортизационной вилкой)).
2.        Двухподвесы(велосипеды с передним и задним амортизатором (амортизационной вилкой иамортизатором соединяющим передний и задний треугольники рамы)).
3.        Триальные(велосипеды для техничного преодоления препятствий без касания земли ногами илидругими частями тела).
4.        БМХ(велосипеды на колесах маленького диаметра (20 дюймов) для техничного катания).
В свою очередь, каждаяиз этих категорий делится на разные типы (стили) катания. Хардтейлы делятся на:
1.        Кросскантри(XC) Один из самых популярных стилей катания — включает в себя все: лесныетропки с корнями, грунтовые дороги, спуски и подъемы. На таком байке можноотправиться в загородное путешествие, погонять в парке с друзьями, поехать вмногодневный поход, или просто скинуть лишний вес. А можно попробовать себя всоревнованиях, которые проводятся летом почти каждый уикенд и год за годомпривлекают все больше участников. Кросскантри – это скорость и выносливость,изящность и техничность.
2.        Трейл(Trail) Такой стиль представляет собой смешение фрирайдных прыжков, синглтрекови длинных, быстрых кантрийных маршрутов. Современный трейлбайк может выглядетькак облегченный фрирайдный монстр, с которого сбрили лишний вес и убралинесколько сантиметров плюшевого хода, оставив 100 — 150 миллиметров.
3.        Дерт(Dirt) Прыжки на специально построенном трамплине с выполнением различныхтрюков. Велосипед для дерта – все тот же мощный хардтейл небольшой ростовки,сейчас имеется тенденция к максимальному упрощению таких байков, с нихснимается передний тормоз, переключатели скоростей, в общем, все, что можетпомешать Вам сделать самый лучший трюк.
4.        Фрирайд(FR) Понятие фрирайд многогранное – это может быть как спуск с горы понеизведанному маршруту, так и какой-нибудь норт-шор, возведенный в лесунеподалеку, или пятиметровый дроп, а, может, и техничная съезжалка в парке.Все, что Вы можете себе позволить на байке – это фрирайд. И для каждого онсвой.
Двухподвесы делятся на:
1.        Даунхилл(DH) Скоростной спуск на велосипеде. Только вниз. Высокая скорость, резкиеповороты, пролеты, техничные участки, постоянно меняющееся покрытие – это вседаунхилл. Современный байк для DH – это тяжелый двухподвес с большим ходомпередней и задней подвесок, двухкоронной вилкой, широким изогнутым рулем итолстыми покрышками.
2.        Кросскантри(XC) Один из самых популярных стилей катания — включает в себя все: лесныетропки с корнями, грунтовые дороги, спуски и подъемы. Велосипед для кросскантри– это легкий двухподвес с ходом задней подвески до 105 мм. На таком байке можноотправиться в загородное путешествие, погонять в парке с друзьями, поехать вмногодневный поход, или просто скинуть лишний вес. А можно попробовать себя всоревнованиях, которые проводятся летом почти каждый уикенд и год за годомпривлекают все больше участников. Кросскантри – это скорость и выносливость,изящность и техничность.
3.        Фрирайд(FR) Понятие фрирайд многогранное – это может быть как спуск с горы понеизведанному маршруту, так и какой-нибудь норт-шор, возведенный в лесунеподалеку, или пятиметровый дроп, а, может, и техничная съезжалка в парке.Современный байк для FR– это тяжелый двухподвес с ходом передней и задней подвесок в 150 – 200миллиметров. Все, что Вы можете себе позволить на байке – это фрирайд. И длякаждого он свой.
Запчасти. Каждыйвелосипед, как конструктор, состоит из большого числа деталей. Детали(запчасти) разделены на несколько видов (типов).
1.        Амортизаторы.Состоят из передних амортизаторов (Marzocchi,RockShox), задних амортизаторови запасных частей к амортизаторам
2.        Колеса.Состоят из втулки, обода, покрышки, камеры, спицы и запасные части для колес.
3.        Привод.Состоит из звезды, каретки, кассеты, манетки, переключателя, успокоителя, цепи,шатунов.
4.        Рамы.
5.        Тормоза.Делятся на дисковые тормоза, ободные тормоза и запчасти к ним.
6.        Управление.Вынос, педали, подседельный штырь, седло, рулевая, руль, грипсы.
Так же в магазинепредставлена велоодежда и защита. Велообувь, защита, одежда, перчатки, шлемы имаски.
В базе необходимохранить информацию о:
Персоналии магазина:
ФИО
№ телефона
Дата рождения
Профессия
Адрес
Пол
О фирмах производителяхи поставщиках:
Название
Адрес
Телефон
О товарах:
Название
Тех характеристики
Свойства
Тип товара
Информация о движениитовара:
Тип операции
Цена
Дата
Кол-во

1.        Структура базы данных
 
1.1     ПерсоналНазвание (в базе) Название (перевод) Описание
Код
 
ФИО
№ телефона
Дата рождения
Адрес
Пол
Код профессии
KOD
FIO
TELEFON
BIRTHSDAY
ADRES
POL
KOD_PROFESSII
Уникальный индентификатор работника
Фамилия, Имя, Отчество
№ телефона
Дата рождения
Адрес
Пол
Код профессии в таблице Professii
1.2     СкладНазвание (в базе) Название (перевод) Описание
Код товара
Код фирмы
Код персон
Код типа операции
 
Цена
Дата
Кол-во
 
KOD_TOVARA
KOD_FIRMI
KOD_PERSON
KOD_TIPA_OPERAZII
ZENA
DATA
KOLICHESTVO
Код товара в таблице Tovar
Код фирмы в таблице Firmi
Код персоны в таблице Personal
Код типа операции в таблице Tipi_operazii
Закупочная цена
Дата
Количество товара участвующего в операции
1.3     ТоварНазвание (в базе) Название (перевод) Описание
Код
 
Код типа товара
Название
KOD
KOD_TIPA_TOVARA
NAZVANIE
Уникальный индентификатор товара
Код товара в таблице Tipi_tovarov
Название товара

1.4     ТипытоваровНазвание (в базе) Название (перевод) Описание
Код
 
Название
Код фирмы
 
Код типа товара
 
KOD
NAZVANIE
KOD_FIRMI
KOD_TIPA_TOVARA
Уникальный индентификатор типа товара
Название типа товара
Код фирмы производителя в таблице Firmi
Код родительского типа товаров в таблице Tipi_tovarov
1.5     ФирмыНазвание (в базе) Название (перевод) Описание
Код
 
Название
Адрес
Телефон
Код типа фирмы
 
KOD
NAZVANIE
ADRES
TELEFON
KOD_TIPA_FIRMI
Уникальный индентификатор типа фирмы
Название фирмы
Адрес
Телефон
Код типа фирмы в таблице Tipi_firm
1.6     ТехническиехарактеристикиНазвание (в базе) Название (перевод) Описание
Код товара
Код свойства
Значение
KOD_TOVARA
KOD_SVOISTVA
ZNACHENIE
Код товара в таблице Tovar
Код свойства в таблице Svoistva
Значение характеристики
1.7     СвойстваНазвание (в базе) Название (перевод) Описание
Код
Название
Единицы измерения
KOD
NAZVANIE
EDINIZI IZMERENIA
Уникальный индентификатор Название свойства
Единицы измерения свойства
1.8     ПрофессииНазвание (в базе) Название (перевод) Описание
Код
Название
KOD
NAZVANIE Уникальный индентификатор Название профессии
1.9     ТипыфирмНазвание (в базе) Название (перевод) Описание
Код
Название
KOD
NAZVANIE Уникальный индентификатор Название фирмы
1.10         ТипыоперацийНазвание (в базе) Название (перевод) Описание
Код
Название
KOD
NAZVANIE Уникальный индентификатор Название операции
123– Primarykey(первичныйключ)
123– Foreignkey(связь)
123– Uniqe(уникальный)

2.        Примеры создания таблиц
createtable Professii (KOD NUMBER(5) PRIMARY KEY,
NAZVANIE                  VARCHAR2(30)UNIQUE
);
createtable Personal (KOD NUMBER(5) PRIMARY KEY,
FIO                      VARCHAR2(50),
TELEFON           VARCHAR2(15),
BIRTHSDAY               DATE,
ADRES                         VARCHAR2(30),
POL                     NUMBER(1),
KOD_PROFESSII                  NUMBER(5),
UNIQUE(FIO,BIRTHSDAY),
FOREIGNKEY KOD_PROFESSII REFERENCES PROFESSII KOD
);
createtable Svoistva (KOD NUMBER(5) PRIMARY KEY,
NAZVANIE                  VARCHAR2(30),
EDINIZIIZMERENIA  VARCHAR2(10)
);
createtable Texnicheskie_xarakteristiki (
KOD_TOVARA           NUMBER(5),
KOD_SVOISTVA                 NUMBER(5),
ZNACHENIE                NUMBER(5),
FOREIGNKEY KOD_TOVARA REFERENCES TOVARI KOD,
FOREIGNKEY KOD_SVOISTVA REFERENCES SVOISTVA KOD
);
createtable Tipi_firm (KOD NUMBER(5) PRIMARY KEY,
NAZVANIE                  VARCHAR2(30)UNIQUE
);
createtable Tipi_operazii (KOD NUMBER(5) PRIMARY KEY,
NAZVANIE                 VARCHAR2(30) UNIQUE
);
createtable Firmi (KOD NUMBER(5) PRIMARY KEY,
NAZVANIE                  VARCHAR2(30)UNIQUE,
ADRES                         VARCHAR2(30),
TELEFON           VARCHAR2(15),
KOD_TIPA_FIRMI               NUMBER(5),
FOREIGNKEY KOD_TIPA_FIRMI REFERENCES TIPI_FIRM KOD
);
createtable Tipi_tovarov (KOD NUMBER(5) PRIMARY KEY,
NAZVANIE                  VARCHAR2(30)UNIQUE,
KOD_FIRMI                 NUMBER(5),
KOD_TIPA_TOVARA NUMBER(5),
FOREIGNKEY KOD_FIRMI REFERENCES FIRMI KOD,
FOREIGNKEY KOD_TIPA_TOVARA REFERENCES TIPI_TOVAROV KOD
);
createtable Tovari (KOD NUMBER(5) PRIMARY KEY,
KOD_TIPA_TOVARA NUMBER(5),
NAZVANIE                  VARCHAR2(30),
UNIQUE(KOD_TIPA_TOVARA,NAZVANIE),
FOREIGNKEY KOD_TIPA_TOVARA REFERENCES TIPI_TOVAROV KOD
);
createtable Sklad (
KOD_TOVARA           NUMBER(5),
KOD_FIRMI                 NUMBER(5),
KOD_PERSON            NUMBER(5),
KOD_TIPA_OPERAZII         NUMBER(5),
ZENA                           NUMBER(5),
DATA                           DATE,
KOLICHESTVO           NUMBER(3),
FOREIGNKEY KOD_TOVARA REFERENCES TOVARI KOD,
FOREIGNKEY KOD_FIRMI REFERENCES FIRMI KOD,
FOREIGNKEY KOD_PERSON REFERENCES PERSONAL KOD,
FOREIGNKEY KOD_TIPA_OPERAZII REFERENCES TIPI_OPERAZII KOD
);

3.        Примеры создания последовательностей
CREATESEQUENCE «SEQPERSONAL» MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1START WITH 1 CACHE 20 NOORDER NOCYCLE;
CREATESEQUENCE «SEQFIRMI» MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1START WITH 1 CACHE 20 NOORDER NOCYCLE;
CREATESEQUENCE «SEQTIPI_TOVAROV» MINVALUE 1 MAXVALUE 9999999999 INCREMENTBY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE;
CREATESEQUENCE «SEQTOVARI» MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1START WITH 1 CACHE 20 NOORDER NOCYCLE;

4.        Примеры создания триггеров
CREATEOR REPLACE TRIGGER INSERT_IN_PERSONAL
BEFOREINSERT ON PERSONAL
FOREACH ROW
BEGIN
SELECTSEQPERSONAL.NEXTVAL INTO :new.KOD FROM DUAL;
END;
/
CREATEOR REPLACE TRIGGER INSERT_IN_FIRMI
BEFOREINSERT ON FIRMI
FOREACH ROW
BEGIN
SELECTSEQFIRMI.NEXTVAL INTO :new.KOD FROM DUAL;
END;
/
CREATEOR REPLACE TRIGGER INSERT_IN_TIPI_TOVAROV
BEFOREINSERT ON TIPI_TOVAROV
FOREACH ROW
BEGIN
SELECTSEQTIPI_TOVAROV.NEXTVAL INTO :new.KOD FROM DUAL;
END;
/
CREATEOR REPLACE TRIGGER INSERT_IN_TOVARI
BEFOREINSERT ON TOVARI
FOREACH ROW
BEGIN
SELECTSEQTOVARI.NEXTVAL INTO :new.KOD FROM DUAL;
END;
/

5.        Создание процедуры
 
CREATEOR REPLACE FUNCTION
Updater
(NUMTOVARANumber)
IS
         ResultNumber
BEGIN
         RETURN
(SELECTSUM (KOLICHESTVO) FROM SKLAD WHERE KOD_TOVARA=
NUMTOVARAAND KODTIPAOPERAZII=1)- (SELECT SUM (KOLICHESTVO) FROM SKLAD WHERE KOD_TOVARA=
NUMTOVARAAND KODTIPAOPERAZII =2)
END

 
6.        Вставка данных
 
INSERTINTO PROFESSII (KOD,NAZVANIE) VALUES (1,’ПРОДАВЕЦ’);
INSERTINTO PROFESSII (KOD,NAZVANIE) VALUES (2,’КАССИР’);
INSERTINTO PROFESSII (KOD,NAZVANIE) VALUES (3,’МЕНЕДЖЕР’);
INSERTINTO PROFESSII (KOD,NAZVANIE) VALUES (4,’ДИРЕКТОР’);
INSERTINTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES (‘КУПРИЯНОВАНДРЕЙМИХАЙЛОВИЧ’,’88127567432′,’СПбКИРОВА37 16′,SYSDATE,1,1);
INSERTINTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES (‘КОВАЛЕВИЛЬЯСЕРГЕЕВИЧ’,’88128567432′,’СПбМАРАТА38 14′,SYSDATE,1,2);
INSERTINTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES (‘ПОЛЫВЯННЫЙАРТЕМВИКТОРОВИЧ’,’88128967432′,’СПбМИРА5 12′,SYSDATE,1,3);
INSERTINTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES (‘ПОЛЫВЯННАЯДАРЬЯВИКТОРОВНА’,’88127417432′,’СПбМИРА5 12′,SYSDATE,2,4);
INSERTINTO SVOISTVA (KOD,NAZVANIE,EDINIZI_IZMERENIA) VALUES (1,’РАЗМЕРОБУВИ’,’РАЗМЕР’);
INSERTINTO SVOISTVA (KOD,NAZVANIE,EDINIZI_IZMERENIA) VALUES (2,’РАЗМЕРРАМЫ’,’ДЮЙМЫ’);
INSERTINTO SVOISTVA (KOD,NAZVANIE,EDINIZI_IZMERENIA) VALUES (3,’КОЛ-ВОЗВЕНЬЕВ’,’ЗВЕНЬЯ’);
INSERTINTO TIPI_FIRM (KOD,NAZVANIE) VALUES (1,’ПОСТАВЩИК’);
INSERTINTO TIPI_FIRM (KOD,NAZVANIE) VALUES (2,’ПРОИЗВОДИТЕЛЬ’);
INSERTINTO TIPI_OPERAZII (KOD,NAZVANIE) VALUES (1,’ПРИХОД’);
INSERTINTO TIPI_OPERAZII (KOD,NAZVANIE) VALUES (2,’РАСХОД’);
INSERTINTO FIRMI (NAZVANIE,ADRES,TELEFON,KOD_TIPA_FIRMI) VALUES (‘SRAM’,’МОСКВАТУШИНСКИЙ40′,’84956543211′,2);
INSERTINTO FIRMI (NAZVANIE,ADRES,TELEFON,KOD_TIPA_FIRMI) VALUES (‘ВЕЛОМИР’,’МОСКВАТВЕРСКОЙПРОСПЕКТ14′,’84954567213′,1);
INSERTINTO FIRMI (NAZVANIE,ADRES,TELEFON,KOD_TIPA_FIRMI) VALUES (‘СПОРТАКАДЕМИЯ’,’МОСКВАЛЕНИНА65′,’84952345764′,1);
INSERTINTO TIPI_TOVAROV (NAZVANIE,KOD_FIRMI,KOD_TIPA_TOVARA) VALUES (‘КАССЕТА’,00001,1);
INSERTINTO TIPI_TOVAROV (NAZVANIE,KOD_FIRMI,KOD_TIPA_TOVARA) VALUES (‘МАНЕТКА’,00001,2);
INSERTINTO TIPI_TOVAROV (NAZVANIE,KOD_FIRMI,KOD_TIPA_TOVARA) VALUES (‘ЦЕПЬ’,00001,3);
INSERTINTO TOVARI (NAZVANIE,KOD_TIPA_TOVARA) VALUES (‘970DH’,1);
INSERTINTO TOVARI (NAZVANIE,KOD_TIPA_TOVARA) VALUES (‘X9’,2);
INSERTINTO TOVARI (NAZVANIE,KOD_TIPA_TOVARA) VALUES (‘990 HOLLOWPOINT’,3);
INSERTINTO SKLAD(KOD_TOVARA,KOD_FIRMI,KOD_PERSON,KOD_TIPA_OPERAZII,ZENA,DATA,KOLICHESTVO)VALUES (00001,00002,3,1,1800,SYSDATE,8);
INSERTINTO SKLAD(KOD_TOVARA,KOD_FIRMI,KOD_PERSON,KOD_TIPA_OPERAZII,ZENA,DATA,KOLICHESTVO)VALUES (00002, ,1,2,1100,SYSDATE,1);
INSERTINTO SKLAD(KOD_TOVARA,KOD_FIRMI,KOD_PERSON,KOD_TIPA_OPERAZII,ZENA,DATA,KOLICHESTVO)VALUES (00003,00001,3,1,800,SYSDATE,3);
INSERTINTO TEXNICHESKIE_XARAKTERISTIKI (KOD_TOVARA,KOD_SVOISTVA,ZNACHENIE) VALUES(00001,3,112);
INSERTINTO TEXNICHESKIE_XARAKTERISTIKI (KOD_TOVARA,KOD_SVOISTVA,ZNACHENIE) VALUES(00002,2,9);
INSERTINTO TEXNICHESKIE_XARAKTERISTIKI (KOD_TOVARA,KOD_SVOISTVA,ZNACHENIE) VALUES(00003,1,11-32);
Описание приложения
 
/>
 
 
 
 
 
 
 
 
В приложении созданытри группы пользователей: «Покупатель», «Продавец» и «Менеджер по персоналу».
/>
Пользователь «Покупатель»может просматривать товары, имеющиеся на складе. Изменения записей базы данных,данному пользователю запрещены.
При выборе пользователя«продавец» появляется окно:
/>
Пользователь долженвыбрать себя из предложенного списка и нажать «Ок». Если он себя не нашел, тонеобходимо нажать «Back» и обратиться кменеджеру по персоналу.
/>