Содержание
Техническое задание…………………………………………………………………………………………………………………………………………2
Название БД
Решаемые задачи
Актуальность
Сущности
Инфологическая модель……………………………………………………………………………………………………………………………………3
Описание полей…………………………………………………………………………………………………………………………………………………4
SQL листинги………………………………………………………………………………………………..……………………….……………………………7
Создание таблиц………………………………………………………………………………………………..……………………….………..………7
Вставка данных в таблицы………………………………………………………………………………..……………………….………..…….14
Обновление данных……………………………………………………………………………………………………………………………………20
Выборки………………………………………………………………………………………………..……………………….……………………………21
Выводы…………………………………………………………………………………………………………………………………………………………….22
Техническое задание
Название базы данных
«База данных для редакции газеты «Одуванчик»
Для каких целей и для кого разрабатывается база данных
База данных разрабатывается для использования в работе редакции газеты. Для хранения всей необходимой для организации информации.Для структурирования информации. Для упрощения процесса хранения, обновления, изменения, поиска, удаления информации. База будет использоваться секретарём редакции.
Актуальность
Разработка БД в выбранной области актуальна, так как для любой редакции газеты, которая имеет большое количество данных или данные связанные, с различными сторонами её деятельности (финансирование, кадры, производство, коммуникативная сторона), необходимо хранить всю важную информацию. Все эти составляющие (перечислены выше) присутствуют в функционировании редакции газеты. Для систематизации этих данных необходима БД.
Сущности
Работники, должности, трудовые контракты, командировки, отпуска, поощрения, оборудование, выпуски (№) газеты, статьи, изображения, вкладыши, организации-сотрудники. документы на отправку, внутренние документы, статьи расходов ,закупка материалов .
Также выделяются роли. В сущности «Должности» — начальник. В сущности «Документ» —внешний документ. В сущности «Другие организации» — типографии.
Описание полей
workers Хранит данные о работниках |
||
id_worker |
int |
уникальный идентификатор |
surname |
varchar (20) |
фамилия работника |
name |
varchar(20) |
имя |
patronymic |
varchar(20) |
отчество |
birth |
date |
дата рождения |
sex |
enum(‘м’, ‘ж’) |
пол |
passport_data |
varchar(50) |
паспортные данные |
place_of_above |
varchar(50) |
место жительства |
inn |
varchar(20) |
ИНН |
pension_certificate |
varchar(20) |
пенсионное свидетельство |
|
|
|
workpositions Хранит данные о должностях |
||
id_workposition |
int |
уникальный идентификатор |
title |
varchar(50) |
Название должности |
|
|
|
worker_workposition |
||
id_workposition |
int |
уникальный идентификатор |
id_worker |
int |
уникальный идентификатор |
id_contract |
int |
уникальный идентификатор |
date_start |
date |
дата начала работы по должности |
date_end |
date |
дата окончания работы по должности |
|
|
|
contracts Хранит информацию о контрактах |
||
id_contract |
int |
уникальный идентификатор |
contract_start |
date |
дата заключения контракта |
contract_end |
date |
дата окончания контракта |
|
|
|
worktrips Хранит информацию о командировках |
||
id_worktrip |
int |
уникальный идентификатор |
address |
varchar(50) |
адрес места командировки |
trip_start |
date |
дата начала командировки |
trip_end |
date |
дата окончания командировки |
purpose |
varchar(60) |
цель командировки |
id_worker |
int |
уникальный идентификатор |
|
|
|
encouragements Хранит данные о поощрениях |
||
id_encouragement |
int |
уникальный идентификатор |
date_enc |
date |
дата получения поощрения |
type_enc |
varchar(20) |
тип поощрения |
|
|
|
workers_encouragements |
||
id_encouragement |
int |
уникальный идентификатор |
id_worker |
int |
уникальный идентификатор |
|
|
|
holidays Хранит информацию об отпусках |
||
id_holiday |
int |
уникальный идентификатор |
start_holiday |
date |
дата начала отпуска |
end_holiday |
date |
дата окончания отпуска |
type_holiday |
enum (‘осн‘, ‘доп‘) |
тип отпуска |
id_worker |
int |
уникальный идентификатор |
|
|
|
|
|
|
|
|
|
expenseitems Хранит информацию о статьях расходов |
||
id_expenseitem |
int |
уникальный идентификатор |
date_exp |
date |
дата закупки статьи расходов |
title |
varchar(20) |
наименование статьи расходов |
year_ budget |
int |
годовой бюджет статьи |
id_worker |
int |
уникальный идентификатор |
|
|
|
costs Хранит данные о закупках |
||
id_cost |
int |
уникальный идентификатор |
title |
varchar(20) |
наименование закупки |
article |
varchar(20) |
артикль |
num |
int |
количество экземпляров |
amount |
int |
общая стоимость |
id_expenseitem |
int |
уникальный идентификатор |
|
|
|
documents Хранит информацию о документах |
||
id_document |
int |
уникальный идентификатор |
date_doc |
date |
дата публикации документа |
title |
varchar(20) |
название документа |
id_worker |
int |
уникальный идентификатор |
|
|
|
equipment Хранит информацию об оборудовании |
||
id_equip |
int |
уникальный идентификатор |
title |
varchar(20) |
наименование оборудования |
date_buy |
date |
дата покупки оборудования |
seriin_num |
varchar(20) |
серийный номер |
zavodsk_num |
varchar(20) |
заводской номер |
inventarn_num |
varchar(20) |
инвентаризационный номер |
id_worker |
int |
уникальный идентификатор |
|
|
|
outerdocuments Хранит данные о внешних документах |
||
id_outerdocument |
int |
уникальный идентификатор |
send_or_get |
enum(‘Отправлен’, ‘Получен’) |
Вид передачи внешнего документа |
type_send |
varchar(20) |
Способ передачи |
|
|
|
organisations Хранит информацию об организациях-сотрудниках |
||
id_organisation |
int |
уникальный идентификатор |
title |
varchar(20) |
наименование организации |
adress |
varchar(20) |
адрес организации |
phone |
varchar(15) |
телефон |
varchar(15) |
электронная почта |
|
boss |
varchar(50) |
ФИО директора организации |
|
|
|
printers |
Хранит информацию о типографиях |
|
id_printer |
int |
уникальный идентификатор |
print_type |
varchar(50) |
вид печати, осуществляемый в типографии |
publications Хранит данные о выпусках газеты |
||
id_publication |
int |
уникальный идентификатор |
newspaper_num |
int |
номер газеты |
date_publ |
date |
дата выхода газеты |
copies |
int |
тираж |
pages |
int |
количество полос |
id_printer |
int |
уникальный идентификатор |
id_duty |
int |
уникальный идентификатор |
articles Хранит информацию о статьях |
||
id_article |
int |
уникальный идентификатор |
title |
varchar(20) |
название статьи |
author |
varchar(20) |
автор статьи |
simbols |
int |
количество символов |
page_start |
int |
начальная страница статьи |
page_end |
int |
конечная страница статьи |
|
|
|
images Хранит информацию об изображениях |
||
id_image |
int |
уникальный идентификатор |
title |
varchar(20) |
название изображения |
author |
varchar(20) |
автор изображения |
|
|
|
images_articles |
||
id_article |
int |
уникальный идентификатор |
id_image |
int |
уникальный идентификатор |
|
|
|
publications_articles |
||
id_publication |
int |
уникальный идентификатор |
id_article |
int |
уникальный идентификатор |
|
|
|
type_inclusions Хранит информацию о типах вкладышей |
||
id_type_incl |
int |
уникальный идентификатор |
title |
varchar(20) |
название вкладыша |
|
|
|
inclusions Хранит информацию о вкладышах |
||
id_inclusion |
int |
уникальный идентификатор |
Id_type_incl |
int |
уникальный идентификатор |
pages |
int |
количество страниц |
id_publication |
int |
уникальный идентификатор |
|
|
|
inclusions_articles |
||
id_inclusion |
int |
уникальный идентификатор |
id_article |
int |
уникальный идентификатор |
|
|
|
publications_inclusions |
||
id_publication_incl |
int |
уникальный идентификатор |
id_inclusion |
int |
уникальный идентификатор |
id_publication |
int |
уникальный идентификатор |
SQL листинги
Создание таблиц
CREATE TABLE workpositions (
id_workpositionint NOT NULL auto_increment primary key,
titlevarchar(50)
) engine=InnoDb;
CREATE TABLE workers (
id_workerint NOT NULL auto_increment primary key,
surnamevarchar(20),
namevarchar(20),
patronymicvarchar(20),
birth date,
sexenum('м', 'ж') default 'м',
passport_datavarchar(50),
place_of_abovevarchar(50),
innvarchar(20),
pension_certificatevarchar(20)
) engine=InnoDb;
CREATE TABLE contracts (
id_contractint NOT NULL auto_increment primary key,
contract_start date,
contract_end date
) engine=InnoDb;
CREATE TABLE worker_workposition (
id_workerint NOT NULL,
id_workpositionint NOT NULL,
id_contractint NOT NULL,
date_start date,
date_end date,
FOREIGN KEY(id_worker) REFERENCES workers(id_worker),
FOREIGN KEY(id_workposition) REFERENCES workpositions(id_workposition),
FOREIGN KEY(id_contract) REFERENCES contracts(id_contract)
) engine=InnoDb;
CREATE TABLE worktrips (
id_worktripint NOT NULL auto_increment primary key,
addressvarchar(50),
trip_start date,
trip_end date,
purposevarchar(60),
id_workerint NOT NULL,
FOREIGN KEY(id_worker) REFERENCES workers(id_worker)
) engine=InnoDb;
CREATE TABLE encouragements (
id_encouragementint NOT NULL auto_increment primary key,
date_enc date,
type_encvarchar(20)
) engine=InnoDb;
CREATE TABLE workers_encouragements (
id_encouragementint NOT NULL,
FOREIGN KEY(id_encouragement) REFERENCES encouragements(id_encouragement),
id_workerint NOT NULL,
FOREIGN KEY(id_worker) REFERENCES workers(id_worker),
) engine=InnoDb;
CREATE TABLE holidays (
id_holidayint NOT NULL auto_increment primary key,
start_holiday date,
end_holiday date,
type_holidayenum ('основной', 'дополнительный'),
id_workerint,
FOREIGN KEY(id_worker) REFERENCES workers(id_worker)
) engine=InnoDb;
CREATE TABLE expenseitems (
id_expenseitemint NOT NULL auto_increment primary key,
titlevarchar(20),
date_exp date,
year_budgetint,
id_workerint NOT NULL,
FOREIGN KEY(id_worker) REFERENCES workers(id_worker)
) engine=InnoDb;
CREATE TABLE costs (
id_costint NOT NULL auto_increment primary key,
titlevarchar(20),
articlevarchar(20),
numint,
amountint,
id_expenseitemint NOT NULL,
FOREIGN KEY(id_expenseitem) REFERENCES expenseitems(id_expenseitem)
) engine=InnoDb;
CREATE TABLE equipment (
id_equipint NOT NULL auto_increment primary key,
titlevarchar(20),
date_buy date,
seriin_numvarchar(20),
zavodsk_numvarchar(20),
inventarn_numvarchar(20),
id_workerint NOT NULL,
FOREIGN KEY(id_worker) REFERENCES workers(id_worker)
) engine=InnoDb;
CREATE TABLE documents (
id_documentint NOT NULL auto_increment primary key,
date_doc date,
titlevarchar(20),
id_workerint NOT NULL,
FOREIGN KEY(id_worker) REFERENCES workers(id_worker)
) engine=InnoDb;
CREATE TABLE outerdocuments (
id_outerdocumentint NOT NULL primary key,
FOREIGN KEY(id_outerdocument) REFERENCES documents(id_document),
send_or_getenum('Отправлен', 'Получен') default 'Отправлен',
type_sendvarchar(20)
) engine=InnoDb;
CREATE TABLE organisations (
id_organisationint NOT NULL auto_increment primary key,
titlevarchar(100),
adressvarchar(100),
phonevarchar(100),
emailvarchar(100),
bossvarchar(100)
) engine=InnoDb;
CREATE TABLE printers (
id_printerint NOT NULL,
FOREIGN KEY(id_printer) REFERENCES organisations(id_organisation),
print_typevarchar(100)
) engine=InnoDb;
CREATE TABLE outerdoc_organisation (
id_organisationint NOT NULL,
id_outerdocumentint NOT NULL,
FOREIGN KEY(id_organisation) REFERENCES organisations(id_organisation),
FOREIGN KEY(id_outerdocument) REFERENCES outerdocuments(id_outerdocument)
) engine=InnoDb;
CREATE TABLE publications (
id_publicationint NOT NULL auto_increment primary key,
newspaper_numint,
date_publ date,
copiesint,
pagesint,
id_printerint,
FOREIGN KEY(id_printer) REFERENCES printers(id_printer),
id_dutyint,
FOREIGN KEY(id_duty) REFERENCES workers(id_worker)
) engine=InnoDb;
CREATE TABLE type_inclusion (
id_type_inclint NOT NULL auto_increment primary key,
tilievarchar(20)
) engine=InnoDb;
CREATE TABLE inclusions (
id_inclusionint NOT NULL auto_increment primary key,
id_type_inclint NOT NULL,
pagesint,
id_publicationint NOT NULL,
FOREIGN KEY(id_type_incl) REFERENCES type_inclusion(id_type_incl),
FOREIGN KEY(id_publication) REFERENCES publications(id_publication)
) engine=InnoDb;
CREATE TABLE articles (
id_articleint NOT NULL auto_increment primary key,
titlevarchar(20),
authorvarchar(20),
symbolsint,
page_startint,
page_endint
) engine=InnoDb;
CREATE TABLE inclusion_article (
id_inclusionint NOT NULL,
FOREIGN KEY(id_inclusion) REFERENCES inclusions(id_inclusion),
id_articleint NOT NULL,
FOREIGN KEY(id_article) REFERENCES articles(id_article)
) engine=InnoDb;
CREATE TABLE publication_inclusion (
id_publicationint NOT NULL,
FOREIGN KEY(id_publication) REFERENCES publications(id_publication),
id_inclusionint NOT NULL,
FOREIGN KEY(id_inclusion) REFERENCES inclusions(id_inclusion)
) engine=InnoDb;
CREATE TABLE publication_article (
id_publicationint NOT NULL,
FOREIGN KEY(id_publication) REFERENCES publications(id_publication),
id_articleint NOT NULL,
FOREIGN KEY(id_article) REFERENCES articles(id_article)
) engine=InnoDb;
CREATE TABLE images (
id_imageint NOT NULL auto_increment primary key,
titlevarchar(20),
authorvarchar(20)
) engine=InnoDb;
CREATE TABLE image_article (
id_imageint NOT NULL,
FOREIGN KEY(id_image) REFERENCES images(id_image),
id_articleint NOT NULL,
FOREIGN KEY(id_article) REFERENCES articles(id_article)
) engine=InnoDb;
CREATE TABLE copies (
id_copies_adressint NOT NULL auto_increment primary key,
id_publicationint NOT NULL,
adressvarchar(50),
copiesint,
FOREIGN KEY(id_publication) REFERENCES publications(id_publication)
) engine=InnoDb;