Автор работы: Пользователь скрыл имя, 19 Октября 2013 в 10:50, курсовая работа
В современной жизни, системы обработки информации являются одной из важных категорий, от которых во многом зависит эффективность работы любого учреждения или предприятия. Целью таких систем является управление базами данных, то есть умение справляться со следующими задачами:
1. Обеспечение получения информации, без существенных задержек.
2. Определение тенденции изменения важнейших показателей.
3. Выполнение точного и полного анализа данных.
4. Обеспечение получения общих отчетов по итогам работы.
Введение...................................................................................................................4
1 Задание на разработку..........................................................................................5
2 Анализ предметной области..................... ..........................................................7
3 Разработка схемы данных....................................................................................9
4 Ведение базы данных.........................................................................................14
5 Выбор информации из базы данных.................................................................17
Заключение.............................................................................................................22
Список используемых источников......................................................................23
IV. “Чеки” - “Товары”
Необходимо
хранить информацию о кассовых чеках
с указанием кассира
3. РАЗРАБОТКА СХЕМЫ ДАННЫХ
Схему реляционной базы данных изобразим в виде таблиц и связей между ними. При этом таблицы будут являться реализацией сущностей, а поля таблицы - свойствами сущностей.
Ввиду того, что между сущностями "Чеки" и "Товар" существует связь "многие-ко-многим", информация о заказчиках каждого проекта будет храниться в отдельной таблице.
Помимо этого, выделим из перечисленных в таблице 1 свойств такие, которые будут уникальным образом идентифицировать каждый экземпляр сущности (запись в таблице). С учетом выше изложенного схему данных исследуемой предметной области представим на рисунке 1.
Разработанная схема данных содержит семь таблиц и может быть реализована при помощи SQL. На этапе физического моделирования базы данных описываются типы данных для каждого вида хранимой информации, а также способы и место их физического размещения. При этом необходимо для каждого поля таблицы определить тип данных, который наиболее подходит для хранения соответствующей информации, какие поля не могут содержать пустые значения (NULL).
Типы integer not null, varchar(*) not null, numeric(*,*) not null означают, что поля могут быть длинными целыми числами, не содержащими NULL. Тип varchar(*) означает, что поля содержат строку символов переменной длины. Тип date означает, что поля содержат календарную дату. Тип money означает что поле содержит денежный тип данных.
Поля, выделенные на схеме данных ключом, будут являться первичными ключами (PRIMARY KEY) таблиц. Поля оканчивающиеся на “_id”, будут являться внешними ключами, и будут иметь связи с другими таблицами.
Рисунок 1 - Логическая схема реляционной базы данных.
1) Таблица TOVAR (Товары):
поля ID, GRUPPY_ID, ISGOTOVITEL_ID не могут содержать NULL;
поля ID, GRUPPY_ID, ISGOTOVITEL_ID содержат целые числа.
поля id являются первичным ключом, а GRUPPY_ID, ISGOTOVITEL_ID внешним ключом и имеют связь с другими таблицами.
С учетом перечисленных требований оператор SQL, создающий таблицу буде выглядеть следующим образом:
CREATE TABLE TOVAR
(ID COUNTER NOT NULL,
NAZV VARCHAR(32),
GRUPPY_ID INTEGER,
PRIMARY KEY (ID),
FOREIGN KEY (GRUPPY_ID) REFERENCES GRUPPY);
2) Таблица TIPY (Типы):
поле ID является обязательным для заполнения и первичным ключом.
поле NASV - строки переменной длины.
С учетом перечисленных требований оператор SQL, создающий таблицу
выглядит следующим образом:
CREATE TABLE TIP
(ID INTEGER NOT NULL, NASV VARCHAR(20) NOT NULL,
PRIMARY KEY (ID));
3) Таблица GRUPPY (Группы)
поля ID, TIP_ID не могут содержать NULL;
поля ID, TIP_ID содержат целые числа.
поля ID являются первичным ключом, а TIP_ID внешним ключом и имеет связь с другими таблицами.
С учетом перечисленных требований оператор SQL, создающий таблицу буде выглядеть следующим образом:
CREATE TABLE GRUPPY
(ID COUNTER NOT NULL,
NAZV VARCHAR(32),
TIP_ID INTEGER,
PRIMARY KEY (ID),
FOREIGN KEY (TIP_ID) REFERENCES TIPY);
4) Таблица ISGTOVITEL ( Изготовитель)
поле ID является обязательным для заполнения и первичным ключом.
поле NASV, ADRESS - строки переменной длины.
С учетом перечисленных требований оператор SQL, создающий таблицу выглядит следующим образом:
CREATE TABLE ISGOTOVITEL
(ID COUNTER NOT NULL,
NAZV VARCHAR(20),
ADRESS VARCHAR(35),
PRIMARY KEY (ID));
5) Таблица KASSIR (Кассир)
поле ID является обязательным для заполнения и первичным ключом.
поле FIO - строки переменной длины.
С учетом перечисленных требований оператор SQL, создающий таблицу
выглядит следующим образом:
CREATE TABLE KASSIR
(ID COUNTER NOT NULL,
FIO VARCHAR(32),
PRIMARY KEY (ID));
6) Таблица CHEKI (Чеки)
поля ID, KASSIR_ID не могут содержать NULL;
поля ID, KASSIR_ID, NOMER содержат целые числа.
поля ID являются первичным ключом, а KASSIR_ID внешним ключом и имеет связь с другими таблицами.
строка DATE имеет тип данных -календарные даты DATE.
строка SUMMA имеет денежный тип MONEY.
С учетом перечисленных требований оператор SQL, создающий таблицу буде выглядеть следующим образом:
CREATE TABLE CHEKI
(ID COUNTER NOT NULL,
NOMER INTEGER,
KASSIR_ID INTEGER
DATA DATE,
SUMMA MONEY,
PRIMARY KEY (ID),
FOREIGN KEY (KASSIR _ID) REFERENCES KASSIR);
7) Таблица 7 CH_TOV (Чеки-Товары)
поля ID, CHECK_ID, TOVAR_ID не могут содержать NULL;
поля ID, CHECK_ID, TOVAR_ID, KOLICH содержат целые числа.
поля ID являются первичным ключом, а CHECK_ID, TOVAR_ID внешним ключом и имеют связь с другими таблицами.
С учетом перечисленных требований оператор SQL, создающий таблицу буде выглядеть следующим образом:
CREATE TABLE CH_TOV
( CHECK_ID INTEGER,
TOVAR_ID INTEGER,
KOLICH INTEGER,
PRIMARY KEY (ID),
FOREIGN KEY (CHECK_ID) REFERENCES CHEKI,
FOREIGN KEY (TOVAR_ID) REFERENCES TOVAR);
4. ВЕДЕНИЕ БАЗЫ ДАННЫХ
Для использования созданной в предыдущем разделе структуры базы данных разработаем соответствующие операторы SQL, при помощи которых будет осуществляться ведение базы данных.
Добавление
новых записей в таблицы
1) Таблица TOVAR (Товары):
добавление новой записи
INSERT INTO TOVAR (ID, NAZV, GRUPPY_ID, PRICE)
VALUES (1, "кефир", 3, "57" )
удаление существующей записи
DELETE
FROM TOVAR
WHERE ID=1;
изменение существующей записи
UPDATE TOVAR
SET PRICE=PRICE*1.25
2) Таблица TIPY (Типы):
добавление новой записи
INSERT INTO TIPY (ID, NASV) (10, “Промышленный”);
удаление существующей записи
DELETE
FROM TIPY
WHERE ID=10;
изменение существующей записи
UPDATE TIPY NASV=”Продуктовый” ID=11;
3) Таблица GRUPPY (Группы)
добавление новой записи
INSERT INTO GRUPPY (ID, NASV, TIP_ID) (5,"Одежда",7);
удаление существующей записи
DELETE
FROM GRUPPY
WHERE ID=5;
- изменение существующей записи
UPDATE GRUPPY
SET ID=3, NASV="Ткани";
4) Таблица ISGTOVITEL ( Изготовитель)
добавление новой записи
INSERT INTO ISGTOVITEL (ID, NASV,ADRESS) (7, “ОАО фирма Молоко”, " 396650, Воронежская область, г. Россошь, ул. Л. Толстого, 53");
удаление существующей записи
DELETE
FROM ISGTOVITEL
WHERE ID=7;
изменение существующей записи
UPDATE ISGTOVITEL
SET NASV="ОАО Молвест", "394016, г. Воронеж, ул. 45 Стрелковой дивизии, 259"
WHERE ID=7;
5) Таблица KASSIR (Кассир)
добавление новой записи
INSERT INTO KASSIR (ID, FIO) (2, "Воеводкина Мария Петровна");
удаление существующей записи
DELETE
FROM KASSIR
WHERE ID=3;
изменение существующей записи
UPDATE KASSIR
SET ID=4, FIO=" Меньшикова Светлана Вячеславовна ";
6) Таблица CHEKI (Чеки)
добавление новой записи
INSERT INTO CHEKI (ID, NOMER, DATA, SUMMA, KASSIR_ID) (1, "101010", "06.03.2013", "1 500", 4);
удаление существующей записи
DELETE
FROM CHEKI
WHERE KASSIR_ID=3;
- изменение существующей записи
UPDATE CHEKI
SET SUMMA=SUMMA*0.95
7) Таблица 7 CH_TOV (Чеки-Товары)
добавление новой записи
INSERT INTO CH_TOV (CHECK_ID, TOVAR_ID, KOLICH) ( 1, 3, "20");
- удаление существующей записи
DELETE
FROM CH_TOV
WHERE CHECK_ID=3, TOVAR_ID=4;
- изменение существующей записи
UPDATE CH_TOV
SET CHECK_ID=6, TOVAR_ID=1, KOLICH="5";
5 ВЫБОР ИНФОРМАЦИИ ИЗ БАЗЫ ДАННЫХ
Для выбора информации из базы данных используется оператор SELECT.
1) Вывести список товаров по убыванию их стоимости.
SELECT TOVAR.ID, NASV, PRICE
FROM TOVAR
ORDER BY PRICE DESC;
2) Вывести список чеков с суммой больше 10000.
SELECT ID, NOMER, SUMMA
FROM CHEKI
WHERE SUMMA>10000;
3) Вывести
номера чеков, для которых не
указано хотя бы одно
SELECT ID, NOMER
FROM CH_TOV
WHERE KOLICH IS NULL;
4) Вывести
список изготовителей,
SELECT NASV
FROM ISGOTOVITEL
WHERE NASV Like "*ОАО*";
5) Вывести список
товаров с указанием групп
товаров. Отсортировать по
SELECT T.NASV, G.NASV
FROM TOVAR AS T, GRUPPY AS G
WHERE GRUPPY_ID=G.ID
ORDER BY T.NASV, G.NASV;
6) Вывести список
изготовителей, производящих
SELECT I.NASV, T.NASV, T.PRICE
FROM TOVAR AS T, ISGOTOVITEL AS I
WHERE (T.ISGOTOVITEL_ID=I.ID) And PRICE>10000
ORDER BY I.ISGOTOVITEL;
7) Вывести группы товаров, которые имеются в наличии на складе.
SELECT T.NASV, G.NASV, T.KOLICHESTVO
FROM TOVAR AS T, GRUPPY AS G
WHERE (T.GRUPPY_ID=G.ID) AND KOLICHESTVO is NULL
ORDER BY G.NASV;
8) Вывести типы
товаров, выпускаемые
SELECT TI.ID, TI.NASV, TO.NASV, I.NASV
FROM ISGOTOVITEL AS I, TOVAR AS [TO], TIP AS TI, GRUPPY AS G
WHERE (TO.ISGOTOVITEL_ID=I.ID) And (TO.GRUPPY_ID=G.ID) And (G.TIP_ID=TI.ID) And I.NASV='ООО Доктор Редди';
9)Вычислить минимальную, среднюю и максимальную суммы продаж по чекам.
SELECT MIN(SUMMA), MAX(SUMMA), AVG(SUMMA)
FROM CHEKI;
10) Вывести сумму продаж для каждого кассира.
SELECT C.SUMMA, K.FIO, COUNT(*)
FROM KASSIR AS K, CHEKI AS C
WHERE (C.KASSIR_ID=K.ID)
GROUP BY C.SUMMA, K.FIO;
11)Вывести количество товаров каждого типа, имеющихся на складе.
SELECT T.NASV, TO.KOLICHESTVO, TO.NASV, COUNT(TO.KOLICHESTVO) AS KOL_GR
FROM TOVAR AS TO, GRUPPY AS G, TIP AS T
WHERE (TO.GRUPPY_ID=G.ID) and (G.TIP_ID=T.ID)
GROUP BY TO.KOLICHESTVO, T.NASV, TO.NASV;
12)Вывести группы
товаров, общее количество
SELECT G.NASV, SUM(KOLICH) AS KOL
FROM GRUPPY AS G, CH_TOV AS CT, TOVAR AS T
WHERE (T.GRUPPY_ID=G.ID) AND (CT.TOVAR_ID=T.ID)
GROUP BY G.NASV
HAVING (SUM(KOLICH)>100);
13) Вывести группы
товаров, средняя стоимость
Для выполнения задания будем использовать два запроса: запрос SELECT и запрос having с подзапросом select. Для выведения информации об группе товара будем использовать предложение SELECT, FROM , WHERE и две таблицы GRUPPY и TOVAR. В предложение WHERE создадим связь между этими таблицами. Через предложение group by осуществим группировку строк по группам. Для того что бы вывести информацию об группе, средняя стоимость товаров в которых превышает среднюю стоимость, вычисленную по всем товарам нужно в предложении HAVING сделать подсчет строк товаров и с подзапросом вычислить среднюю стоимость товаров. С учетом положений оператора SQL будет выглядеть следующим образом:
SELECT G.NASV, AVG(T.PRICE) AS CENA
FROM GRUPPY AS G, TOVAR AS T
WHERE (((T.GRUPPY_ID)=[G].[ID]))
GROUP BY G.NASV
HAVING (AVG(T.PRICE))>(SELECT AVG(PRICE) AS CENA
FROM TOVAR);
14) Вывести список кассиров с нулевой суммой продаж.
Для выполнения задания будем использовать два запроса: запрос SELECT и запрос having с подзапросом select. Для выведения информации об группе товара будем использовать предложение SELECT, FROM, WHERE и две таблицы KASSIR и CHEKI. В предложение WHERE создадим связь между этими таблицами. Через предложение group by осуществим группировку
строк по фио кассиров. Для того что бы вывести список кассиров с нулевой суммой продаж нужно в предложении HAVING сделать подсчет строк кассиров и с подзапросом вычислить минимальную сумму продаж товаров. С учетом положений оператора SQL будет выглядеть следующим образом:
SELECT K.FIO, MIN(SUMMA)
FROM KASSIR AS K, CHEKI AS C
WHERE C.KASSIR_ID=K.ID
GROUP BY K.ID, K.FIO
HAVING (MIN(SUMMA))=(SELECT MIN(SUMMA)
FROM CHEKI );
15) Вывести номера
и даты чеков, сумма которых
не совпадает с суммарной
Для выполнения задания будем использовать два запроса: запрос SELECT и запрос having с подзапросом select. Для выведения информации об группе товара будем использовать предложение SELECT, FROM , WHERE и две таблицы CHEKI и CH_TOV. В предложение WHERE создадим связь между этими таблицами. Через предложение group by осуществим группировку строк по номерам чеков. Для того что бы вывести номера и даты чеков, сумма которых не совпадает с суммарной стоимостью товаров, указанных в чеке нужно в предложении HAVING сделать подсчет строк номеров и с подзапросом вычислить сумму товаров в чеке. С учетом положений оператора SQL будет выглядеть следующим образом:
SELECT C.NOMER, C.DATA, Sum(C.SUMMA) AS [SUM]
FROM CHEKI AS C, CH_TOV AS CT
WHERE (((CT.CHECK_ID)=[C].[ID]))
GROUP BY C.NOMER, C.DATA, C.ID
HAVING (((Sum(C.[SUMMA]))<>(SELECT SUM(SUMMA) FROM CHEKI)));
16) Вывести список изготовителей, товары которых были проданы на наибольшую сумму.
Для выполнения задания будем использовать два запроса: запрос SELECT и запрос having с подзапросом select. Для выведения информации об группе товара будем использовать предложение SELECT, FROM , WHERE и три таблицы ISGOTOVITEL, TOVAR и CH_TOV. В предложение WHERE создадим связь между этими таблицами. Через предложение group by осуществим группировку строк по изготовителям. Для того что бы вывести список изготовителей, товары которых были проданы на наибольшую сумму нужно в предложении HAVING сделать подсчет строк изготовителей и с подзапросом вычислить максимальную сумму товаров. С учетом положений оператора SQL будет выглядеть следующим образом:
SELECT I.NASV, MX(C.SUMMA) AS [MAX-SUMMA]
FROM ISGOTOVITEL AS I, TOVAR AS T, CH_TOV AS CT, CHEKI AS C
WHERE (((CT.CHECK_ID)=[C].[ID]) AND ((CT.TOVAR_ID)=[T].[ID]) AND ((T.ISGOTOVITEL_ID)=[I].[ID]))
GROUP BY I.NASV, I.ID
HAVING (((MAX(C.[SUMMA]))=(SELECT MAX(SUMMA)
FROM CHEKI )));
ЗАКЛЮЧЕНИЕ
Эффективное развитие государства немыслимо без систем управления. Современные системы управления базируются на современных информационных технологиях, на комплексных системах обработки информации.
Современные
системы компьютерного
1. Определение тенденций изменения важных показателей;
2. Получение информации во времени без задержек;
3. Выполнение точного и полного анализа данных.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Роланд Фред. Основные концепции баз данных. Вильямс. 2002
2. Ульман Дж., Уидом Дж. Введение в системы баз данных. М. Лори. 2000.
3. Федоров Д., Елманова Н. Базы данных для всех. М. Компьютер-пресс, 2001.