Отчет по практике в ИООО «ЭпамСистемз»

Автор работы: Пользователь скрыл имя, 28 Июня 2015 в 16:00, отчет по практике

Описание работы

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

Содержание работы

Введение …………………………………………………………………………3
1. Ознакомление с деятельностью и структурой предприятия ………………4
2. Задание от предприятия ……………………………………………………...9
3. Разработка и создание базы данных ………………………………………...11
4. Изучение Oracle SQL Developer……………………………………………...21
Заключение………………………………………………………………………24
Литература ……………………

Файлы: 1 файл

otchet_po_praktike.docx

— 470.60 Кб (Скачать файл)

Опишем для чего нужна каждая из показанных таблиц:

    • president – хранит всю необходимую информацию, относящуюся исключетельно к президентам США,
    • election – хранится информация о годах проведения выборов и победивших кандидатах,
    • party – хранятся названия всех партий,
    • vice_president – хранится вся информация о вице-президентах,
    • president_m2m_president – вспомогательная таблица для обеспечения связи типа «Многие-ко-многим» между таблицами president и vice_president.

 

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

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_id));

Для заполнения полученных таблиц необходимо импортировать денормализованные таблицы, хранящие всю необходимую нам информацию, в нашу базу данных, а затем заполнить созданные таблицы импортированными данными. Для импорта таблиц воспользуемся стандартными средствами 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.winner)

  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_name);

 

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.presidential)

JOIN vice_president vpr ON (imp_pvp.vice_president=vpr.vice_president_name);

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.president_name)

  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(inauguration,'YYYY')),20)=1)

AND (to_number(to_char(inauguration,'YYYY'))>=1840);

 

Рисунок 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=vpr.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.president_id)

JOIN vice_president vc ON (pvp.vice_president=vc.vice_president_id)

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_president_birth)>0 THEN 'No'

        WHEN (president_birth-vice_president_birth)<0 THEN 'Yes'

      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 предоставляет  продукт бесплатно. Сама среда  написана на языке программирования Java, работает на всех платформах, где доступна среда выполнения Java SE.

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-сайта OracleTechnologyNetwork (OTN).

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

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

  • Визуальное моделирование взаимосвязей между сущностями — поддерживает нотации Баркера и Бахмана, чтобы разработчики могли переключаться между моделями для удовлетворения потребностей клиентов или для создания и сохранения различных визуальных представлений моделей.
  • Ускоренное преобразование ERD-моделей в реляционные модели – трансформация всех правил и решений, сделанных на концептуальном уровне, в реляционную модель, в которой детали уточняются и обновляются.
  • Разделение реляционной и физической моделей — позволяет разработчикам создавать одну реляционную модель для разных версий базы данных или для разных баз данных, включая OracleDatabase, IBM DB2 V7 и V8 для платформ Linux, UNIX, Windows и OS/390, а также Microsoft SQL Server 2000 и 2005.

Полный набор физических определений для баз данных — поддерживает такие физические определения как секции, роли и табличные пространства для конкретных версий базы данных в средах с разными СУБД от разных производителей, обеспечивая большую согласованность и повышение продуктивности разработчиков.

Новый инструмент хорошо интегрируется с Oracle SQL Developer — популярным графическим инструментом Oracle для разработки баз данных, — чтобы предоставить разработчикам возможность открывать и просматривать созданные ранее структуры, а также выполнять запросы и формировать отчеты с использованием репозитория отчетов. 

Решение Oracle SQL DeveloperDataModeler доступно для всех редакций OracleDatabase 11g и работает в средах Windows, Linux и Mac OS X. Кроме того, предлагается версия для OracleDatabase 10g.

«Сообществу разработчиков предлагается множество инструментов моделирования данных, — отметила Мэгги Томпкинс (MaggieTompkins), гражданская служащая Корпуса морской пехоты США и многолетний участник группы пользователей OracleDevelopmentToolsUserGroup (ODTUG). — И надо выбрать из них один, который не только позволяет создавать модели данных, но обеспечивает выгоды организации. Мы были одними из первых пользователей Oracle SQL DeveloperDataModeler, и знаем, что это решение предлагает обширные возможности и является простым в использовании. Много лет обучая других моделированию данных, мне приходилось значительную часть аудиторного времени посвящать изучению самого инструмента. Oracle SQL DeveloperDataModeler полностью изменил ситуацию. Он настолько интуитивно понятен, что мы можем посвящать время реальной модели данных, ее содержанию и значению, а не тому, как пользоваться инструментом».

 

ЗАКЛЮЧЕНИЕ

 

В ходе практики ознакомилась с работой предприятия «ЭПАМ Системз». Ознакомился с работой в Oracle SQL Developer. Получил новые знания по SQL.

Выполнил индивидуальное здание по исследованию проклятия Текумсе. Целью задания было сбор данных, проектирование, создание базы данных и анализ полученной информации с применением имеющихся навыков.

Повысил знания в сфере BusinessIntelligence, познакомился с новыми технологиями работы.

 Успешно применил знания, полученные в университете по системам управления базами данных. Оказались полезны некоторые навыки объектно-ориентированного программирования, усвоенные за время обучения.

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

 

СПИСОК ЛИТЕРАТУРЫ

  1. Интернет энциклопедия wikipedia [Электронный ресурс]. – Электронные данные. – Режим доступа: http://ru.wikipedia.org/wiki/Oracle_SQL_Developer.
    1. Harper, Sue .Oracle SQL Developer 2.1Packt Publishing, с. 496,
  1. Интернет энциклопедия wikipedia [Электронный ресурс]. – Электронные данные. – Режим доступа: http://ru.wikipedia.org/wiki/Business_Intelligence
  2. H. P. Luhn A Business Intelligence System. Packt Publishing, с. 237.

 

 

 


Информация о работе Отчет по практике в ИООО «ЭпамСистемз»