- •Курсовий проект
- •Анотація
- •Реферат
- •1. Дослiдження предметної областi.
- •1.1. Характеристика функціональної структури предметної області.
- •1.2. Опис вхідних повідомлень
- •1.3 Опис вихідних повідомлень
- •Перелік і опис основних вихідних повідомлень
- •1.4 Опис основних процедур перетворення даних.
- •2. Розробка iнфологiчної моделi.
- •2.1. Логічна модель
- •2.2 Інформаційні об’єкти та їх характеристика.
- •Кінцева інфологічна модель бд
- •Опис складових елементів інформаційних об’єктів
- •3. Проектування даталогічної моделі
- •3.1 Вибір скбд та обґрунтування цього вибору
- •3.2. Автоматизація даталогічного проектування та її результати
- •4. Проектування та реалізація бд на фізичному рівні.
- •4.1. Опис структур таблиць бд
- •4.2. Реалізація запитів та звітів
- •Висновки
3.2. Автоматизація даталогічного проектування та її результати
Erwin надає можливості для вибору різноманітних цільових СКБД, в яких би реалізовувалася створена модель бази даних. Для реалізації ми можемо обрати або SQL-подібну серверну СКБД (Oracle, Informix, InterBase та ін), або настільну СКБД (MS Access, FoxPro, Paradox тощо) та відповідні її параметри, зокрема, тип даних за замовчуванням.
Пакет Erwin використовує механізм ODBC для передачі спроектованої бази даних в середовище обраної СКБД. В моєму курсовому проекті використовується СКБД Microsoft SQL Server 2008.
Модель СКБД автоматично генерується з трансформаційної моделі. Після вибору СКБД Erwin генерує імена таблиць та індекси за шаблонами логічної моделі. Їх можна редагувати у редакторі таблиць і редакторі стовпчиків, які викликаються шляхом активізації відповідної опції у контекстному меню.
При зміні СКБД Erwin пропонує автоматично перетворити типи даних атрибутів на доступні для вибраної СКБД. Для цього досить надати стверджувальну відповідь на відповідний запит.
Отже, на даному етапі спроектовану в ERwin інфологічну модель БД експортуємо в даталогічна модель СКБД Microsoft SQL Server 2008.
Порівнюючи фізичну модель і схему даних можна зробити висновки , що генерація пройшла коректно. Як у фізичній моделі у схемі даних 6 таблиць. Переглядаючи кожну таблицю робимо висновок, що жоден з атрибутів не пропав , а також не з’явилося нових. Структурні зв’язки також були передані правильно.
4. Проектування та реалізація бд на фізичному рівні.
4.1. Опис структур таблиць бд
При проектуванні та реалізації БД на фізичному рівні у середовищі Microsoft SQL Server 2008 створена база даних «Deposit_kurs», яка складається з файлу Deposit_kurs.mdf та включає в себе наступні об’єкти: таблиці, запити, форми та звіти.
Дана база даних має такі створені таблиці:
Розглянемо ці таблиці детальніше:
Client
Deposit
Ugoda
Viddil
Vidsotok
Valuta
Розглянемо таблиці у режимі конструктора
Client
Deposit
Ugoda
Viddil
Vidsotok
Valuta
4.2. Реалізація запитів та звітів
Запити.
Вони забезпечують швидкий та ефективний доступ до даних, що зберігаються в таблицях та надають можливість виконати необхідне сортування, обчислити вираз чи зробити обробку кілька зв’язаних таблиць.
Розглянемо запити детальніше.
Запит про суму коштів за окремим рахунком. Даний запит реалізуємо з умовою рівності коду договору(якщо такий є в таблиці Ugoda). Для цього створюємо запит з текстом (і потім результат на екрані):
SELECT Ugoda.numb_u as'№ Угоди', Client.kod_cl as ‘Код клієнта', Ugoda.suma_dep as 'Сума депозиту', Valuta.sign as 'У валюті',datediff(DD,Ugoda.date_start,Ugoda.date_end) AS ‘Строк депозиту в днях'
FROM Client INNER JOIN
Ugoda ON Client.kod_cl = Ugoda.kod_cl INNER JOIN
Vidsotok ON Ugoda.kod_dep = Vidsotok.kod_dep INNER JOIN
Valuta ON Vidsotok.kod_val = Valuta.kod_val
where Ugoda.kod_cl=2
Запит, що надає інформацію про суму коштів клієнтів за відділами. Створюємо запит , використовуючи функцію суми і умовою рівності атрибуту кода відділу в таблиці Відділ с тим же атрибутом в таблиці Угода. Текст запиту і результат:
SELECT Viddil.adres_vidl as 'Адреса відділу', sum(Ugoda.suma_dep) as 'Сума коштів за цим відділом'
FROM Ugoda INNER JOIN
Viddil ON Ugoda.kod_vidil = Viddil.kod_vidil
where Ugoda.kod_vidil=Viddil.kod_vidil
group by Viddil.adres_vidl
Запит, який надає інформацію про відділ в якому відкрито рахунок з найбільшою сумою. Для цього випростовуємо кладені запити і функцію на пошук максимальних значень. Текст запиту і результат:
SELECT Viddil.*, Ugoda.numb_u, Ugoda.kod_cl, Ugoda.suma_dep
FROM Ugoda INNER JOIN
Viddil ON Ugoda.kod_vidil = Viddil.kod_vidil
where Viddil.kod_vidil=(select kod_vidil from Ugoda where Ugoda.suma_dep=any(select max(suma_dep) from Ugoda))
Запит, який надає інформацію про рахунок, який відкрив окремий клієнт. Запит реалізовується за допомогою пошуку точного значення атрибуту ПІБ клієнта серед всіх , що записані в таблиці Угода. Текст запиту і результат:
SELECT Ugoda.numb_u as'Номер угоди', Ugoda.kod_cl 'Код клієнта', Viddil.adres_vidl'Відділ за адресою', Deposit.name_dep as'Депозит', Ugoda.date_start as'Дата відкриття рахунку', Ugoda.date_end as'Дата закриття рахунку', Ugoda.suma_dep as'Сума на рахунку', Vidsotok.vidsotok as 'Відсоток', Valuta.sign as 'У валюті'
FROM Client INNER JOIN
Ugoda ON Client.kod_cl = Ugoda.kod_cl INNER JOIN
Viddil ON Ugoda.kod_vidil = Viddil.kod_vidil INNER JOIN
Vidsotok ON Ugoda.kod_dep = Vidsotok.kod_dep INNER JOIN
Valuta ON Vidsotok.kod_val = Valuta.kod_val INNER JOIN
Deposit ON Vidsotok.kod_dep = Deposit.kod_dep
where Client.fio_cl='Красін Я.В.'
Запит, який формує облікову відомість рахунків. Запит виконується шляхом виведення всієї інформації всіх рахунків. Текст і результат запиту:
SELECT Ugoda.numb_u as '№ Угоди', Client.fio_cl as 'ПІБ клієнта', Deposit.name_dep as 'Депозит', Ugoda.date_start as 'Дата відкриття рахунку', Ugoda.suma_dep as 'Сума на рахунку', Vidsotok.vidsotok as 'Відсоток',(Ugoda.suma_dep*Vidsotok.vidsotok/100) as 'Дохід', Valuta.sign as ' ', Viddil.adres_vidl as 'Відділ'
FROM Client INNER JOIN
Ugoda ON Client.kod_cl = Ugoda.kod_cl INNER JOIN
Viddil ON Ugoda.kod_vidil = Viddil.kod_vidil INNER JOIN
Vidsotok ON Ugoda.kod_dep = Vidsotok.kod_dep INNER JOIN
Valuta ON Vidsotok.kod_val = Valuta.kod_val INNER JOIN
Deposit ON Vidsotok.kod_dep = Deposit.kod_dep
Звіти. Вони забезпечують найбільш гнучкий спосіб перегляду і друку вихідної інформації. Відмінність звітів від форм полягає в тому, що вони створюються лише для видачі на друк і не мають управляючих елементів для введення даних.
Завершивши всі кроки, необхідні для створення запитів можна легко створити звіти на їх основі.
Приклад звіту на основі запиту, який надає інформацію про відділ в якому відкрито рахунок з найбільшою сумою. Текст звіту і результат:
create view Report3 as
SELECT Viddil.*, Ugoda.numb_u, Ugoda.kod_cl, Ugoda.suma_dep
FROM Ugoda INNER JOIN
Viddil ON Ugoda.kod_vidil = Viddil.kod_vidil
where Viddil.kod_vidil=(select kod_vidil from Ugoda where Ugoda.suma_dep=any(select max(suma_dep) from Ugoda))
По аналогії створюємо інші звіти. Звіти з назвою Report1,Report2…створені відповідно порядку виконаних запитів у курсовому проекті
