Учет документов на предприятии
МИНИСТЕРСТВО
ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЁЖИ И СПОРТА
ДОНЕЦКИЙ
НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ
Кафедра
прикладной математики и теории систем управления
Отчёт
о
выполненном индивидуальном задании
по
дисциплине «Базы данных»
Выполнил
студент математического
факультета, группы 2-З
Боровых Анатолий
Преподователь
Зейдина М.И.
Донецк
- 2012
Вариант 2. Учет документов предприятия
Создайте базу данных учета документов
предприятия. Документы могут быть различных типов: приказы, договора, служебные
записки, заявления, платежные поручения, кассовые ордера, приходные ордера на
склад, акты выполненных работ, ведомости и др. Каждый документ характеризуется
номером и датой, необходимо хранить в базе данных краткое описание его
содержания, а также информацию о лицах, подписавших этот документ. Лиц,
подписавших документ, может быть несколько. Каждый подписывающий
характеризуется фамилией, именем, отчеством и должностью.
Для каждого документа необходимо хранить
ключевые слова. Ключевых слов может быть несколько для одного документа.
Запросы.
. Отобрать документы, которые были
зарегистрированы в феврале 2009 г.
. Посчитать количество зарегистрированных в базе
данных документов каждого типа.
. Для каждого подписывающего лица подсчитать
количество документов, которые он подписал.
. Отобрать тех подписывающих лиц, которые
подписали более 3-х служебных записок, содержащих ключевое слово Х.
. Для каждого ключевого слова подсчитать
количество документов, в которых оно встречается.
Диаграмма базы данных
Таблица Документов
id_document
|
id_type_doc
|
number
|
data
|
short_info
|
1
|
1
|
1
|
2012-04-12
|
О
временном исполнении обязанностей Генерального директора Общества
|
2
|
1
|
2
|
2008-07-07
|
О
передачи полномочий по использованию печатей
|
3
|
2
|
3
|
2009-09-05
|
О
выплате единовременного пособия
|
4
|
2
|
4
|
2010-12-09
|
О
выплате пособия по уходу за ребенком
|
6
|
4
|
5
|
2011-09-09
|
О
представлении списка работников для участия в семинаре
|
7
|
4
|
6
|
2007-10-07
|
О
проверке работоспособности ПК
|
8
|
3
|
7
|
2012-03-03
|
9
|
3
|
8
|
2011-04-04
|
Расходный
кассовый ордер
|
10
|
5
|
9
|
2005-12-12
|
О
перечислении определенной суммы с собственного расчетного счета на счет
"ДонНУ"
|
11
|
5
|
10
|
2011-11-30
|
О
перечислении определенной суммы с собственного расчетного счета на счет
"Ливерпуль"
|
Таблица Должностей.
id_dolnost'
|
Value
|
1
|
Бухгалтер
|
2
|
Юрисконсульт
|
3
|
Кассир
|
4
|
ген.
Директор
|
11
|
старший
специалист
|
12
|
начальник
отдела
|
Таблица Сотрудников.
id_people
|
first_name
|
middle_name
|
last_name
|
id_dolgnost'
|
2
|
Иванов
|
Иван
|
Иванович
|
1
|
3
|
Петров
|
Петр
|
Петрович
|
3
|
4
|
Николаев
|
Николай
|
Николаевич
|
2
|
5
|
Валентинов
|
Валентин
|
Валентинович
|
3
|
6
|
Никитов
|
Никита
|
Никитович
|
2
|
7
|
Анатольев
|
Анатолий
|
Анатольвич
|
4
|
8
|
Юрьев
|
Юрий
|
Юрьевич
|
9
|
Федоров
|
Фёдор
|
Фёдорович
|
12
|
10
|
Евгеньев
|
Евгений
|
Евгеньевич
|
11
|
11
|
Викторов
|
Виктор
|
Викторович
|
12
|
Таблица Типов документов.
id_type_doc
|
Type
|
1
|
Приказ
|
2
|
Заявление
|
3
|
кассовый
ордер
|
4
|
служебная
записка
|
5
|
платёжное
поручение
|
Таблица Ключевых слов
Таблица для связи документов и сотрудников
1. Отобрать документы, которые были
зарегестрированы в феврале 2009г.
SELECT TOP 1000 [id_document]
,[id_type_doc]
,[number]
,[data]
,[short_info][Documents].[dbo].[Document] docdoc.data
like '2009-02%'
. Подсчитать количество зарегистрированных в
базе данных документов каждого типа.
SELECT tdoc.type
,COUNT(*)[Documents].[dbo].[Document] doc
join [Documents].[dbo].[Type_doc] tdoc ON (doc.id_type_doc=tdoc.id_type_doc)BY
tdoc.type
. Для каждого подписывающего лица подсчитать
количество документов, которые он подписал.
SELECT p.[first_name]
,p.[middle_name]
,p.[last_name]
,p.[id_dolgnost']
,COUNT(*)[dbo].[People] p join
[dbo].[doc_people] pd ON (p.id_people=pd.id_people) join [dbo].[Document] doc
ON (pd.id_document=doc.id_document)BY p.[id_people], p.[first_name]
,p.[middle_name]
,p.[last_name]
,p.[id_dolgnost']
документ база данные количество
4. Отобрать тех подписывающих лиц, которые
подписали более служебны записок содержащие ключевое слово Х.
SELECT p.[first_name]
,p.[middle_name]
,p.[last_name]
,p.[id_dolgnost'], COUNT(*)[dbo].[People] p
join [dbo].[doc_people] pd ON (p.id_people=pd.id_people) join [dbo].[Document]
doc ON (pd.id_document=doc.id_document) join [dbo].[Type_doc] tdoc ON
(doc.id_type_doc=tdoc.id_type_doc) join [dbo].[Tags] tg ON (doc.id_document =
tg.id_document)tdoc.type='служебная записка' and tg.tags='директор'HAVING
COUNT(*)>3BY p.[first_name]
,p.[middle_name]
,p.[last_name]
,p.[id_dolgnost']COUNT(*)>3
. Для каждого ключевого слова подсчитать
количество документов в которых оно встречается.
SELECT COUNT(*)[Documents].[dbo].[Document] doc
join [Documents].[dbo].[Tags] tg ON (doc.id_document = tg.id_document)BY
tg.id_tags