Skip to content

Commit

Permalink
Fix first and second queries
Browse files Browse the repository at this point in the history
  • Loading branch information
olerom committed Jun 17, 2017
1 parent dda3d80 commit e5696ca
Show file tree
Hide file tree
Showing 12 changed files with 124 additions and 30 deletions.
42 changes: 30 additions & 12 deletions report/main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ \subsection{Сущности, их харрактеристики и связи}

{\bf COLUMN\_NAME} & {\bf Примечание} \\ \hline
Ответственность & То, чем руководит руководитель: участок, мастер или же цех \\ \hline
Код\_ответств & Альтернативный ключ, который используется для связи с цехом, участком и бригадой. Так нельзя будет добавить представителя ИТП сразу начальником и цеха, и участка (6). \\ \hline
Код\_ответств & Альтернативный ключ, который используется для связи с цехом, участком и бригадой. Так нельзя будет добавить представителя ИТП сразу начальником и цеха, и участка (6). Состоит из: Ответственность и Код\_сотрудника \\ \hline
\end{tabular}

Связана с \underline{Бригада} связью один-ко-многим, так как каждый мастер иожет координировать работу нескольких бригад.
Expand Down Expand Up @@ -435,7 +435,6 @@ \subsection{Сущности, их харрактеристики и связи}
В одном \underline{цеху} может быть несколько \underline{участков}, что и реализовано с помощью связи один-ко-многим между соответствующими сущностями.
У \underline{участка} может быть один \underline{начальник (руководитель)}, что и реализовано с помощью связи один-к-одному между соответствующими сущностями.
На участке выполняется один вид работ: изготавливается определённая часть изделия (например, двигатель) либо производится сборка изделия в целом.

Поэтому \underline{Участок} соединен категориальной связью с \underline{Изготовительный\_участок}.

\begin{tabular}{|p{7cm}|p{9.3cm}|} \hline
Expand Down Expand Up @@ -618,8 +617,11 @@ \subsection{Сущности, их харрактеристики и связи}

\end{tabular}

\underline{Работу} по сборке конкретной категории изделия на определенном участке выполняет одна \underline{бригада} рабочих, что и реализован с помощью связи один-ко-многим между соответсвующими сущностями.
Так, известно, что конкретная бригада собирает какую-то категорию на каком-то участке.
С каждой категорией изделия ассоциируется свой набор работ;
другими словами, каждая категория в процессе изготовления должна пройти определённый набор участков в цехе.

Одна \underline{бригада} рабочих работает на определенном участке с \underline{конкретной категорией изделия}, что и реализован с помощью связи один-ко-многим между соответсвующими сущностями.
Так, можно понять, на каких участках работает бригада (и с какими категориями изделий).

Каждая категория должна пройти определённый набор участков в цехе.
Так, имеются связи один-ко-многим между \underline{Работы} и \underline{Участок}, а также \underline{Работы} и \underline{Тип\_категории}.
Expand Down Expand Up @@ -874,16 +876,32 @@ \section{Реализация запросов к базе данных}
\item Перечень видов изделий по категории, собираемой указанным цехом.
В последней строке вывести общее число собираемых видов изделий.

\lstinputlisting[language=SQL]{../sources/queries/task1.sql}
Если вводят только цех через подстановочную переменную:

\lstinputlisting[language=SQL]{../sources/queries/task1a.sql}

\includegraphics[width=16cm]{./screenshots/results/result1a.png}

Если вводят цех и категорию через подстановочную переменную:

\includegraphics[width=16cm]{./screenshots/results/result1.png}
\lstinputlisting[language=SQL]{../sources/queries/task1b.sql}

\includegraphics[width=16cm]{./screenshots/results/result1b.png}

\item Количество экземпляров изделий каждого вида каждой категории, собранных предприятием за определенный отрезок времени.
В последней строке вывести общее число собранных изделий.

\lstinputlisting[language=SQL]{../sources/queries/task2.sql}
Если считать, что изделие собрано за отрезок времени: начало сборки больше начала отрезка и конец сборки меньше конца отрезка.

\lstinputlisting[language=SQL]{../sources/queries/task2a.sql}

\includegraphics[width=16cm]{./screenshots/results/result2a.png}

Если считать, что изделие собрано за отрезок времени: конца сборки больше начала отрезка и конец сборки меньше конца отрезка.

\includegraphics[width=16cm]{./screenshots/results/result2.png}
\lstinputlisting[language=SQL]{../sources/queries/task2b.sql}

\includegraphics[width=16cm]{./screenshots/results/result2b.png}

\item Данные о кадровом составе (ФИО, должность) по указанным категориям инженерно-технического персонала и рабочих;

Expand Down Expand Up @@ -951,17 +969,17 @@ \section{Создание представления}

\section{Приложение 1}

{\bf Логическая модель.}
{\bf Физическая модель.}

\includegraphics[width=16cm]{./screenshots/model/logical.png}
\includegraphics[width=16cm]{./screenshots/model/physical.png}

\newpage

\section{Приложение 2}

{\bf Физическая модель.}
{\bf Логическая модель.}

\includegraphics[width=16cm]{./screenshots/model/physical.png}
\includegraphics[width=16cm]{./screenshots/model/logical.png}

\newpage

Expand Down
Binary file modified report/screenshots/model/reverse.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file added report/screenshots/results/result1b.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file added report/screenshots/results/result2b.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified report/screenshots/results/result4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 1 addition & 3 deletions sources/queries/task1.sql → sources/queries/task1a.sql
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ SELECT
FROM CWКАТЕГОРИЯ_ИЗДЕЛИЯ k
INNER JOIN CWВИД_ИЗДЕЛИЯ v
ON v.ТИП_КАТЕГОРИИ = k.ТИП_КАТЕГОРИИ
WHERE k.ТИП_КАТЕГОРИИ = ANY (SELECT t.ТИП_КАТЕГОРИИ
FROM CWКАТЕГОРИЯ_ИЗДЕЛИЯ t
WHERE t.НОМЕР_ЦЕХА = '&manufactory')
WHERE k.НОМЕР_ЦЕХА = '&manufactory'
UNION ALL
SELECT
'Всего видов изделий на указанном цеху: ' || COUNT(*),
Expand Down
29 changes: 29 additions & 0 deletions sources/queries/task1b.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
DEFINE manufactory='П321';
DEFINE cat = 'Мотоциклы';

SELECT
v.НАЗВАНИЕ_ВИДА_ИЗДЕЛИЯ
FROM CWКАТЕГОРИЯ_ИЗДЕЛИЯ k
INNER JOIN CWВИД_ИЗДЕЛИЯ v
ON v.ТИП_КАТЕГОРИИ = k.ТИП_КАТЕГОРИИ
WHERE k.НОМЕР_ЦЕХА = '&manufactory' AND k.ТИП_КАТЕГОРИИ = '&cat'
UNION ALL
SELECT
'Всего видов изделий на указанном цеху с указанной категорией: ' || COUNT(*)
FROM CWВИД_ИЗДЕЛИЯ v
INNER JOIN CWКАТЕГОРИЯ_ИЗДЕЛИЯ k
ON v.ТИП_КАТЕГОРИИ = k.ТИП_КАТЕГОРИИ
WHERE k.НОМЕР_ЦЕХА = '&manufactory' AND k.ТИП_КАТЕГОРИИ = '&cat'
UNION ALL
SELECT
'Всего видов изделий на указанном цеху: ' || COUNT(*)
FROM CWВИД_ИЗДЕЛИЯ v
INNER JOIN CWКАТЕГОРИЯ_ИЗДЕЛИЯ k
ON v.ТИП_КАТЕГОРИИ = k.ТИП_КАТЕГОРИИ
WHERE k.НОМЕР_ЦЕХА = '&manufactory'
UNION ALL
SELECT
'Всего видов изделий на предприятии: ' || COUNT(*)
FROM CWВИД_ИЗДЕЛИЯ v
INNER JOIN CWКАТЕГОРИЯ_ИЗДЕЛИЯ k
ON v.ТИП_КАТЕГОРИИ = k.ТИП_КАТЕГОРИИ;
File renamed without changes.
46 changes: 46 additions & 0 deletions sources/queries/task2b.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
DEFINE start_time = to_date('2010/07/22', 'yyyy/mm/dd');
DEFINE end_time = to_date('2038/07/22', 'yyyy/mm/dd');

SELECT
kt AS "Категори",
vn AS "Вид",
COUNT(*) AS "Кол-во"
FROM (
SELECT
k.ТИП_КАТЕГОРИИ kt,
v.НАЗВАНИЕ_ВИДА_ИЗДЕЛИЯ vn,
z.НОМЕР_ЭКЗЕМПЛЯРА ne
FROM CWКАТЕГОРИЯ_ИЗДЕЛИЯ k
INNER JOIN CWВИД_ИЗДЕЛИЯ v
ON v.ТИП_КАТЕГОРИИ = k.ТИП_КАТЕГОРИИ
INNER JOIN CWЭКЗЕМПЛЯР_ИЗДЕЛИЯ e
ON e.НОМЕР_ВИДА_ИЗДЕЛИЯ = v.НОМЕР_ВИДА_ИЗДЕЛИЯ
INNER JOIN CWЖУРНАЛ z
ON z.НОМЕР_ЭКЗЕМПЛЯРА = e.НОМЕР_ЭКЗЕМПЛЯРА
WHERE z.ЭТАП_ЖИЗНЕННОГО_ЦИКЛА = 'Сборка'
AND z.КОНЕЦ <= &end_time
AND z.КОНЕЦ >= &start_time
GROUP BY k.ТИП_КАТЕГОРИИ, v.НАЗВАНИЕ_ВИДА_ИЗДЕЛИЯ, z.НОМЕР_ЭКЗЕМПЛЯРА)
GROUP BY kt, vn
UNION ALL
SELECT
'Всего собрано ' || to_char(&start_time, 'dd.mm.yyyy') || '-' || to_char(&end_time
, 'dd.mm.yyyy'),
'',
COUNT(*)
FROM (
SELECT
k.ТИП_КАТЕГОРИИ kt,
v.НАЗВАНИЕ_ВИДА_ИЗДЕЛИЯ vn,
z.НОМЕР_ЭКЗЕМПЛЯРА ne
FROM CWКАТЕГОРИЯ_ИЗДЕЛИЯ k
INNER JOIN CWВИД_ИЗДЕЛИЯ v
ON v.ТИП_КАТЕГОРИИ = k.ТИП_КАТЕГОРИИ
INNER JOIN CWЭКЗЕМПЛЯР_ИЗДЕЛИЯ e
ON e.НОМЕР_ВИДА_ИЗДЕЛИЯ = v.НОМЕР_ВИДА_ИЗДЕЛИЯ
INNER JOIN CWЖУРНАЛ z
ON z.НОМЕР_ЭКЗЕМПЛЯРА = e.НОМЕР_ЭКЗЕМПЛЯРА
WHERE z.ЭТАП_ЖИЗНЕННОГО_ЦИКЛА = 'Сборка'
AND z.КОНЕЦ <= &end_time
AND z.КОНЕЦ >= &start_time
GROUP BY k.ТИП_КАТЕГОРИИ, v.НАЗВАНИЕ_ВИДА_ИЗДЕЛИЯ, z.НОМЕР_ЭКЗЕМПЛЯРА);
33 changes: 18 additions & 15 deletions sources/queries/task7.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@ DEFINE manufactory='П321';
DEFINE sector=2;

SELECT
s.ФАМИЛИЯ_СОТРУДНИКА,
s.ИМЯ_СОТРУДНИКА,
s.ОТЧЕСТВО_СОТРУДНИКА,
b.НОМЕР_БРИГАДЫ
FROM CWРАБОТЫ t
INNER JOIN CWУЧАСТОК u
ON t.КОД_УЧАСТКА = u.КОД_УЧАСТКА
INNER JOIN CWБРИГАДА b
ON t.НОМЕР_БРИГАДЫ = b.НОМЕР_БРИГАДЫ
INNER JOIN CWРУКОВОДИТЕЛЬ r
ON r.КОД_ОТВЕТСТВ = b.МАСТЕР
INNER JOIN CWСОТРУДНИК s
ON r.КОД_СОТРУДНИКА = s.КОД_СОТРУДНИКА

WHERE u.НОМЕР_ЦЕХА = '&manufactory' AND u.НОМЕР_УЧАСТКА = &sector;
fio AS "ФИО",
n AS "Номер бригады"
FROM (
SELECT
DISTINCT
s.ФАМИЛИЯ_СОТРУДНИКА || ' ' || s.ИМЯ_СОТРУДНИКА || ' ' || s.ОТЧЕСТВО_СОТРУДНИКА fio,
s.КОД_СОТРУДНИКА,
b.НОМЕР_БРИГАДЫ n
FROM CWРАБОТЫ t
INNER JOIN CWУЧАСТОК u
ON t.КОД_УЧАСТКА = u.КОД_УЧАСТКА
INNER JOIN CWБРИГАДА b
ON t.НОМЕР_БРИГАДЫ = b.НОМЕР_БРИГАДЫ
INNER JOIN CWРУКОВОДИТЕЛЬ r
ON r.КОД_ОТВЕТСТВ = b.МАСТЕР
INNER JOIN CWСОТРУДНИК s
ON r.КОД_СОТРУДНИКА = s.КОД_СОТРУДНИКА
WHERE u.НОМЕР_ЦЕХА = '&manufactory' AND u.НОМЕР_УЧАСТКА = &sector);

0 comments on commit e5696ca

Please sign in to comment.