Ім'я файлу: Курсова.docx
Розширення: docx
Розмір: 67кб.
Дата: 26.05.2020
скачати
Пов'язані файли:
1_СД_ССР.rtf
Рентген.docx
Стиль Арт-Деко - StudentLib.com.rtf
Документ Microsoft Word (2).docx
Олимпийский вид спорта – прыжки на батуте.docx
148519.doc
Семінар №1. Реферат.docx
Ділення суми на число.Doc

Міністерство освіти та науки України

СУМСКИЙ державний університет

Кафедра комп’ютерних наук
КУРСОВА РОБОТА

на тему:

Розробка інформаційної системи
«Про фiльми та кассовi збори»

Студент Зиков Р.А.
Група ІНз-71с
Варіант 3
Перевірив Кузіков Б. О.
СУМИ 2020

Зміст

Висновки 12




1. Постановка задачі

Інформаційна система містить інформацію про фільми та касові збори фільмів в різних країнах протягом тижня (аналог IMDb). Типовими для ІС є запити:

• Фільми якого жанру є найбільшим касовим в Україні?

• Дослідить дані за кілька років. На якому тижні року касові збори максимальні? (Гіпотеза: на Різдво фільми збирають більше, ніж в середині літа).

• Динаміка касових зборів у країні Х по рокам. На етапі проектування були сформульовані наступні вимоги до ІС: фільм має лише одну країну походження, та віднесений лише до одного жанру. Забезпечте виконання цих бізнес-вимог.

Розширене завдання

В процесі впровадження ІС з’ясувалися наступні особливості: існують фільми, зйомки яких відбувались у декількох країнах, фільми можуть бути віднесені до декількох різних жанрів. Також актуальною є інформація щодо нагород, які отримав фільм (Оскар, Золота малина,...). Створіть сценарій міграції з прототипу на оновлену версію. Які зміни треба зробити у запитах з базового завдання?

Створіть запити, які дадуть відповіді на наступні питання.

• Яку касу зібрали оскароносні фільми 2016 року у перші три тижні свого прокату.

• Топ 5 найбільш касових французьких фільмів?

• «Локальне кіно» Фільми які зібрали у своїй каїні (країнах) більше, ніж у решті країн (світовому прокаті). Проаналізуйте план виконання одного з запитів.

2. Проектування інформаційної системи

    1. Побудова діаграми потоків даних

За умовою завдання інформаційна система потрібна для сайту перегляду фільмів. Можемо припустити що система буде взаємодіяти з переглядачами. Переглядач після перегляду може залишити оцінку на обраний фільм (див. рис. 2.1).



Рисунок 2.1. – DFD 0-го рівня для ІС «Сайт рейтингу фільмів»

Переглядачі можуть дивитися рейтинг других переглядачів та встановлювати свій рейтинг до обраного фільму. Рейтинг автоматично перераховується. (див. рис. 2.2).



Рисунок 2.2. – DFD 1-го рівня для ІС «Сайт рейтингу фільмів»



    1. Проектування бази даних

Побудова бази даних

При аналізі предметної області рейтингу фільмів були виділені такі сховища даних: «Фільм», «Жанр», «Країна», «Рейтинг». Побудуємо ERD діаграму ґрунтуючись на цих сховищах. Сутності «Фільм» і «Жанр» пов’язані відношенням один до багатьох, тому що 1 жанр може мати багато фільмів. Сутності «Фільм» і «Країни» пов’язані відношенням один до одного. . Сутності «Фільм» і «Рейтинг» пов’язані відношенням один до багатьох, тому що один фільм може мати багато оцінок від глядачів (див. рис. 2.3)

Рисунок 2.3 – ERD для ІС «Оцінка рейтингу фільмів»

2.3. Логічна реалізація бази даних

Проаналізувавши сутність, використовувані в моделі ІС, перейдемо до реалізації структури БД. Для цього представимо імена необхідних таблиць, атрибутів, типів, їх призначення та обмеження (див. табл. 2.1).


Таблиця 2.1 - Структура БД


Таблиця

Поле

Зміст

Тип

Ключі

Обмеження



















Movies


id

Id фільму

INTEGER

PK

Не пустий

name

Назва фільму

VARCHAR(100)




Не пустий, унікальний

release_date

Дата випуску

DATE




Не пустий

country_id

Id країни виробництва

INTEGER

FK

Не пустий

genre_id

Id жанру

INTEGER

FK

Не пустий

Oscars_count

Кількість оскарів

INTEGER







Country

id

Id країни

INTEGER

PK

Не пустий

name

Назва країни

VARCHAR(20)




Не пустий

Genre

id

Id жанру

INTEGER

PK

Не пустий

name

Назва жанру

VARCHAR(20)




Не пустий

BoxOffice


id

Id

INTEGER

PK

Не пустий

movie_id

Id фільму

INTEGER

FK

Не пустий

year

Рік показу

INTEGER




Не пустий

week

Тиждень (в рік) показу

INTEGER




Не пустий

country_id

Id країни показу

INTEGER

FK

Не пустий

box_office

Касовий сбір за неділю

NUMBER(7, 2)




Не пустий



3. Фізична реалізація

3.1. Фізична реалізація ІС МОЗ
Сценарій створення структури реляційної БД

Drop table Movies;

Drop table Countries;

Drop table Genres;

Drop table BoxOffice;

Create table Movies

(

id INTEGER PRIMARY KEY,

name VARCHAR(100) NOT NULL UNIQUE,

release_date DATE NOT NULL,

country_id INTEGER NOT NULL REFERENCES Countries(id),

genre_id INTEGER NOT NULL REFERENCES Genres(id),

oscars_count INTEGER NOT NULL

);

Create table Countries

(

id INTEGER PRIMARY KEY,

name VARCHAR(20) NOT NULL UNIQUE

);

Create table Genres

(

id INTEGER PRIMARY KEY,

name VARCHAR(20) NOT NULL UNIQUE

);

Create table BoxOffice

(

id INTEGER PRIMARY KEY,

movie_id INTEGER NOT NULL REFERENCES Movies(id),

year INTEGER NOT NULL,

week INTEGER NOT NULL,

country_id INTEGER NOT NULL REFERENCES Countries(id),

box_office NUMBER(7,2) NOT NULL

);


3.2.Реалізація типових запитів

Яку касу зібрали оскароносні фільми 2016 року у перші три тижні свого прокату:
select name, [sum]

from (

select m.name,

sum(b.box_office) as [sum],

row_number() over(partition by m.id order by b.year, b.week) week_num

from movies m

join boxoffice b on m.id = b.movie_id

where exists(select 1 from oscar_film o where o.movie_id = m.id)

) s

where s.week_num <= 3

Топ 5 найбільш касових французьких фільмів?

select top(5) m.name, sum(b.box_office) [sum]

from movies m

join country c on m.country_id = c.id

join boxoffice b on m.id = b.movie_id

where c.name = 'France'

order by [sum] desc

«Локальне кіно» Фільми які зібрали у своїй каїні (країнах) більше, ніж у решті країн (світовому прокаті).

select m.name

from movies m

where ( select sum(b.box_office)

from boxoffice b

where m.country_id = b.country_id )

>

( select sum(b.box_office)

from boxoffice b

where m.country_id != b.country_id )

Додаток А. Сценарій заповнення БД ІС


INSERT INTO Countries VALUES (1, ‘США’);

INSERT INTO Countries VALUES (2, ‘Германия’);

INSERT INTO Countries VALUES (3, ‘Франция’);

INSERT INTO Countries VALUES (4, ‘Великобритания’);

INSERT INTO Countries VALUES (5, ‘Швеция’);
INSERT INTO Genres VALUES (1, ‘Комедия’);

INSERT INTO Genres VALUES (2, ‘Триллер’);

INSERT INTO Genres VALUES (3, ‘Боевик’);

INSERT INTO Genres VALUES (4, ‘Ужасы’);

INSERT INTO Genres VALUES (5, ‘Мюзикл’);
INSERT INTO Genres VALUES (1, ‘Фильм 1’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 1, 1, 0);

INSERT INTO Genres VALUES (2, ‘Фильм 2’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 2, 1, 2);

INSERT INTO Genres VALUES (3, ‘Фильм 3’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 1, 2, 1);

INSERT INTO Genres VALUES (4, ‘Фильм 4’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 3, 1, 0);

INSERT INTO Genres VALUES (5, ‘Фильм 5’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 4, 1, 0);

INSERT INTO Genres VALUES (6, ‘Фильм 6’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 1, 5, 0);

INSERT INTO Genres VALUES (7, ‘Фильм 7’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 3, 3, 0);

INSERT INTO Genres VALUES (8, ‘Фильм 8’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 4, 2, 1);

INSERT INTO Genres VALUES (9, ‘Фильм 9’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 3, 5, 0);

INSERT INTO Genres VALUES (10, ‘Фильм 10’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 5, 2, 2);

INSERT INTO Genres VALUES (11, ‘Фильм 11’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 3, 2, 1);

INSERT INTO Genres VALUES (12, ‘Фильм 12’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 2, 3, 0);

INSERT INTO Genres VALUES (13, ‘Фильм 13’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 5, 5, 0);

INSERT INTO Genres VALUES (14, ‘Фильм 14’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 2, 2, 0);

INSERT INTO Genres VALUES (15, ‘Фильм 15’, TO_DATE('2019-01-01', 'YYYY-MM-DD'), 4, 4, 0);
INSERT INTO BoxOffice VALUES (1, 1, 2019, 1, 1, 10000);

INSERT INTO BoxOffice VALUES (2, 1, 2019, 1, 2, 10000);

INSERT INTO BoxOffice VALUES (3, 1, 2019, 1, 3, 10000);

INSERT INTO BoxOffice VALUES (4, 1, 2019, 1, 4, 10000);

INSERT INTO BoxOffice VALUES (5, 1, 2019, 1, 5, 10000);

INSERT INTO BoxOffice VALUES (6, 2, 2019, 1, 1, 10000);

INSERT INTO BoxOffice VALUES (7, 2, 2019, 2, 1, 10000);

INSERT INTO BoxOffice VALUES (8, 2, 2019, 3, 1, 10000);

INSERT INTO BoxOffice VALUES (9, 3, 2019, 1, 4, 10000);

INSERT INTO BoxOffice VALUES (10, 3, 2019, 2, 4, 10000);

INSERT INTO BoxOffice VALUES (11, 3, 2019, 3, 4, 10000);

INSERT INTO BoxOffice VALUES (12, 4, 2019, 1, 1, 10000);

INSERT INTO BoxOffice VALUES (13, 4, 2019, 1, 2, 10000);

INSERT INTO BoxOffice VALUES (14, 4, 2019, 1, 3, 10000);

INSERT INTO BoxOffice VALUES (15, 5, 2019, 2, 2, 10000);





Висновки


При виконанні курсової роботи була спроектована і реалізована база даних ІС «надає інформаційну систему, яка містить інформацію про фільми та касові збори фільмів в різних країнах протягом тижня». Побудовані DFD (0 та 1 рівня) і ERD діаграми концептуальної моделі даної інформаційної системи. Реалізовано сценарії створення і заповнення бази даних, а також реалізовані типові запити, а саме:

  • Яку касу зібрали оскароносні фільми 2016 року у перші три тижні свого прокату.

  • Топ 5 найбільш касових французьких фільмів.

  • «Локальне кіно» Фільми які зібрали у своїй каїні (країнах) більше, ніж у решті країн (світовому прокаті).

скачати

© Усі права захищені
написати до нас