Автор работы: Пользователь скрыл имя, 28 Июня 2015 в 16:00, отчет по практике
У студента, будущего молодого специалиста, есть возможность себя зарекомендовать и определиться с последующим трудоустройством или, может быть, поискать себе другое «поле» для деятельности.
В данном отчете подводится итог прохождения мной производственной практики в ИООО «ЭпамСистемз».
Введение …………………………………………………………………………3
1. Ознакомление с деятельностью и структурой предприятия ………………4
2. Задание от предприятия ……………………………………………………...9
3. Разработка и создание базы данных ………………………………………...11
4. Изучение Oracle SQL Developer……………………………………………...21
Заключение………………………………………………………………………24
Литература ……………………
Опишем для чего нужна каждая из показанных таблиц:
Теперь создадим все необходимые таблицы, а так же последовательности, предназначенные для генерации суррогатных первичных ключей.
CREATE TABLE party
(party_id NUMBER(5) PRIMARY KEY,
party_name VARCHAR(50) NOT NULL);
CREATE SEQUENCE seq_party_id
START WITH 1
INCREMENT BY 1;
CREATE TABLE president
(president_id NUMBER(5) PRIMARY KEY,
president_name VARCHAR(50)NOT NULL,
birth DATE NOT NULL,
death DATE,
inauguration DATE NOT NULL,
end_of_presidency DATE,
party_id NUMBER(5) REFERENCES party(party_id));
CREATE SEQUENCE seq_presidenr_id
START WITH 1
INCREMENT BY 1;
CREATE TABLE election
(term NUMBER(5) NOT NULL,
election_year NUMBER(5) NOT NULL,
winner NUMBER(5) CONSTRAINT elect_winner_fk REFERENCES president(president_id));
CREATE SEQUENCE seq_term
START WITH 1
INCREMENT BY 1;
CREATE TABLE vice_president
(vice_president_id NUMBER(5) PRIMARY KEY,
vice_president_name VARCHAR(50) NOT NULL,
birth DATE NOT NULL,
death DATE,
inauguration DATE NOT NULL,
end_of_term DATE);
CREATE SEQUENCE seq_vice_president_id
START WITH 1
INCREMENT BY 1;
CREATE TABLE president_m2m_vice_president
(president_id NUMBER(5) CONSTRAINT pm2mvc_president_fk REFERENCES president(president_id),
vice_president NUMBER(5) CONSTRAINT pm2mvc_vice_president_fk
REFERENCES vice_president(vice_president_
Для заполнения полученных таблиц необходимо импортировать денормализованные таблицы, хранящие всю необходимую нам информацию, в нашу базу данных, а затем заполнить созданные таблицы импортированными данными. Для импорта таблиц воспользуемся стандартными средствами SQL Developer.
Рисунок 2 – Импортирование данных в SQL Developer.
Таким образом импортируем таблицы с данными о президентах, вице-президентах и таблицу, где отображено соответствие между президентами и их вице-президентами. В итоге в схеме появилось 4 таблицы с импортированными данными.
Рисунок 3 – Импортированные таблицы.
Далее, на основании полученных таблиц, будем заполнять нашу БД.
INSERT INTO party
SELECT seq_party_id.nextval,
party
FROM
( SELECT DISTINCT party
FROM import_election
);
INSERT INTO president
SELECT seq_presidenr_id.nextval,
president,
date_of_birth,
date_of_death,
date_of_inauguration,
end_date_of_presidency,
party_id
FROM
(
SELECT DISTINCT imp_p.president,
imp_p.date_of_birth,
imp_p.date_of_death,
imp_p.date_of_inauguration,
imp_p.end_date_of_presidency,
p.party_id
FROM import_president imp_p JOIN import_election
imp_el ON (imp_p.president=imp_el.
JOIN party p ON (imp_el.party=p.party_name)
ORDER BY imp_p.date_of_inauguration
);
INSERT INTO election
SELECT seq_term.nextval,
imp_el.year,
pr.president_id
FROM import_election imp_el JOIN president pr ON(imp_el.winner=pr.president_
INSERT INTO vice_president
SELECT seq_vice_president_id.nextval,
vice_president,
date_of_birth,
date_of_death,
date_of_inauguration,
end_of_term
FROM impotr_vice_president;
INSERT INTO president_m2m_vice_president
SELECT pr.president_id,
vpr.vice_president_id
FROM president pr JOIN import_presid_vice_presid
imp_pvp ON (pr.president_name=imp_pvp.
JOIN vice_president vpr ON (imp_pvp.vice_president=vpr.
COMMIT;
Приступаем к проверке проклятия. Создадим представление со всеми президентами, которые были избраны в года, кратные 20, а так же позднее 1840 года, потому что именно эта дата первая, выполняющая условие проклятия, начиная естественно с момента произнесения проклятия. Так же как гласит теория, проклятие распространяется на первых семи «счастливчиков», поэтому выведем только первые 7 записей.
CREATE VIEW accursed_president AS
SELECT ROWNUM "count",
pr.president_name,
e.election_year
FROM president pr JOIN election e ON (pr.president_id=e.winner)
WHERE MOD(e.election_year,20)=0
AND e.election_year>=1840
AND ROWNUM<=7;
Проверим, выполняется ли проклятие на данных президентах. Для этого проверим в отдельности для каждого из 7 президентов выполнение условия, и если хотя бы для одного из них не выполняется, то итоговые результат будет False, т.е не выполняется.
SELECT
CASE
WHEN "Sum of true"=7 THEN 'Да, выполняется'
ELSE 'Нет, не выполняется'
END AS "Total result"
FROM
(
SELECT count(*) "Sum of true"
FROM accursed_president ap JOIN president
pr ON(ap.president_name=pr.
WHERE pr.death=pr.end_of_presidency
);
Рисунок 4 - Результат работы скрипта, проверяющего выполнения проклятия на президентах.
Следовательно, проклятие выполняется на первых семи президентах.
Проверим, выполняется ли проклятие на вице-президентах. Создадим представление, в котором будут все вице-президенты, избранные в годах, кратных 20, но избранных позже 1840 года.
CREATE VIEW accursed_vice_president AS
SELECT vice_president_name
FROM vice_president
WHERE (MOD(to_number(to_char(
AND (to_number(to_char(
Рисунок 5 – Результат выполнения скрипта.
Как видно из таблицы, возможных кандидатов на выполнение проклятия всего 9.
Проверим, не доживали ли данные вице-президенты до конца срока своих полномочий.
SELECT
CASE
WHEN count(*)=9 THEN 'Да, проклятие
выполняется на вице-
ELSE 'Нет, на вице-президентов проклятие не выполняется'
END AS "Total result(vice_presidents)"
FROM accursed_vice_president avp JOIN vice_president
vpr ON(avp.vice_president_name=
WHERE vpr.death=vpr.end_of_term;
Рисунок 6 – Результат выполнения скрипта, проверяющего распространения проклятия на вице-президентов.
Как видно из рисунка на вице-президентов проклятие не распространяется.
Выясним, сколько всего президентов не дожило до конца срока. Создадим представление, в котором будут еще партии, в которых они состоят.
CREATE VIEW dead_in_presidency AS
SELECT pr.president_name,
prt.party_name
FROM president pr JOIN party prt USING(party_id)
WHERE death=end_of_presidency;
Рисунок 7 – Результат выполнения скрипта.
Как видно из таблицы, взаимосвязи нету между партиями и смертями.
Проверим, есть ли взаимосвязь, между возрастом президента и возрастом вице-президента. Для этого создадим представление с датами рождения президентов и их вице-президентов.
CREATE VIEW age_pres_vicepres AS
SELECT DISTINCT pr.president_name,
pr.birth president_birth,
vc.vice_president_name,
vc.birth vice_president_birth
FROM president pr JOIN president_m2m_vice_president
pvp ON (pr.president_id=pvp.
JOIN vice_president vc ON (pvp.vice_president=vc.vice_
WHERE pr.president_name IN (SELECT president_name FROM accursed_president)
AND vc.vice_president_name IN (SELECT vice_president_name FROM accursed_vice_president);
Рисунок 8 – Результат выполнения скрипта.
SELECT
CASE
WHEN count(*)=1 THEN 'Зависимость от возрастов есть'
ELSE 'Нету зависимости от возрастов'
END AS "Totel result(ages)"
FROM
(
SELECT count(*)
FROM
(
SELECT president_name,
vice_president_name,
CASE
WHEN (president_birth-vice_
WHEN (president_birth-vice_
END AS "President older vice president"
FROM age_pres_vicepres
)
GROUP BY "President older vice president");
Рисунок 10 – Результат выполнения скрипта, проверяющего взаимосвязь между возрастом президента и вице-президента.
4. ИЗУЧЕНИЕ ORACLE SQL DEVELOPER
Oracle SQL Developer — интегрированная
среда разработки на языках SQL
и PL/SQL, ориентированная на применение
в среде OracleDatabase. Корпорация Oracle предоставляет
продукт бесплатно. Сама среда
написана на языке
OracleSQLDeveloper изначально поддерживает работу с OracleDatabase, существуют плагины, обеспечивающие подключение из среды к другим системам управления базами данных, в частности, реализован доступ к IBMDB2, MicrosoftAccess, MicrosoftSQLServer, MySQL, SybaseASE, TeradataDatabase[1].
По состоянию на март 2009 года среда переведена на японский, испанский, итальянский, немецкий, французский, бразильский португальский, упрощённый китайский и корейский языки.
В среде поддержана возможность создания расширений, обеспечивающих её дополнительными возможностями. Некоторые расширения разрабатываются в корпорации Oracle, есть большая серия расширений, написанная сторонними разработчиками. Например, есть расширения, обеспечивающие картографический просмотр хранимой в базе данных геоинформации или обеспечивающие визуальное создание ER-диаграмм.
Расширенная версия SQLDeveloper, включающая возможность визуального моделирования ER-моделей, генерацию схем данных и реверс-инжиниринг баз данных поставляется как отдельный продукт (также бесплатно), под наименованием SQLDeveloperDataModeler.
Это комплексное, автономное решение поддерживает логическое, реляционное, многомерное моделирование и моделирование типов данных, предлагая возможности многоуровневого проектирования и построения концептуальных диаграмм сущностей и связей (entityrelationshipdiagram, ERD) и их превращения в реляционные модели. Пользователи могут создавать, расширять и модифицировать модели, а также сравнивать их с уже существующими моделями.
«Успешная разработка любого приложения начинается с создания надежной модели данных, — отметил Майк Хичва (MIKE HICHWA), вице-президент по разработке программного обеспечения корпорации Oracle. — Oracle SQL DeveloperDataModeler предлагает не только графический метод разработки моделей данных, но и эффективный способ передачи существующих моделей данных разработчикам приложений».
Инструмент Oracle SQL DeveloperDataModeler
уже поступил в продажу и доступен для
загрузки с web-сайта OracleTechnologyNetw
Модели данных являются мощными коммуникационными средствами, которые используются при инициации новых проектов, а также при консолидации и обновлении существующих проектов.
Oracle SQL DeveloperDataModeler предлагает
множество функциональных
Полный набор физических определений для баз данных — поддерживает такие физические определения как секции, роли и табличные пространства для конкретных версий базы данных в средах с разными СУБД от разных производителей, обеспечивая большую согласованность и повышение продуктивности разработчиков.
Новый инструмент хорошо интегрируется с Oracle SQL Developer — популярным графическим инструментом Oracle для разработки баз данных, — чтобы предоставить разработчикам возможность открывать и просматривать созданные ранее структуры, а также выполнять запросы и формировать отчеты с использованием репозитория отчетов.
Решение Oracle SQL DeveloperDataModeler доступно для всех редакций OracleDatabase 11g и работает в средах Windows, Linux и Mac OS X. Кроме того, предлагается версия для OracleDatabase 10g.
«Сообществу разработчиков
предлагается множество инструментов
моделирования данных, — отметила Мэгги
Томпкинс (MaggieTompkins), гражданская служащая
Корпуса морской пехоты США и многолетний
участник группы пользователей OracleDevelopmen
ЗАКЛЮЧЕНИЕ
В ходе практики ознакомилась с работой предприятия «ЭПАМ Системз». Ознакомился с работой в Oracle SQL Developer. Получил новые знания по SQL.
Выполнил индивидуальное здание по исследованию проклятия Текумсе. Целью задания было сбор данных, проектирование, создание базы данных и анализ полученной информации с применением имеющихся навыков.
Повысил знания в сфере BusinessIntelligence, познакомился с новыми технологиями работы.
Успешно применил знания, полученные в университете по системам управления базами данных. Оказались полезны некоторые навыки объектно-ориентированного программирования, усвоенные за время обучения.
Опыт, полученный во время прохождения производственной практики, будет очень полезен при выполнении дипломного проекта и работы по специальности.
СПИСОК ЛИТЕРАТУРЫ