Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик «разработка Базы Данных Для Расчета Стоимости Заказа Предприятия» По Базам Данных (Марков А. А.).doc
Скачиваний:
35
Добавлен:
07.10.2014
Размер:
357.89 Кб
Скачать

13. Заключение

В результате выполнения курсовой работы была разработана реляционная база данных, реализуемая на СУРБД MySQL 5.1. База данных хранит информацию о заказах и клиентах полиграфического предприятия. Структура базы данных нормализована согласно 3 формы нормализации.

База данных протестирована на тестовых значениях. Результаты проверки представлены в отчете. База данных содержит 3 триггера, 1 хранимую процедуру, 2 функции и 2 пользовательских представления.

База данных удовлетворяет модели ANSI_SPARC.

14 . Список литературы

  • Базы данных: проектирование, реализация, сопровождение. Второе издание. Т. Коннели, К. Берг, 2005 г.

  • Системы баз данных. Г. Гарсия – Молина, 2003 г.

  • Методические указания по выполнению курсовой работы, Лазутченко О. В. 2007 г.

  • Практическое введение в базы данных, часть 1-3. А. А. Марков, Москва 2004 г.

15 . Приложение a.

Листинг 1. Исходный код создания таблиц.

drop database if exists exams_work;

create database exams_work character set 'utf8' collate 'utf8_general_ci';

use exams_work;

drop table if exists clients;

create table clients

(

name char(20) not null,

patronymic char(20) not null,

surname char(20) not null,

phone char(10) not null,

e_mail char(40) not null primary key,

password char(20) not null

);

drop table if exists publishing;

create table publishing

(

id int auto_increment primary key,

name char(20) not null,

city char(20) not null

);

drop table if exists orders;

create table orders

(

ID int unsigned not null auto_increment primary key,

cost float unsigned not null,

time float unsigned not null,

dateoforder date not null,

recordofmaked bool,

accept bool

);

drop table if exists product;

create table product

(

PID int unsigned auto_increment not null primary key,

type char(40) not null,

run int unsigned not null,

pages int not null,

format char(2) not null,

timeofmaking int unsigned not null,

priceofone float unsigned not null

);

drop table if exists sub2prod;

create table sub2prod

(

productID int unsigned not null,

type char(15) not null,

strength float unsigned not null,

primary key(type,strength,productID)

);

drop table if exists substrate;

create table substrate

(

type char(50) not null,

strength float unsigned not null,

price float unsigned not null,

primary key(type,strength)

);

drop table if exists plate2prod;

create table plate2prod

(

productID int unsigned not null,

type char(20) not null,

primary key(productID, type)

);

drop table if exists plate;

create table plate

(

type char(20) not null primary key,

timeofmaking float unsigned not null,

price float unsigned not null

);

drop table if exists stitching;

create table stitching

(

type char(20) not null primary key,

price float unsigned not null

);

drop table if exists stitch2prod;

create table stitch2prod

(

productID int unsigned not null primary key,

type char(20) not null

);

drop table if exists inks;

create table inks

(

color char(20) not null primary key,

price float unsigned not null,

on1kpages int unsigned not null,

varnishing float unsigned not null

);

drop table if exists ink2prod;

create table ink2prod

(

productID int unsigned not null,

color char(20) not null,

primary key(productID,color)

);

drop table if exists clts2pub;

create table clts2pub

(

e_mail char(40) not null,

ID int unsigned not null,

primary key (e_mail, ID)

);

drop table if exists clts2Ord;

create table clts2Ord

(

e_mail char(40) not null,

OID int unsigned not null,

primary key (e_mail, OID)

);

drop table if exists ord2prod;

create table ord2prod

(

OID int unsigned not null,

PID int unsigned not null,

primary key (OID,PID)

);

Листинг 2. Исходный код занесения данных

insert into inks values

("purple",0.96,190,0.6),

("yellow",0.96,300,0.6),

("blue",0.96,250,0.6),

("black",0.80,140,0.5),

("pantone",1.00,200,0.7);

insert into substrate values

("coated",90,0.070),

("coated",105,0.075),

("coated",115,0.080),

("coated",130,0.090),

("coated",150,0.095),

("stamping",100,0.11),

("stamping",200,0.12),

("glue",80,0.12),

("glossy",90,0.11),

("glossy",105,0.12),

("glossy",120,0.115),

("newspapers",35,0.025),

("newspapers",45,0.027),

("newspapers",65,0.029),

("design",80,0.11),

("design",90,0.115),

("design",105,0.12),

("design",115,0.125),

("design",120,0.13),

("design",130,0.135),

("design",140,0.14),

("design",150,0.145),

("offset",90,0.08),

("offset",105,0.085),

("offset",115,0.09);

insert into stitching values

("spring",80),

("glue",300),

("staple",10);

insert into plate values

("offset",0.3,360.0);

insert into orders values

(1,20000,48,"2010-01-22",1,1),

(2,25000,56,"2010-02-13",1,1),

(3,12000,24,"2010-03-12",1,0),

(4,50000,36,"2010-05-20",0,1),

(5,100000,120,"2010-05-25",0,1);

insert into product values

(1,"book",100,50,"A5",200),

(2,"book",200,30,"A5",125),

(3,"magazine",1000,10,"A4",12),

(4,"newspaper",5000,5,"A2",10),

(5,"book",10000,100,"A5",100);

insert into clients values

("Nemcev","Vladislav","Vladimirovich","9032769341","fetboy@mail.ru","fet"),

("Danilov","Alesander","Michailovich","9090120203","sanek@mail.ru","qwerty"),

("Danilov","Semen","Vladimirovich","9168812345","monster@mail.ru","asdfg"),

("Nemcev","Vladislav","Vladimirivich","1234567890","client@mail.ru","zxcvbn");

insert into publishing values

(1,"Buka","Moscow"),

(2,"Timer","London"),

(3,"Booker","Moscow");

insert into clts2pub values

("fetboy@mail.ru",1),

("sanek@mail.ru",2),

("monster@mail.ru",3),

("client@mail.ru",3);

insert into clts2Ord values

("fetboy@mail.ru",1),

("sanek@mail.ru",2),

("monster@mail.ru",3),

("monster@mail.ru",4),

("client@mail.ru",5);

insert into ord2prod values

(1,1),

(2,2),

(3,3),

(4,4),

(5,5);

insert into ink2prod values

(1,"black"),

(2,"black"),

(2,"purple"),

(3,"yellow"),

(3,"black"),

(3,"pantone"),

(4,"black"),

(5,"blue");

insert into sub2prod values

(1,"offset",90),

(2,"offset",105),

(3,"newspapers",45),

(4,"offset",90),

(5,"coated",105);

insert into stitch2prod values

(1,"glue"),

(2,"glue"),

(3,"staple"),

(4,"staple"),

(5,"glue");

insert into plate2prod values

(1,"offset"),

(2,"offset"),

(3,"offset"),

(4,"offset"),

(5,"offset");

Листинг 3. Исходный код запросов.

SELECT e_mail, ID, cost, time, recordofmaked

FROM clts2Ord JOIN orders ON ID=OID

WHERE e_mail="client@mail.ru";

SELECT *

FROM orders

WHERE accept=1

GROUP BY dataoforder;

SELECT ID, cost, time, dateoforder, product.type, run, pages, format, sub2prod.type, strength, stitch2prod.type

FROM orders

JOIN product ON PID= (SELECT PID FROM ord2prod WHERE OID=2)

JOIN sub2prod ON sub2prod.productID= (SELECT PID FROM ord2prod WHERE OID=2)

JOIN stitch2prod ON stitch2prod.productID= (SELECT PID FROM ord2prod WHERE OID=2)

WHERE ID=2;

SELECT color

FROM ink2prod

WHERE productID=(SELECT PID FROM ord2prod WHERE OID=3);

SELECT *

FROM clients

JOIN publishing ON ID=(SELECT ID FROM clts2pub WHERE clts2pub.e_mail=clients.e_mail)

WHERE e_mail="client@mail.ru";

UPDATE stitching

SET price=305

WHERE type="glue";

DELETE FROM substrate WHERE type='design' AND strength=140;

UPDATE inks

SET on1kpages=290

WHERE color='yellow';

DELETE FROM orders WHERE accept=0;

Листинг 4. Исходные коды представлений

CREATE VIEW FullOrder AS

SELECT ID, ord2prod.PID, product.type, run, pages, sub2prod.type AS paper, strength, stitch2prod.type AS stitching, cost, time

FROM orders, product, ord2prod, sub2prod, stitch2prod

WHERE ord2prod.OID=orders.ID AND sub2prod.productID=(SELECT PID FROM ord2prod WHERE ord2prod.OID=orders.ID)

AND stitch2prod.productID=(SELECT PID FROM ord2prod WHERE ord2prod.OID=orders.ID)

AND ord2prod.PID=product.PID;

CREATE VIEW inkOrder AS

SELECT ID, PID, color, varnishing cost, time

FROM orders, ord2prod, ink2prod, inks

WHERE ink2prod.productID=ord2prod.PID AND OID=ID AND ink2prod.color=inks.color

GROUP BY ID;

Листинг 5. Исходные коды хранимых процедур и функций

DELIMITER |

create function qtyOrder()

returns int

begin

DECLARE qty int;

SELECT count(ID) INTO qty FROM orders WHERE accept=1;

RETURN qty;

end

|

DELIMITER;

DELIMITER |

CREATE FUNCTION profit()

RETURNS real

BEGIN

DECLARE prof real;

SELECT sum(cost) INTO prof FROM orders WHERE accept=1;

RETURN prof;

END

|

DELIMITER;

DELIMITER |

CREATE PROCEDURE paper()

BEGIN SELECT *

FROM substrate

WHERE 1;

END;

|

DELIMITER;

Листинг 6. Исходный код создания триггеров.

DELIMITER |

create trigger delorder AFTER DELETE

ON orders

FOR EACH ROW

BEGIN

DElETE FROM ink2prod WHERE ink2prod.productID=(SELECT PID FROM ord2prod WHERE OID=old.ID);

DELETE FROM sub2prod WHERE sub2prod.productID=(SELECT PID FROM ord2prod WHERE OID=old.ID);

DELETE FROM stitch2prod WHERE stitch2prod.productID=(SELECT PID FROM ord2prod WHERE OID=old.ID);

DELETE FROM plate2prod WHERE plate2prod.productID=(SELECT PID FROM ord2prod WHERE OID=old.ID);

DELETE FROM product WHERE product.PID=(SELECT PID FROM ord2prod WHERE OID=old.ID);

DELETE FROM ord2prod WHERE OID=old.ID;

END

|

DELIMITER;

delimiter |

CREATE TRIGGER delclient AFTER DELETE

ON clients

FOR EACH ROW BEGIN

DELETE FROM clts2pub WHERE e_mail=old.e_mail;

END

|

delimiter;

delimiter |

CREATE TRIGGER clntord BEFORE DELETE

ON clients

FOR EACH ROW BEGIN

DELETE FROM orders WHERE ID=(SELECT OID FROM clts2Ord WHERE e_mail=old.e_mail);

DELETE FROM clts2Ord WHERE e_mail=old.e_mail;

END

|

delimiter;