Курсовая на тему База данных велосипедного магазина
Работа добавлена на сайт bukvasha.net: 2015-06-30Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
![](https://bukvasha.net/assets/images/emoji__ok.png)
Предоплата всего
![](https://bukvasha.net/assets/images/emoji__signature.png)
Подписываем
Курсовая работа по дисциплине «Базы данных»
Выполнили студенты гр. 3101:
Куприянов Андрей
Полывянный Артем
Санкт Петербург
2009
Описание предметной области
База данных велосипедного магазина. Велосипедный магазин специализируется на продаже 2х основных видов товара: велосипеды и запчасти к велосипедам.
Велосипеды делятся на четыре категории:
Хардтейлы (велосипеды только с передним амортизатором (амортизационной вилкой)).
Двухподвесы (велосипеды с передним и задним амортизатором (амортизационной вилкой и амортизатором соединяющим передний и задний треугольники рамы)).
Триальные (велосипеды для техничного преодоления препятствий без касания земли ногами или другими частями тела).
БМХ (велосипеды на колесах маленького диаметра (20 дюймов) для техничного катания).
В свою очередь, каждая из этих категорий делится на разные типы (стили) катания. Хардтейлы делятся на:
Кросскантри (XC) Один из самых популярных стилей катания - включает в себя все: лесные тропки с корнями, грунтовые дороги, спуски и подъемы. На таком байке можно отправиться в загородное путешествие, погонять в парке с друзьями, поехать в многодневный поход, или просто скинуть лишний вес. А можно попробовать себя в соревнованиях, которые проводятся летом почти каждый уикенд и год за годом привлекают все больше участников. Кросскантри – это скорость и выносливость, изящность и техничность.
Трейл (Trail) Такой стиль представляет собой смешение фрирайдных прыжков, синглтреков и длинных, быстрых кантрийных маршрутов. Современный трейлбайк может выглядеть как облегченный фрирайдный монстр, с которого сбрили лишний вес и убрали несколько сантиметров плюшевого хода, оставив 100 - 150 миллиметров.
Дерт (Dirt) Прыжки на специально построенном трамплине с выполнением различных трюков. Велосипед для дерта – все тот же мощный хардтейл небольшой ростовки, сейчас имеется тенденция к максимальному упрощению таких байков, с них снимается передний тормоз, переключатели скоростей, в общем, все, что может помешать Вам сделать самый лучший трюк.
Фрирайд (FR) Понятие фрирайд многогранное – это может быть как спуск с горы по неизведанному маршруту, так и какой-нибудь норт-шор, возведенный в лесу неподалеку, или пятиметровый дроп, а, может, и техничная съезжалка в парке. Все, что Вы можете себе позволить на байке – это фрирайд. И для каждого он свой.
Двухподвесы делятся на:
Даунхилл (DH) Скоростной спуск на велосипеде. Только вниз. Высокая скорость, резкие повороты, пролеты, техничные участки, постоянно меняющееся покрытие – это все даунхилл. Современный байк для DH – это тяжелый двухподвес с большим ходом передней и задней подвесок, двухкоронной вилкой, широким изогнутым рулем и толстыми покрышками.
Кросскантри (XC) Один из самых популярных стилей катания - включает в себя все: лесные тропки с корнями, грунтовые дороги, спуски и подъемы. Велосипед для кросскантри – это легкий двухподвес с ходом задней подвески до 105 мм. На таком байке можно отправиться в загородное путешествие, погонять в парке с друзьями, поехать в многодневный поход, или просто скинуть лишний вес. А можно попробовать себя в соревнованиях, которые проводятся летом почти каждый уикенд и год за годом привлекают все больше участников. Кросскантри – это скорость и выносливость, изящность и техничность.
Фрирайд (FR) Понятие фрирайд многогранное – это может быть как спуск с горы по неизведанному маршруту, так и какой-нибудь норт-шор, возведенный в лесу неподалеку, или пятиметровый дроп, а, может, и техничная съезжалка в парке. Современный байк для FR – это тяжелый двухподвес с ходом передней и задней подвесок в 150 – 200 миллиметров. Все, что Вы можете себе позволить на байке – это фрирайд. И для каждого он свой.
Запчасти. Каждый велосипед, как конструктор, состоит из большого числа деталей. Детали (запчасти) разделены на несколько видов (типов).
Амортизаторы. Состоят из передних амортизаторов (Marzocchi, RockShox), задних амортизаторов и запасных частей к амортизаторам
Колеса. Состоят из втулки, обода, покрышки, камеры, спицы и запасные части для колес.
Привод. Состоит из звезды, каретки, кассеты, манетки, переключателя, успокоителя, цепи, шатунов.
Рамы.
Тормоза. Делятся на дисковые тормоза, ободные тормоза и запчасти к ним.
Управление. Вынос, педали, подседельный штырь, седло, рулевая, руль, грипсы.
Так же в магазине представлена велоодежда и защита. Велообувь, защита, одежда, перчатки, шлемы и маски.
В базе необходимо хранить информацию о:
Персоналии магазина:
ФИО
№ телефона
Дата рождения
Профессия
Адрес
Пол
О фирмах производителях и поставщиках:
Название
Адрес
Телефон
О товарах:
Название
Тех характеристики
Свойства
Тип товара
Информация о движении товара:
Тип операции
Цена
Дата
Кол-во
Структура базы данных
Персонал
Название (в базе) | Название (перевод) | Описание |
Код
ФИО № телефона Дата рождения Адрес Пол Код профессии | KOD
FIO TELEFON BIRTHSDAY ADRES POL KOD_PROFESSII | Уникальный индентификатор работника Фамилия, Имя, Отчество |
№ телефона
Дата рождения
Адрес
Пол
Код профессии в таблице Professii
Склад
Название (в базе) | Название (перевод) | Описание |
Код товара Код фирмы Код персон Код типа операции
Цена Дата Кол-во
| KOD_TOVARA KOD_FIRMI KOD_PERSON KOD_TIPA_OPERAZII
ZENA DATA KOLICHESTVO | Код товара в таблице Tovar Код фирмы в таблице Firmi Код персоны в таблице Personal Код типа операции в таблице Tipi_operazii Закупочная цена Дата Количество товара участвующего в операции |
Товар
Название (в базе) | Название (перевод) | Описание |
Код
Код типа товара Название | KOD
KOD_TIPA_TOVARA NAZVANIE | Уникальный индентификатор товара Код товара в таблице Tipi_tovarov Название товара |
Типы товаров
Название (в базе) | Название (перевод) | Описание |
Код
Название Код фирмы
Код типа товара
| KOD
NAZVANIE KOD_FIRMI
KOD_TIPA_TOVARA | Уникальный индентификатор типа товара Название типа товара Код фирмы производителя в таблице Firmi Код родительского типа товаров в таблице Tipi_tovarov |
Фирмы
Название (в базе) | Название (перевод) | Описание |
Код
Название Адрес Телефон Код типа фирмы
| KOD
NAZVANIE ADRES TELEFON KOD_TIPA_FIRMI | Уникальный индентификатор типа фирмы Название фирмы Адрес Телефон Код типа фирмы в таблице Tipi_firm |
Технические характеристики
Название (в базе) | Название (перевод) | Описание |
Код товара Код свойства Значение | KOD_TOVARA KOD_SVOISTVA ZNACHENIE | Код товара в таблице Tovar Код свойства в таблице Svoistva Значение характеристики |
Свойства
Название (в базе)
123 – Primary key (первичный ключ) 123 – Foreign key (связь) 123 – Uniqe (уникальный)
create table Professii (KOD NUMBER(5) PRIMARY KEY, NAZVANIE VARCHAR2(30) UNIQUE ); create table 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), FOREIGN KEY KOD_PROFESSII REFERENCES PROFESSII KOD ); create table Svoistva (KOD NUMBER(5) PRIMARY KEY, NAZVANIE VARCHAR2(30), EDINIZI IZMERENIA VARCHAR2(10) ); create table Texnicheskie_xarakteristiki ( KOD_TOVARA NUMBER(5), KOD_SVOISTVA NUMBER(5), ZNACHENIE NUMBER(5), FOREIGN KEY KOD_TOVARA REFERENCES TOVARI KOD, FOREIGN KEY KOD_SVOISTVA REFERENCES SVOISTVA KOD ); create table Tipi_firm (KOD NUMBER(5) PRIMARY KEY, NAZVANIE VARCHAR2(30) UNIQUE ); create table Tipi_operazii (KOD NUMBER(5) PRIMARY KEY, NAZVANIE VARCHAR2(30) UNIQUE ); create table Firmi (KOD NUMBER(5) PRIMARY KEY, NAZVANIE VARCHAR2(30) UNIQUE, ADRES VARCHAR2(30), TELEFON VARCHAR2(15), KOD_TIPA_FIRMI NUMBER(5), FOREIGN KEY KOD_TIPA_FIRMI REFERENCES TIPI_FIRM KOD ); create table Tipi_tovarov (KOD NUMBER(5) PRIMARY KEY, NAZVANIE VARCHAR2(30) UNIQUE, KOD_FIRMI NUMBER(5), KOD_TIPA_TOVARA NUMBER(5), FOREIGN KEY KOD_FIRMI REFERENCES FIRMI KOD, FOREIGN KEY KOD_TIPA_TOVARA REFERENCES TIPI_TOVAROV KOD ); create table Tovari (KOD NUMBER(5) PRIMARY KEY, KOD_TIPA_TOVARA NUMBER(5), NAZVANIE VARCHAR2(30), UNIQUE (KOD_TIPA_TOVARA,NAZVANIE), FOREIGN KEY KOD_TIPA_TOVARA REFERENCES TIPI_TOVAROV KOD ); create table 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), FOREIGN KEY KOD_TOVARA REFERENCES TOVARI KOD, FOREIGN KEY KOD_FIRMI REFERENCES FIRMI KOD, FOREIGN KEY KOD_PERSON REFERENCES PERSONAL KOD, FOREIGN KEY KOD_TIPA_OPERAZII REFERENCES TIPI_OPERAZII KOD );
CREATE SEQUENCE "SEQPERSONAL" MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; CREATE SEQUENCE "SEQFIRMI" MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; CREATE SEQUENCE "SEQTIPI_TOVAROV" MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; CREATE SEQUENCE "SEQTOVARI" MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE;
CREATE OR REPLACE TRIGGER INSERT_IN_PERSONAL BEFORE INSERT ON PERSONAL FOR EACH ROW BEGIN SELECT SEQPERSONAL.NEXTVAL INTO :new.KOD FROM DUAL; END; / CREATE OR REPLACE TRIGGER INSERT_IN_FIRMI BEFORE INSERT ON FIRMI FOR EACH ROW BEGIN SELECT SEQFIRMI.NEXTVAL INTO :new.KOD FROM DUAL; END; / CREATE OR REPLACE TRIGGER INSERT_IN_TIPI_TOVAROV BEFORE INSERT ON TIPI_TOVAROV FOR EACH ROW BEGIN SELECT SEQTIPI_TOVAROV.NEXTVAL INTO :new.KOD FROM DUAL; END; / CREATE OR REPLACE TRIGGER INSERT_IN_TOVARI BEFORE INSERT ON TOVARI FOR EACH ROW BEGIN SELECT SEQTOVARI.NEXTVAL INTO :new.KOD FROM DUAL; END; /
CREATE OR REPLACE FUNCTION Updater (NUMTOVARA Number) IS Result Number BEGIN RETURN (SELECT SUM (KOLICHESTVO) FROM SKLAD WHERE KOD_TOVARA= NUMTOVARA AND KODTIPAOPERAZII=1)- (SELECT SUM (KOLICHESTVO) FROM SKLAD WHERE KOD_TOVARA= NUMTOVARA AND KODTIPAOPERAZII =2) END
INSERT INTO PROFESSII (KOD,NAZVANIE) VALUES (1,'ПРОДАВЕЦ'); INSERT INTO PROFESSII (KOD,NAZVANIE) VALUES (2,'КАССИР'); INSERT INTO PROFESSII (KOD,NAZVANIE) VALUES (3,'МЕНЕДЖЕР'); INSERT INTO PROFESSII (KOD,NAZVANIE) VALUES (4,'ДИРЕКТОР'); INSERT INTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES ('КУПРИЯНОВ АНДРЕЙ МИХАЙЛОВИЧ','88127567432','СПб КИРОВА 37 16',SYSDATE,1,1); INSERT INTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES ('КОВАЛЕВ ИЛЬЯ СЕРГЕЕВИЧ','88128567432','СПб МАРАТА 38 14',SYSDATE,1,2); INSERT INTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES ('ПОЛЫВЯННЫЙ АРТЕМ ВИКТОРОВИЧ','88128967432','СПб МИРА 5 12',SYSDATE,1,3); INSERT INTO PERSONAL (FIO,TELEFON,ADRES,BIRTHDAY,POL,KOD_PROFESSII) VALUES ('ПОЛЫВЯННАЯ ДАРЬЯ ВИКТОРОВНА','88127417432','СПб МИРА 5 12',SYSDATE,2,4); INSERT INTO SVOISTVA (KOD,NAZVANIE,EDINIZI_IZMERENIA) VALUES (1,'РАЗМЕР ОБУВИ','РАЗМЕР'); INSERT INTO SVOISTVA (KOD,NAZVANIE,EDINIZI_IZMERENIA) VALUES (2,'РАЗМЕР РАМЫ','ДЮЙМЫ'); INSERT INTO SVOISTVA (KOD,NAZVANIE,EDINIZI_IZMERENIA) VALUES (3,'КОЛ-ВО ЗВЕНЬЕВ','ЗВЕНЬЯ'); INSERT INTO TIPI_FIRM (KOD,NAZVANIE) VALUES (1,'ПОСТАВЩИК'); INSERT INTO TIPI_FIRM (KOD,NAZVANIE) VALUES (2,'ПРОИЗВОДИТЕЛЬ'); INSERT INTO TIPI_OPERAZII (KOD,NAZVANIE) VALUES (1,'ПРИХОД'); INSERT INTO TIPI_OPERAZII (KOD,NAZVANIE) VALUES (2,'РАСХОД'); INSERT INTO FIRMI (NAZVANIE,ADRES,TELEFON,KOD_TIPA_FIRMI) VALUES ('SRAM','МОСКВА ТУШИНСКИЙ 40','84956543211',2); INSERT INTO FIRMI (NAZVANIE,ADRES,TELEFON,KOD_TIPA_FIRMI) VALUES ('ВЕЛОМИР','МОСКВА ТВЕРСКОЙ ПРОСПЕКТ 14','84954567213',1); INSERT INTO FIRMI (NAZVANIE,ADRES,TELEFON,KOD_TIPA_FIRMI) VALUES ('СПОРТАКАДЕМИЯ','МОСКВА ЛЕНИНА 65','84952345764',1); INSERT INTO TIPI_TOVAROV (NAZVANIE,KOD_FIRMI,KOD_TIPA_TOVARA) VALUES ('КАССЕТА',00001,1); INSERT INTO TIPI_TOVAROV (NAZVANIE,KOD_FIRMI,KOD_TIPA_TOVARA) VALUES ('МАНЕТКА',00001,2); INSERT INTO TIPI_TOVAROV (NAZVANIE,KOD_FIRMI,KOD_TIPA_TOVARA) VALUES ('ЦЕПЬ',00001,3); INSERT INTO TOVARI (NAZVANIE,KOD_TIPA_TOVARA) VALUES ('970DH',1); INSERT INTO TOVARI (NAZVANIE,KOD_TIPA_TOVARA) VALUES ('X9',2); INSERT INTO TOVARI (NAZVANIE,KOD_TIPA_TOVARA) VALUES ('990 HOLLOWPOINT',3); INSERT INTO SKLAD (KOD_TOVARA,KOD_FIRMI,KOD_PERSON,KOD_TIPA_OPERAZII,ZENA,DATA,KOLICHESTVO) VALUES (00001,00002,3,1,1800,SYSDATE,8); INSERT INTO SKLAD (KOD_TOVARA,KOD_FIRMI,KOD_PERSON,KOD_TIPA_OPERAZII,ZENA,DATA,KOLICHESTVO) VALUES (00002, ,1,2,1100,SYSDATE,1); INSERT INTO SKLAD (KOD_TOVARA,KOD_FIRMI,KOD_PERSON,KOD_TIPA_OPERAZII,ZENA,DATA,KOLICHESTVO) VALUES (00003,00001,3,1,800,SYSDATE,3); INSERT INTO TEXNICHESKIE_XARAKTERISTIKI (KOD_TOVARA,KOD_SVOISTVA,ZNACHENIE) VALUES (00001,3,112); INSERT INTO TEXNICHESKIE_XARAKTERISTIKI (KOD_TOVARA,KOD_SVOISTVA,ZNACHENIE) VALUES (00002,2,9); INSERT INTO TEXNICHESKIE_XARAKTERISTIKI (KOD_TOVARA,KOD_SVOISTVA,ZNACHENIE) VALUES (00003,1,11-32); Описание приложения
В приложении созданы три группы пользователей: «Покупатель», «Продавец» и «Менеджер по персоналу».
Пользователь «Покупатель» может просматривать товары, имеющиеся на складе. Изменения записей базы данных, данному пользователю запрещены. При выборе пользователя «продавец» появляется окно:
Пользователь должен выбрать себя из предложенного списка и нажать «Ок». Если он себя не нашел, то необходимо нажать «Back» и обратиться к менеджеру по персоналу.
После выбора своего имени из списка пользователю открывается его рабочее окно с двумя вкладками: продажа и приход товара. На вкладке «Продажа» продавец может продать товар двойным кликом мыши по наименованию товара. На вкладке «Приход товаров» продавец может добавить товар, выбрав его из списка и введя закупочную цену и количество. Если необходимый товар отсутствует в списке, его можно добавить, путем нажатия кнопки «Добавить Новый Товар». В появившемся окне необходимо ввести ВСЕ поля, иначе добавления товара не представляется возможным. Заполнив все поля и нажав кнопку «OK», пользователь внесет товар в базу данных. Для отмены действия добавления товара, пользователю необходимо нажать клавишу «Back», при этом он, пользователь, вернется в свое основное окно. Пользователь «Менеджер по персоналу» может просматривать информацию о работниках фирмы в своем основном окне. Также он может Нанимать новых работников, нажав кнопку «Нанять человека». В этом случае, ему, менеджеру, откроется окно добавления нового работника Только после заполнения ВСЕХ полей менеджер сможет добавить запись в базу данных. Если необходимой профессии не окажется в списке предлагаемых, ему необходимо будет добавить новую профессию в список уже существующих, путем нажатия кнопки «Новая профессия», затем ввода названии профессии и подтверждением ввода – нажатием клавиши «Ок».Если в результате ввода новой профессии, необходимость в ней, профессии отпадет, пользователю необходимо нажать кнопку «ВАСК».
2. Реферат Этика работы с клиентами гостиниц 3. Реферат на тему Those Winter Sundays Essay Research Paper Guilt 4. Реферат Хаос и порядок. Порядок и беспорядок в природе 5. Статья на тему Блатная песня terra incognita 6. Реферат на тему Как возникает нервный импульс 7. Реферат Формы стимулирования НИР в ВУЗе 8. Реферат Абрикосов, Григорий Андреевич 9. Реферат на тему Bartleby Essay Essay Research Paper Bartleby EssayDiscuss 10. Реферат на тему Искусство Римской империи 2 в нэ |