Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ovdiyenko_O_V_6101-_3kurs-1grupa.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
821.05 Кб
Скачать

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…створені відповідно порядку виконаних запитів у курсовому проекті

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]