Помощь в написании студенческих работ
Антистрессовый сервис

Разработка серверной части информационной системы для сопровождения процесса выдачи заработной платы

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Следовательно, диаграмма вариантов использованияэто диаграмма на которой показываются отношения между актёрами и вариантами использования. С помощью этой диаграммы мы обозначили общие границы моделируемой предметной области на начальном уровне проектирования системы. С помощью этой модели мы можем детализировать нашу систему и на её основе создаём диаграмму, на которой показано более детальная… Читать ещё >

Разработка серверной части информационной системы для сопровождения процесса выдачи заработной платы (реферат, курсовая, диплом, контрольная)

Министерство образования, науки, молодежи и спорта Украины Сумской государственный университет Кафедра компьютерных наук Курсовая работа по дисциплине «Базы данных»

тема: «Разработка серверной части информационной системы для сопровождения процесса выдачи заработной платы»

Подготовила: студентка группы ИН-82

Данечкина Яна Проверил: Чекалов А. П.

Сумы

Постановка задачи

Отдел кадров и бухгалтерия некоторой компании:

— сотрудники: ФИО, паспортные данные, дом. и моб. телефоны;

— отдел: комната, раб. телефоны (в т.ч. местный), подчинённые сотрудники, должность, тип (ы) работы, задание (я), проект (ы), размер зарплаты, форма зарплаты (почасовая, фиксированная).

Построение use case диаграммы

На первом этапе предпроектного исследования выяснено, что основная задача разрабатываемой системы — сопровождение процесса выдачи заработной платы.

Use case диаграмма:

Рисунок 2.1 — Концептуальная модель 0-уровня

1. Бухгалтерия запрашивает список сотрудников и данных о них в отделе кадров и получает его.

2. Далее бухгалтерия проводит расчет заработной платы.

3. Передача расчетов и списков сотрудников в кассу.

4. В кассе происходит проверка паспорта и выдача заработной платы.

Следовательно, диаграмма вариантов использованияэто диаграмма на которой показываются отношения между актёрами и вариантами использования. С помощью этой диаграммы мы обозначили общие границы моделируемой предметной области на начальном уровне проектирования системы. С помощью этой модели мы можем детализировать нашу систему и на её основе создаём диаграмму, на которой показано более детальная последовательность действий.

Построение концептуальной модели 1-уровня (диаграмма последовательности действий)

Во время предпроектного исследования составлено следующее описание событий, происходящих при выдаче заработной платы:

1. Бухгалтерия запрашивает список сотрудников и данных о них в отделе кадров и получает его.

2. Далее бухгалтерия проводит расчет заработной платы.

3. Передача расчетов и списков сотрудников в кассу.

4. В кассе происходит проверка паспорта и выдача заработной платы.

Рисунок 2.2 — Концептуальная модель 1-го уровня (диаграмма последовательности действий)

С помощью диаграммы последовательности мы обозначили объекты и субъекты, которые есть основными составляющими проектированной системы, которые выполняют определённые действия, именно они и будут составлять классы.

Диаграмма классов

Исходя из диаграммы последовательности действий, мы получим 5 классов: Отделы, Сотрудник, Штатное_расписание, Выполняемая_работа и Контактная_инфо.

Диаграмма классов состоит из таких элементов:

1. Отделы — класс, который совмещает в себе отделы предприятия, имеет атрибуты: ID_отдела, название отдела, помещение, телефонный номер.

2. Сотрудник — класс, характеризующий сотрудников данной фирмы, имеет атрибуты: ID_сотрудника, паспортные данные, ФИО, стаж. Сотрудник приходит в кассу, предъявляет паспорт и получает заработную плату.

3. Штатное расписание — класс, описывающий имеющуюся информацию о должностях, окладах данной фирмы. Имеет атрибуты: ID, должность, оклад. Штатное расписание требуется для расчета заработной платы каждого сотрудника.

4. Выполняемая работа — класс, описывающий задание и тип работы конкретного сотрудника, плату за его выполнение и форму платы (почасовая или фиксированная). Имеет атрибуты: задание, размер_зарпл., тип_работы, форма_зарпл. Требуется для расчета заработной платы каждого сотрудника.

5. Контактная инфо — класс, описывающий контактные данные каждого сотрудника. Имеет атрибуты: e-mail, телефон, адресс, другое. Нужен при необходимости связаться с конкретным сотрудником.

Проектирование базы данных

Возьмем за правило считать классы сущностями. Объектной модели можно сопоставить модели данных из-за постоянного характера классов. Стойкие классы могут выступать в качестве постоянного хранения данных во время работы приложения. Следовательно, для всех постоянных классов можно применить утверждение, что они могут использовать однозначное отображение в сущностях. Этот процесс называется маппированием.

Отношения Отделы, Сотрудник и Штатное расписание, Выполняемая_работа и Контактная_инфо выявленные на этапе построения концептуальной модели характеризуются следующими атрибутами (табл. 3.1).

Таблица 3.1 Атрибуты отношения Отделы

Атрибут

Описание

Number

Номер отдела

Name

Название отдела

Room

Помещения, где расположены отдел кадров и бухгалтерия

Phone

Контактный телефон

Отношению Отделы соответствует полная ФЗ Number > Name, Room, Phone.

Таблица 3.2 Атрибуты отношения Сотрудник

Атрибут

Описание

fio

ФИО сотрудника

ID_s

Идентификатор сотрудника

Pasport

Паспортные данные

Spesiallity

Профессия сотрудника

Years

Стаж работы

Отношению Сотрудник соответствует полная ФЗ ID > Pasport, Info, Contact_Info, Spesiallity, Years.

Таблица 3.3 Атрибуты отношения Штатное расписание

Атрибут

Описание

ID

Идентификатор сотрудника

Post

Должность сотрудника

Salary

Ставка (оклад) по должности

Отношению Штатное расписание соответствует полная ФЗ ID > Dolzhnost, Money.

Таблица 3.4 Атрибуты отношения Выполняемая работа

Атрибут

Описание

Task

Задание

Salary

Плата зазадание

Kind_of_work

Тип работы

Kind_of_salary

Тип платы

Отношению Выполняемая работа соответствует полная ФЗ Task > Salary, Kind_of_work, Kind_of_salary.

Таблица 3.5 Атрибуты отношения Контактная инфо

Атрибут

Описание

ID

Идентификационный номер

Phone

Телефон

Address

Адрес

E-mail

Электронная почта

Others

Другое

Отношению Контактная инфо соответствует полная ФЗ ID > Phone, Address, E-mail, Others.

Анализ функциональных зависимостей, которые имеют место для отношений Отделы, Сотрудник, Штатное расписание, Выполняемая работа, Контактная инфо показывают, что они полные. Следовательно, универсальное отношение Заработная плата нормализовано.

Логическая реализация базы данных

Реализуем таблицу Отделы. Для идентификации записей введем первичный ключ Number.

Таблица 4.1 Обоснование типов полей табл. Отделы

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_отдела

Number

NUMBER (2)

ИН отдела

Primary Key

Помещение

Room

NUMBER (4,0)

Номер занимаемого помещения

Раб_телефон

Phone

VARCHAR2(20)

Рабочий телефон

Название_отдела

Name

VARCHAR2(30)

Название отдела

Реализуем таблицу Сотрудник. Для идентификации записей введем первичный ключ ID_s.

Таблица 4.2 Обоснование типов полей табл. Сотрудник

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID _сотрудника

ID_s

NUMBER (2)

ИН сотрудника

Primary Key

Паспортные_данные

Pasport

VARCHAR2 (50)

Серия, номер паспорта, кем выдан и прописка

Профессия

Spesiallity

VARCHAR2 (20)

Специальность сотрудника

Стаж

Years

TIMESTAMP

Дата первого трудового дня

ID_отдела

Number

NUMBER (2)

ИН отдела

Foreign Key

Реализуем таблицу Штатное расписание. Для идентификации записей введем первичный ключ ID.

Таблица 4.3 Обоснование типов полей табл. Штатно_ расписание

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID

ID

NUMBER (2)

ИН должности

Primary Key

Должность

Post

VARCHAR2 (20)

Должность сотрудника

Оклад

Salary

NUMBER (8,3)

Ставка по занимаемой должности

ID_отдела

Number

NUMBER (2)

ИН отдела

Foreign Key

Реализуем таблицу Выполняемая работа. Для идентификации записей введем первичный ключ Task.

Таблица 4.4 Обоснование типов полей табл. Выполняемая_работа

Атрибут

Столбец

Тип данных

Мотивация

Примечание

Задание

Task

VARCHAR2 (100)

Задание

Primary Key

Плата

Salary

NUMBER (8,3)

Плата за выполнение задания

Тип работы

Kind_of_work

VARCHAR2 (20)

Тип выполняемой работы

Тип платы

Kind_of_salary

VARCHAR2 (20)

Тип платы

ID _сотрудника

ID_s

NUMBER (2)

ИН сотрудника

Foreign Key

Реализуем таблицу Контактная инфо. Для идентификации записей введем мигрирующий первичный ключ ID_s.

Таблица 4.5 Обоснование типов полей табл. Контактная_инфо

Атрибут

Столбец

Тип данных

Мотивация

Примечание

Телефон

Phone

VARCHAR2 (20)

Телефон сотрудника

Адрес

Address

VARCHAR2 (30)

Адрес сотрудника

Электронная почта

E-mail

VARCHAR2 (30)

Электронная почта сотрудника

Другое

Others

VARCHAR2 (100)

Другие контакты сотрудника

ID _сотрудника

ID_s

NUMBER (2)

ИН сотрудника

PFK

Сущности Отделы и Сотрудник, Отделы и Штатное расписание соединены связями «один-ко-многим». При этом происходит мигрирование первичного ключа ID_отдела и преобразование его во внешний. Сущности Сотрудник и Выполняемая работа, Сотрудник и Контактная инфо соединены связями «один-к-одному». При этом происходит мигрирование первичного ключа ID_сотрудника и преобразование его во внешний ключ (Выполняемая работа) или PFK (Контактная инфо).

Окончательная реляционная модель базы данных выглядит следующим образом:

Физическая реализация базы данных

Скрипты

Create table Department (

Nоmer Number NOT NULL, —ИН отдела

Room Number, —Номер занимаемого помещения

Phone Varchar2(20), —Рабочий телефон

Name Varchar2(100)) —Название отдела

Create table Worker (

FIO Varchar2(50), —ФИО сотрудника

Pasport Varchar2(200), —Серия, номер паспорта, кем выдан и прописка

Spesiallity Varchar2(40), —Специальность сотрудника

Years Timestamp (8), —Дата первого трудового дня

ID_s Number NOT NULL, —ИН сотрудника

Number Number NOT NULL) —ИН отдела

Create table List_of_memb (

ID Number NOT NULL, —ИН должности

Post Varchar2(40), —Должность сотрудника

Salary Number (8,3), —Ставка по занимаемой должности

Nоmer Number NOT NULL) —ИН отдела

Create table Work (

task Varchar2(200), —Задание сотрудника

salary Number (8,3), —Плата за выполненное задание

kind_of_work Varchar2(20), —Тип выполняемой работы

kind_of_salary Varchar2(20), —Тип оплаты

ID_s Number NOT NULL) — ИН сотрудника

Create table Contact_info (

Phone Varchar2(20), —Телефон сотрудника

Address Varchar2(50), —Адрес сотрудника

e_mail Varchar2(30), —Электронная почта

others Varchar2(100), —Другие контакты сотрудника

ID_s Number NOT NULL) — ИН сотрудника

Alter table Department add Constraint pk_Department primary key (Nоmer)

Alter table Worker add Constraint pk_Worker primary key (ID_s)

Alter table List_of_memb add Constraint pk_List_of_memb primary key (ID)

Alter table Work add Constraint pk_Work primary key (ID_s)

Alter table Contact_info add Constraint pk_Contact_info primary key (ID_s)

Alter table List_of_memb add foreign key (Nоmer) references Department (Nоmer)

Alter table Worker add foreign key (Nоmer) references Department (Nоmer)

Alter table Contact_info add foreign key (ID_s) references Worker (ID_s)

Alter table Work add foreign key (ID_s) references Worker (ID_s)

commit;

Заполнение таблиц

—Department

INSERT INTO Department VALUES (1, 21, '(0542)236−743', 'Бухгалтерия');

INSERT INTO Department VALUES (2, 143, '(0542)298−756', 'Отдел кадров');

INSERT INTO Department VALUES (3, null, '(0542)255−733', 'Пропускн_пункт');

INSERT INTO Department VALUES (4, 32, '(0542)278−736', 'Тех_отдел');

INSERT INTO Department VALUES (5, 24, '(0542)243−721', 'Тест_отдел');

—Worker

INSERT INTO Worker VALUES ('Костюк А. О.','MB347856, Сумским ГРО УМВД 20.09.03, прописка — г. Сумы', 'Бухгалтер', TO_DATE ('2007;02−22', 'YYYY-MM-DD'), 1, 1);

INSERT INTO Worker VALUES ('Миненко В. А.','MB836472, Сумским ГРО УМВД 15.05.96, прописка — г. Сумы', 'Бухгалтер', TO_DATE ('2002;04−12', 'YYYY-MM-DD'), 2, 1);

INSERT INTO Worker VALUES ('Чешкин Б. В.','MB917382, Конотопским ГРО УМВД 20.03.93, прописка — г. Конотоп', 'Менеджер', TO_DATE ('2005;02−12', 'YYYY-MM-DD'), 3, 2);

INSERT INTO Worker VALUES ('Синь Е. Р.','MB153728, Сумским ГРО УМВД 17.04.76, прописка — г. Сумы', 'Вахтер', TO_DATE ('2010;07−30', 'YYYY-MM-DD'), 4, 3);

INSERT INTO Worker VALUES ('Ешеренев П. Г.','MB153728, Белопольским ГРО УМВД 28.08.74, прописка — г. Ворожба', 'Вахтер', TO_DATE ('2009;05−20', 'YYYY-MM-DD'), 5, 3);

INSERT INTO Worker VALUES ('Соломкина А. А.','MB635217, Сумским ГРО УМВД 25.06.71, прописка — г. Сумы', 'Вахтер', TO_DATE ('2004;06−18', 'YYYY-MM-DD'), 6, 3);

INSERT INTO Worker VALUES ('Масько П. Л.','MB762534, Ахтырским ГРО УМВД 20.09.95, прописка — г. Ахтырка', 'Менеджер', TO_DATE ('2007;10−29', 'YYYY-MM-DD'), 7, 4);

INSERT INTO Worker VALUES ('Кучер Ф. Г.','MB453277, Харьковским ГРО УМВД 10.09.96, прописка — г. Харьков', 'Тестер', TO_DATE ('2001;10−22', 'YYYY-MM-DD'), 8, 5);

INSERT INTO Worker VALUES ('Шинкарюк Л. Д.','MB256346, Киевским ГРО УМВД 05.06.92, прописка — г. Киев', 'Тестер', TO_DATE ('2002;11−28', 'YYYY-MM-DD'), 9, 5);

INSERT INTO Worker VALUES ('Воронная Н. Д.','MB736488, Сумским ГРО УМВД 20.09.98, прописка — г. Сумы', 'Тестер', TO_DATE ('2003;12−01', 'YYYY-MM-DD'), 10, 5);

—List_of_memb

INSERT INTO List_of_memb VALUES (1, 'Бухгалтер', 2000, 1);

INSERT INTO List_of_memb VALUES (2, 'Менеджер o/к', 1800, 2);

INSERT INTO List_of_memb VALUES (3, 'Вахтер', 800, 3);

INSERT INTO List_of_memb VALUES (4, 'Менеджер т/o', 2500, 4);

INSERT INTO List_of_memb VALUES (5, 'Тестер', 2300, 5);

—Work

INSERT INTO Work VALUES (null, 2000, 'на предпр.', 'почасовая', 1);

INSERT INTO Work VALUES (null, 2000, 'на предпр.', 'почасовая', 2);

INSERT INTO Work VALUES (null, 1800, 'на предпр.', 'почасовая', 3);

INSERT INTO Work VALUES (null, 800, 'на предпр.', 'почасовая', 4);

INSERT INTO Work VALUES (null, 800, 'на предпр.', 'почасовая', 5);

INSERT INTO Work VALUES (null, 800, 'на предпр.', 'почасовая', 6);

INSERT INTO Work VALUES (null, 2500, 'на предпр.', 'почасовая', 7);

INSERT INTO Work VALUES ('тестирование офисного прогр. обесп.', 2300, 'на предпр.', 'фиксир.', 8);

INSERT INTO Work VALUES ('тестирование пользовательского прогр. обесп.', 2300, 'на дому', 'фиксир.', 9);

INSERT INTO Work VALUES ('тестирование системного прогр. обесп.', 2300, 'на предпр.', 'фиксир.', 10);

—Contact_info

INSERT INTO Contact_info VALUES ('(0542)736−839', 'ул. Ахтырская, 3', 'jhsdfjskl@yandex.ru', null, 1);

INSERT INTO Contact_info VALUES ('(0542)745−859', 'ул. Кирова, 32', '123mjhj@yandex.ru', null, 2);

INSERT INTO Contact_info VALUES ('(5 456)5−36−34', 'ул. Ленина, 257', 'loigerg@mail.ru', 'ICQ — 456 789', 3);

INSERT INTO Contact_info VALUES ('(0542)674−256', 'ул. Октября, 3', 'vcmhdl@bk.ru', null, 4);

INSERT INTO Contact_info VALUES ('(5 423)7−36−89', 'ул. Колпака, 34', 'oehcpspss@yandex.ru', null, 5);

INSERT INTO Contact_info VALUES ('(0542)648−820', 'ул. Харьковска, 23', 'juise@yandex.ru', null, 6);

INSERT INTO Contact_info VALUES ('(5 446)2−49−88', 'ул. Шевченка, 2', 'lidufklasjd@mail.ru', null, 7);

INSERT INTO Contact_info VALUES ('(065)473−68−39', 'ул. Курская, 18', 'isdkasd@yandex.ru', null, 8);

INSERT INTO Contact_info VALUES ('(044)273−61−21', 'ул. О. Вишни, 78', 'lskdjflskdj@yandex.ru', null, 9);

INSERT INTO Contact_info VALUES ('(0542)836−358', 'ул. Береговая, 104', 'kudfkjdkdldd@yandex.ru', null, 10);

Department

Worker

List_of_memb

Work

проектирование база данных логический метамодель

Contact_info

Создание выборок

1. SELECT fio, spesiallity, EXTRACT (YEAR FROM SYSDATE) — EXTRACT (YEAR FROM years) AS stazh

FROM Worker; — выводит сотрудников, их специальности и стаж работы (использование функции — EXTRACT)

2. SELECT w. fio, w. spesiallity, w. pasport, l. salary

FROM Worker w, List_of_memb l

WHERE w. ID_s=l.ID_s AND w. nomer=l.nomer; выводит ФИО, специальность, паспортные данные и заработную плату сотрудников (выборка)

3. SELECT DISTINCT post

FROM List_of_memb; — выводит уникальные записи должностей штатного расписания (проекция)

4. SELECT d. nomer, w. ID_s, w. fio

FROM Worker w, Department d

WHERE w. nomer =d. nomer; — выводит номера сотрудников и их ФИО с учетом номеров отделов (пересечение)

5. SELECT salary

FROM List_of_memb

WHERE salary NOT IN (SELECT salary FROM List_of_memb WHERE salary<2000); — выводит ставки по заработной плате выше 2000 грн. (разность)

Мапирование реляционной модели в метамодель

Классической методикой проектирования баз данных является создание отдельной таблицы для каждой описываемой моделью данных сущности. Такой подход хорошо работает для БД с относительно небольшим количеством описываемых объектов и при несложных и статичных связях между ними. Однако любое изменение структуры хранимых данных приводит к внесению изменений в структуру таблиц, отображающих эти данные. Несложная на этапе разработки, эта операция становится крайне проблематичной при больших объемах данных и при отсутствии у разработчика непосредственного доступа к БД (например, если она находится у заказчика).

Пять основных тезисов, на которых должна строиться проектируемая база данных:

1. Каждая сущность, информация о которой хранится в БД, — это объект.

2. Каждый объект уникален в пределах БД и имеет уникальный идентификатор.

3. Объект имеет свойства (строковые, числовые, временные, перечислимые), которые описывают атрибуты сущности.

4. Объекты могут быть связаны между собой произвольным образом. Связь характеризуется связанными объектами и типом связи.

5. Объект может быть хранилищем. В этом случае допускается хранение в нем других объектов.

Такая структура базы данных не привязана ни к какой бизнес-модели и позволяет реализовать на этой основе практически любую бизнес-логику.

Построение диаграммы классов для метамодели

Исходя из описанных выше утверждений, была спроектирована диаграмма классов, которая удовлетворяет этим тезисам (рис. 4.1).

Как видно из диаграммы классов она состоит из 4 классов: Типы, Объекты, Атрибуты и Параметры. В каждом классе, кроме класса Параметры, имеется 3 атрибута, из которых один — это идентификатор данного класса. В классы Объекты и Атрибуты мигрирует идентификатор из класса Типы. Класс Параметры не имеет своего идентификатора, но в него мигрируют идентификаторы из классов Атрибуты и Объекты.

Рисунок 4.1 — Диаграмма классов

Проектирование метамодели базы данных

Отношения Типы, Объекты, Атрибуты и Параметры, выявленные на этапе построения концептуальной модели характеризуются следующими атрибутами (табл. 3.1).

Таблица 3.1 Атрибуты отношения «Типы»

Атрибут

Описание

ID_типа_объекта

Первичный ключ

Название

Название типа

Описание

Описание типа

Таблица 3.2 Атрибуты отношения «Объекты»

Атрибут

Описание

ID_объекта

Первичный ключ

ID_типа_объекта

Внешний ключ отношения «Типы»

Название_объекта

Название объекта

Таблица 3.3 Атрибуты отношения «Атрибуты»

Атрибут

Описание

ID_атрибута

Первичный ключ

ID_типа_объекта

Внешний ключ отношения «Типы»

Название_атрибута

Название атрибута

Таблица 3.3 Атрибуты отношения «Параметры»

Атрибут

Описание

ID_объекта

Внешний ключ отношения «Объекты»

ID_отношения

ID_атрибута

Показывает отношение между объектами Внешний ключ отношения «Атрибуты»

Текстовое значение Номерное значение

Поле для текстовых данных Поле для числовых данных

Отношение Параметры играет роль связи «Многие ко Многим», а атрибут ID_отношения показывает эту связь.

Логическая реализация метамодели

Реализуем таблицу object_types. Для идентификации записей введем первичный ключ object_type_id.

Таблица 5.1 Обоснование типов полей таблицы object_types:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_типа_объекта

object_type_id

NUMBER

Primary Key

Название

name

VARCHAR2(50)

Название

Описание

description

VARCHAR2(100)

Описание

Реализуем таблицу objects. Для идентификации записей введем первичный ключ object_id.

Таблица 5.2 Обоснование типов полей таблицы objects:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_объекта

object_id

NUMBER

Primary Key

ID_типа_объекта

object_type_id

NUMBER

Foreign Key

Название_объекта

name

VARCHAR2(150)

Название объекта

Реализуем таблицу attributes. Для идентификации записей введем первичный ключ attr_id.

Таблица 5.3 Обоснование типов полей таблицы attributes:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_атрибута

attr_id

NUMBER

Primary Key

ID_типа_объекта

object_type_id

NUMBER

Foreign Key

Название_атрибута

name

VARCHAR2(50)

Название атрибута

Реализуем таблицу cf_par. Первичных ключей таблица не имеет.

Таблица 5.4 Обоснование типов полей таблицы params:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_объекта

object_id

NUMBER

Номер объекта

Foreign Key

ID_атрибута

attr_id

NUMBER

Номер атрибута

Foreign Key

Текстовое_значение

text_value

VARCHAR2(150)

Поле для текстовых данных

Номерное_значение

number_value

NUMBER

Поле для цифровых данных

Дата

date_value

DATE

Поле для дат

Схема метамодели была реализована так:

Физическая реализация метамодели

Скрипты

drop table params;

drop table attributes;

drop table objects;

drop table object_types;

— Create tables

Create table object_types (

object_type_id Number NOT NULL ,

name Varchar2(100),

description Varchar2(1000));

Create table objects (

object_id Number NOT NULL ,

object_type_id Number NOT NULL ,

name Varchar2(100));

Create table attributes (

attr_id Number NOT NULL ,

object_type_id Number NOT NULL ,

name Varchar2(100));

Create table params (

object_id Number NOT NULL ,

attr_id Number NOT NULL ,

text_value Varchar2(1000),

number_value Number,

date_value DATE);

— Create primary keys

Alter table object_types add primary key (object_type_id);

Alter table objects add primary key (object_id);

Alter table attributes add primary key (attr_id);

— Create foreign keys

Alter table objects

add Constraint r5 foreign key (object_type_id)

references object_types (object_type_id) on delete cascade;

Alter table attributes

add foreign key (object_type_id)

references object_types (object_type_id) ;

Alter table params

add Constraint r6 foreign key (object_id)

references objects (object_id) ;

Alter table params

add Constraint r7 foreign key (attr_id)

references attributes (attr_id) ;

commit;

Заполнение таблиц

delete from params;

delete from objects;

delete from attributes;

delete from object_types;

—object_types (object_type_id, name, description)

insert into object_types values (1, 'Department', null);

insert into object_types values (2, 'Worker', null);

insert into object_types values (3, 'List_of_memb', 'List_of_members');

insert into object_types values (4, 'Work', null);

insert into object_types values (5, 'Contact_info', 'Contact_information');

—attributes (attr_id, object_type_id, name)

insert into attributes values (1, 1, 'Room');

insert into attributes values (2, 1, 'Phone');

insert into attributes values (3, 2, 'Pasport');

insert into attributes values (4, 2, 'Spesiallity');

insert into attributes values (5, 2, 'Years');

insert into attributes values (6, 3, 'Salary');

insert into attributes values (7, 4, 'Task');

insert into attributes values (8, 4, 'Salary');

insert into attributes values (9, 4, 'Kind_of_work');

insert into attributes values (10, 4, 'Kind_of_salary');

insert into attributes values (11, 5, 'Phone');

insert into attributes values (12, 5, 'Address');

insert into attributes values (13, 5, 'E-mail');

insert into attributes values (14, 5, 'Others');

—objects (object_id, object_type_id, name)

—Department

insert into objects values (10, 1, 'Бухгалтерия');

insert into objects values (20, 1, 'Отдел кадров');

insert into objects values (30, 1, 'Пропускн_пункт');

insert into objects values (40, 1, 'Тех_отдел');

insert into objects values (50, 1, 'Тест_отдел');

—Worker

insert into objects values (11, 2, 'Костюк А. О.');

insert into objects values (12, 2, 'Миненко В. А.');

insert into objects values (13, 2, 'Чешкин Б. В.');

insert into objects values (14, 2, 'Синь Е. Р.');

insert into objects values (15, 2, 'Ешеренев П. Г.');

insert into objects values (16, 2, 'Соломкина А. А.');

insert into objects values (17, 2, 'Масько П. Л.');

insert into objects values (18, 2, 'Кучер Ф. Г.');

insert into objects values (19, 2, 'Шинкарюк Л. Д.');

insert into objects values (21, 2, 'Воронная Н. Д.');

—List_of_memb

insert into objects values (1, 3, 'Бухгалтер');

insert into objects values (2, 3, 'Менеджер ок');

insert into objects values (3, 3, 'Вахтер');

insert into objects values (4, 3, 'Менеджер то');

insert into objects values (5, 3, 'Тестер');

—params (object_id, attr_id, text_value, number_value, date_value)

—Department => Room

insert into params (object_id, attr_id, number_value) values (10, 1, 21);

insert into params (object_id, attr_id, number_value) values (20, 1, 143);

insert into params (object_id, attr_id, number_value) values (30, 1, null);

insert into params (object_id, attr_id, number_value) values (40, 1, 32);

insert into params (object_id, attr_id, number_value) values (50, 1, 24);

—Department => Phone

insert into params (object_id, attr_id, text_value) values (10, 2, '(0542)236−743');

insert into params (object_id, attr_id, text_value) values (20, 2, '(0542)298−756');

insert into params (object_id, attr_id, text_value) values (30, 2, '(0542)255−733');

insert into params (object_id, attr_id, text_value) values (40, 2, '(0542)278−736');

insert into params (object_id, attr_id, text_value) values (50, 2, '(0542)243−721');

—Worker => Pasport

insert into params (object_id, attr_id, text_value) values (11, 3, 'MB347856, Сумским ГРО УМВД 20.09.03, прописка — г. Сумы');

insert into params (object_id, attr_id, text_value) values (12, 3, 'MB836472, Сумским ГРО УМВД 15.05.96, прописка — г. Сумы');

insert into params (object_id, attr_id, text_value) values (13, 3, 'MB917382, Конотопским ГРО УМВД 20.03.93, прописка — г. Конотоп');

insert into params (object_id, attr_id, text_value) values (14, 3, 'MB153728, Сумским ГРО УМВД 17.04.76, прописка — г. Сумы');

insert into params (object_id, attr_id, text_value) values (15, 3, 'MB153728, Белопольским ГРО УМВД 28.08.74, прописка — г. Ворожба');

insert into params (object_id, attr_id, text_value) values (16, 3, 'MB635217, Сумским ГРО УМВД 25.06.71, прописка — г. Сумы');

insert into params (object_id, attr_id, text_value) values (17, 3, 'MB762534, Ахтырским ГРО УМВД 20.09.95, прописка — г. Ахтырка');

insert into params (object_id, attr_id, text_value) values (18, 3, 'MB453277, Харьковским ГРО УМВД 10.09.96, прописка — г. Харьков');

insert into params (object_id, attr_id, text_value) values (19, 3, 'MB256346, Киевским ГРО УМВД 05.06.92, прописка — г. Киев');

insert into params (object_id, attr_id, text_value) values (21, 3, 'MB736488, Сумским ГРО УМВД 20.09.98, прописка — г. Сумы');

—Worker => Spesiallity

insert into params (object_id, attr_id, text_value) values (11, 4, 'Бухгалтер');

insert into params (object_id, attr_id, text_value) values (12, 4, 'Бухгалтер');

insert into params (object_id, attr_id, text_value) values (13, 4, 'Менеджер');

insert into params (object_id, attr_id, text_value) values (14, 4, 'Вахтер');

insert into params (object_id, attr_id, text_value) values (15, 4, 'Вахтер');

insert into params (object_id, attr_id, text_value) values (16, 4, 'Вахтер');

insert into params (object_id, attr_id, text_value) values (17, 4, 'Менеджер');

insert into params (object_id, attr_id, text_value) values (18, 4, 'Тестер');

insert into params (object_id, attr_id, text_value) values (19, 4, 'Тестер');

insert into params (object_id, attr_id, text_value) values (21, 4, 'Тестер');

—Worker => Years

insert into params (object_id, attr_id, date_value) values (11, 5, TO_DATE ('2007;02−22', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (12, 5, TO_DATE ('2002;04−12', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (13, 5, TO_DATE ('2005;02−12', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (14, 5, TO_DATE ('2010;07−30', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (15, 5, TO_DATE ('2009;05−20', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (16, 5, TO_DATE ('2004;06−18', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (17, 5, TO_DATE ('2007;10−29', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (18, 5, TO_DATE ('2001;10−22', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (19, 5, TO_DATE ('2002;11−28', 'YYYY-MM-DD'));

insert into params (object_id, attr_id, date_value) values (21, 5, TO_DATE ('2003;12−01', 'YYYY-MM-DD'));

—List_of_memb => Salary

insert into params (object_id, attr_id, number_value) values (1, 6, 2000);

insert into params (object_id, attr_id, number_value) values (2, 6, 1800);

insert into params (object_id, attr_id, number_value) values (3, 6, 800);

insert into params (object_id, attr_id, number_value) values (4, 6, 2500);

insert into params (object_id, attr_id, number_value) values (5, 6, 2300);

—Work => Task

insert into params (object_id, attr_id, text_value) values (11, 7, null);

insert into params (object_id, attr_id, text_value) values (12, 7, null);

insert into params (object_id, attr_id, text_value) values (13, 7, null);

insert into params (object_id, attr_id, text_value) values (14, 7, null);

insert into params (object_id, attr_id, text_value) values (15, 7, null);

insert into params (object_id, attr_id, text_value) values (16, 7, null);

insert into params (object_id, attr_id, text_value) values (17, 7, null);

insert into params (object_id, attr_id, text_value) values (18, 7, 'тестирование офисного прогр. обесп.');

insert into params (object_id, attr_id, text_value) values (19, 7, 'тестирование пользовательского прогр. обесп.');

insert into params (object_id, attr_id, text_value) values (21, 7, 'тестирование системного прогр. обесп.');

—Work => Salary

insert into params (object_id, attr_id, number_value) values (11, 8, 2000);

insert into params (object_id, attr_id, number_value) values (12, 8, 2000);

insert into params (object_id, attr_id, number_value) values (13, 8, 1800);

insert into params (object_id, attr_id, number_value) values (14, 8, 800);

insert into params (object_id, attr_id, number_value) values (15, 8, 800);

insert into params (object_id, attr_id, number_value) values (16, 8, 800);

insert into params (object_id, attr_id, number_value) values (17, 8, 2500);

insert into params (object_id, attr_id, number_value) values (18, 8, 2300);

insert into params (object_id, attr_id, number_value) values (19, 8, 2300);

insert into params (object_id, attr_id, number_value) values (21, 8, 2300);

—Work => Kind_of_work

insert into params (object_id, attr_id, text_value) values (11, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (12, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (13, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (14, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (15, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (16, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (17, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (18, 9, 'на предпр.');

insert into params (object_id, attr_id, text_value) values (19, 9, 'на дому');

insert into params (object_id, attr_id, text_value) values (21, 9, 'на предпр.');

—Work => Kind_of_salary

insert into params (object_id, attr_id, text_value) values (11, 10, 'почасовая');

insert into params (object_id, attr_id, text_value) values (12, 10, 'почасовая');

insert into params (object_id, attr_id, text_value) values (13, 10, 'почасовая');

insert into params (object_id, attr_id, text_value) values (14, 10, 'почасовая');

insert into params (object_id, attr_id, text_value) values (15, 10, 'почасовая');

insert into params (object_id, attr_id, text_value) values (16, 10, 'почасовая');

insert into params (object_id, attr_id, text_value) values (17, 10, 'почасовая');

insert into params (object_id, attr_id, text_value) values (18, 10, 'фиксир.');

insert into params (object_id, attr_id, text_value) values (19, 10, 'фиксир.');

insert into params (object_id, attr_id, text_value) values (21, 10, 'фиксир.');

—Contact_info

—Phone

insert into params (object_id, attr_id, text_value) values (11, 11, '(0542)736−839');

insert into params (object_id, attr_id, text_value) values (12, 11, '(0542)736−839');

insert into params (object_id, attr_id, text_value) values (13, 11, '(5 456)5−36−34');

insert into params (object_id, attr_id, text_value) values (14, 11, '(0542)674−256');

insert into params (object_id, attr_id, text_value) values (15, 11, '(5 423)7−36−89');

insert into params (object_id, attr_id, text_value) values (16, 11, '(0542)648−820');

insert into params (object_id, attr_id, text_value) values (17, 11, '(5 446)2−49−88');

insert into params (object_id, attr_id, text_value) values (18, 11, '(065)473−68−39');

insert into params (object_id, attr_id, text_value) values (19, 11, '(044)273−61−21');

insert into params (object_id, attr_id, text_value) values (21, 11, '(0542)836−358');

—Address

insert into params (object_id, attr_id, text_value) values (11, 12, 'г. Сумы, ул. Ахтырская, 3');

insert into params (object_id, attr_id, text_value) values (12, 12, 'г. Сумы, ул. Кирова, 32');

insert into params (object_id, attr_id, text_value) values (13, 12, 'г. Конотоп, ул. Ленина, 257');

insert into params (object_id, attr_id, text_value) values (14, 12, 'г. Сумы, ул. Октября, 3');

insert into params (object_id, attr_id, text_value) values (15, 12, 'г. Ворожба, ул. Колпака, 34');

insert into params (object_id, attr_id, text_value) values (16, 12, 'г. Сумы, ул. Харьковска, 23');

insert into params (object_id, attr_id, text_value) values (17, 12, 'г. Ахтырка, ул. Шевченка, 2');

insert into params (object_id, attr_id, text_value) values (18, 12, 'г. Харьков, ул. Курская, 18');

insert into params (object_id, attr_id, text_value) values (19, 12, 'г. Киев, ул. О. Вишни, 78');

insert into params (object_id, attr_id, text_value) values (21, 12, 'г. Сумы, ул. Береговая, 104');

—E-mail

insert into params (object_id, attr_id, text_value) values (11, 13, 'jhsdfjskl@yandex.ru');

insert into params (object_id, attr_id, text_value) values (12, 13, '123mjhj@yandex.ru');

insert into params (object_id, attr_id, text_value) values (13, 13, 'loigerg@mail.ru');

insert into params (object_id, attr_id, text_value) values (14, 13, 'vcmhdl@bk.ru');

insert into params (object_id, attr_id, text_value) values (15, 13, 'oehcpspss@yandex.ru');

insert into params (object_id, attr_id, text_value) values (16, 13, 'juise@yandex.ru');

insert into params (object_id, attr_id, text_value) values (17, 13, 'lidufklasjd@mail.ru');

insert into params (object_id, attr_id, text_value) values (18, 13, 'isdkasd@yandex.ru');

insert into params (object_id, attr_id, text_value) values (19, 13, 'lskdjflskdj@yandex.ru');

insert into params (object_id, attr_id, text_value) values (21, 13, 'kudfkjdkdldd@yandex.ru');

—Other

insert into params (object_id, attr_id, text_value) values (11, 14, null);

insert into params (object_id, attr_id, text_value) values (12, 14, null);

insert into params (object_id, attr_id, text_value) values (13, 14, 'ICQ — 456 789');

insert into params (object_id, attr_id, text_value) values (14, 14, null);

insert into params (object_id, attr_id, text_value) values (15, 14, null);

insert into params (object_id, attr_id, text_value) values (16, 14, null);

insert into params (object_id, attr_id, text_value) values (17, 14, null);

insert into params (object_id, attr_id, text_value) values (18, 14, null);

insert into params (object_id, attr_id, text_value) values (19, 14, null);

insert into params (object_id, attr_id, text_value) values (21, 14, null);

commit;

Создание выборок

1. SELECT o.name, p1. text_value, EXTRACT (YEAR FROM SYSDATE) — EXTRACT (YEAR FROM p2. date_value) Stazh

FROM objects o JOIN params p1

ON o. object_id=p1.object_id AND p1. attr_id=4

JOIN params p2

ON o. object_id=p2.object_id AND p2. attr_id=5; выводит сотрудников, их специальности и стаж работы (использование функции — EXTRACT)

2. select o.name, p1. text_value, p2. text_value, p3. number_value

from objects o join params p1

on o. object_id=p1.object_id and p1. attr_id=4

join params p2

on p1. object_id=p2.object_id and p2. attr_id=3

join params p3

on p2. object_id=p3.object_id and p3. attr_id=8; выводит ФИО, специальность, паспортные данные и заработную плату сотрудников (выборка)

3. select distinct text_value

from params

where attr_id=4; — выводит уникальные записи должностей (проекция)

Выводы

Выполняя курсовую работу, я освоила язык для создания баз данных — SQL. Моей задачей было создание базы данных некоего предприятия. Во время выполнения задания я изучила основные понятия и компоненты этого языка: типы моделей, структура сущностей (таблиц), выражения SQL, DML (разность, проекция, пересечение, выборка, объединение), соединения, функции, операторы (арифметические, AND, IN, NOT IN…), иерархию данных, метамодель и многое другое.

Самым сложным в понимании мне показались соединения и метамодель, но я преодолела эти трудности.

Итогом моей работы стала полноценная база данных предприятия, которую можно использовать для различных целей.

А. Чекалов. Базы данных: от проектирования до разработки приложений _ СПб.: БХВ-Петербург, 2003. — 384 с.

Показать весь текст
Заполнить форму текущей работой