Работа в Oracle Database Express Edition
Автор: Пользователь скрыл имя, 02 Июня 2013 в 14:23, лабораторная работа
Описание работы
Пакет Oracle Database 10g Express Edition (Oracle Database XE) является свободно распространяемой версией СУБД Oracle. Работа с СУБД выполняется с помощью интуитивно понятного WEB-интерфейса браузера. С помощью этого интерфейса можно выполнять все основные операции по созданию таблиц баз данных, установлению связей между таблицами, вводу данных, созданию запросов, отчетов, администрированию пользователей.
Рассмотрим основные правила работы с этим пакетом.
Работа содержит 1 файл
Data_Bases_Labs_Sept_2010.doc
— 451.50 Кб (Скачать)SELECT * FROM Orders; клавиша <Enter>.
- Выполните просмотр количества записей:
SELECT count(*) FROM Orders; клавиша <Enter>.
- Выполните команду отсоединения:
Disconnect клавиша <Enter>.
Снова откройте домашнюю страницу, войдя под именем test, пароль – test и посмотрите созданную таблицу через раздел Object Brower.
Лабораторная работа № 4.
Экспорт баз данных.
Цель работы: Научиться создавать базы данных в разных средах и экспортировать данные в другие форматы.
Задание. 1. Создать базу данных в MS Access из таблиц, приведенных ниже.
Задание 2. Создать источник данных DSN для связи с сервером Oracle.
- Открыть Меню Пуск \ Настройки \ Панель управления \ Администрирование \ Источники данных ODBC (Control Panel \ Administrative Tools \ Data Sources (ODBC).).
- Вкладка User DSN (Пользовательский DSN).
- Кнопка Add.
- Выбрать из списка Oracle in XE.
- Кнопка Finish.
- Открывается окно: Oracle ODBC Driver Configuration.
- Ввести в окно «Data Sources Name» имя.
- В окне TNS Service Name выбрать в открывающемся списке по стрелке XE.
- OK.
- Откроется список всех имен пользователей.
- ОК.
В результате будет установлено соединение с сервером Oracle.
Задание 3.
- Выделить таблицу, которую необходимо будет экспортировать.
- Файл\Экспорт.
- Открывается окно «Экспорт объекта: Таблица»
- Указать папку, в которой будет сохраняться таблица.
- В строке «Тип файла» из открывающего списка выбрать Базы данных ODBC (ODBC Databases).
- В окне Экспорт указать (или подтвердить) имя таблицы, под каким она будет перемещена в среду Oracle.
- OK.
- В окне, где задано имя test, выделить его. Это же имя отобразится в окне Имя DSN: test.
- ОК.
- В следующем окне ввести данные: Service Name: XE,
User Name, Password – которые были указаны при создании Пользователя в среде БД Oracle.
Таблицы для построения Базы данных в Access:
Табл. 1. Студенты
- ID студента (номер студенческого билета)
- ФИО студента
-Домашний телефон
-Номер группы
Табл.2. Сводная экзаменационная ведомость
- ID студента (внешний ключ из табл.1)
-Номер группы
- Оценка 1 (оценка по 1-ому экзамену) – пустое поле
- Оценка 2 (оценка по 2-ому экзамену) – пустое поле
Табл.3 Результаты сдачи экзамена по БД гр. 4206
- ID студента
-Оценка
Задание:
Задать структуры трех таблиц в СУБД MS Access
Заполнить данными
Перенести таблицы в БД Oracle.
Написать SQL- запрос и перенести данные из табл.3 в табл.2.
Лабораторная работа 5. Выполнение расчетов с использованием программирования в среде Visual Basic for Applications (VBA).
- Создать таблицу Employers. Поля таблицы: Months, Zarplata, Nadbavka. Тип данных – числовой. Имя поля ввести латиницей.
- Заполните поле Months цифрами от 1 до 12.
- Создать пустую форму в режиме Конструктора (выбрать источник данных – пустая строка).
- В меню Вид – Панель элементов, выбрать элементы: Кнопка и Надпись и перенести их на форму.
- В открывшемся диалоговом окне нажать Cancel.
- Щелкнуть правой кнопкой мыши по кнопке. Выбрать Обработка событий – Программа. Открывается диалоговое окно VBA.
Примечание: После каждой строки нажать клавишу Enter.
Private Sub Кнопка0_Click()
Dim dbs As Database, r1 As Recordset ‘определить объектные переменные
Dim n, s, z As Long
Set dbs = CurrentDb ‘текущая БД=currentDb
Set r1 = dbs.OpenRecordset("Employers")
r1.MoveFirst ‘установить курсор на 1 записи
n = r1.RecordCount ‘подсчитать число записей в табл.
Do While Not r1.EOF ‘цикл по записям-пока не дойдет до конца записи
r1.Edit
r1!Zar = 6000 + 1000 * Int(Rnd() * 10) ‘занести данные случайным образом
r1.Update
r1.MoveNext
Loop ‘конец цикла
s = 0
r1!MoveFirst
n = r1.RecordCount
Do While Not r1.EOF
z = r1!Zar
s = s + z
r1.Edit ‘Редактировать таблицу
If z > 6900 Then r1!Nad = 500 Else r1!Nad = 400 'Установить надбавку в зависимости от зарплаты
r1.Update ‘занести исправления в таблицу
r1.MoveNext
Loop
s = s \ n
Надпись1.Caption = s ‘значение средней зарплаты вывести в надпись1
End Sub
- Просмотреть поля таблицы Employers.
- Какие данные отображаются в окне «Надпись1»?
Задание
- Создать 3 таблицы: Таблица 1 – Товары. Поля таблицы – Наименование товара, Базовая цена (тип поля – числовой).
Ввести три записи.
- Таблица 2 – Продажи. Поля таблицы – Месяц, Товар 1, Товар 2, Товар 3, Базовая цена товара, Цена товара.
- Занести данные в столбец Месяц от 1 до 12.
- Таблица 3 – Курс Валюты. Поля таблицы – Месяц, КурсЕвро.
- Занести данные в столбец Месяц от 1 до 12.
- Написать программу на VBA, которая:
- Заполнить случайными числами столбцы Товар 1, Товар 2, Товар 3 в таблице 2.
- Заполнить столбец КурсЕвро случайными числами от 44,5 до 47 с одним знаком после запятой (0,1).
Например, r1!Zar = 6000 + 1000 * Int(Rnd() * 10)
«6000» - минимальная зарплата
«1000» - шаг изменения зарплаты
«Int(Rnd() * 10)» - случайное число от 0 до 10.
- Подсчитать стоимость проданног
о товара по базовой цене. - Подсчитать поле Цена товара, полученную путем умножения Базовой цены на коэффициент k, рассчитываемый по формуле:
k=1+(курс евро – 40)*0,1
Лабораторная работа № 6.
Формирование хранилища данных из разных источников
Задание: Используя в качестве источников табличные данные о результатах продаж, сформировать реляционное хранилище данных по схеме «звезда». (Каждый студент должен разработать свой вариант базы данных). Необходимо сформировать 5-6 таблиц измерений и 2 таблицы фактов в MS Access для дальнейшего переноса в Oracle.
Пример. Рассмотрим базовый пример «Фирма по оптовой продаже комплектующих для компьютера» для выполнения сквозного проекта по курсу «Хранилища данных», варианты которого были даны в лабораторной работе № 4.
Предположим, что наша фирма имеет два филиала, расположенные в разных городах, и есть центральный офис фирмы, в котором обрабатываются результаты продаж по этим регионам и формируется хранилище данных. Конечная цель работы – сформировать общее хранилище данных продаж, составить отчеты по результатам продаж в каждом из филиалов, сделать выводы об эффективности продаж по каждому из филиалов и составить рекомендации по дальнейшей деятельности филиалов.
I. Составить таблицы измерений:
1. Категории товаров (Category), поля: ID категории, Наименование:
(ввести 4-5 категорий)
ID категории |
Наименование_категории |
1 |
Материнская плата |
2 |
Видеокарта |
3 |
HDD |
4 |
Карта памяти |
2. Поставщики (Postavshiki) (ID поставщика, Название, Категория товара, Юридический Адрес, Телефон):
(ввести по 10-12 записей)
3. Товары (Tovary), поля: ID товара, Код категории товара Наименование Товара, Цена за ед., Гарантия:
ввести по 5 записей для каждой категории)
4. Покупатели (Pokupateli), поля: ID Покупателя, Наименование организации, Контактное лицо, Город, Адрес:
(ввести 10-12 записей):
5. Служащие филиала 1: (Prodavci_Filial_1): поля: ID продавца, ФИО, Телефон:
(ввести не менее 5 записей)
5.1. Служащие филиала 2: (Prodavci_Filial_2): поля: ID продавца, ФИО, Телефон.
- Таблица скидок (Table_Skidka), поля: Количество товара, Скидка, Описание:
Количество товара |
Скидка, % |
Описание |
5 |
3 |
Скидка в размере 3% при покупке товара от 5 до 10 шт. |
10 |
5 |
Скидка в размере 5% при покупке товара от 10 до 20 шт. |
20 |
7 |
Скидка в размере 7% при покупке товара от 20 и более. |
II. Составить таблицы фактов:
В нашем проекте будет создано две таблицы фактов.
Таблица Заказы будет содержать данные о заказах – номер заказа, ID продавца. ID покупателя и дату совершения заказа
Таблица Подробности заказов содержит данные о товарах, входящих в заказ (от 1 до 3 наименований - это число можно задать в программе) и их количестве. Количество генерируется случайным образом в пределах от 1 до 50 (этот параметр также можно поменять).
Примечание: Эти таблицы будут заполняться автоматически с помощью программ, представленных ниже.
- Создать структуру таблицы Заказы (TABLE_ZAKAZ): Код подразделения, ID заказа, ID заказчика, Дата заказа, ID продавца:
- Создать структуру таблицы Подробности заказа (TABLE_Detali_zakazov): ID заказа, ID товара, Код филиала, ID Поставщика, Количество, Цена за единицу, Общая цена, Скидка, Цена с учетом скидки:
- Для заполнения таблиц данными создать форму с кнопками, при нажатии которых будут генерироваться данные для заполнения таблиц TABLE_ZAKAZ и TABLE_Detali_zakazov.
- Открыть вкладку Формы\Создать\Конструктор\ОК. Откроется Мастер Формы.
- На панели инструментов выбрать кнопку , щелкнув по ней и перетащив кнопку в поле формы. Открывается Мастер Создание кнопок.
- Нажать кнопку Отмена, которая закроет мастера.
- Щелкнуть правой кнопкой мыши по кнопке, выбрать: Обработка событий\Программы\ОК. При этом открывается окно редактора Visual Basic.
Листинг программы для первой кнопки (заполняем таблицы TABLE_ZAKAZ и TABLE_ Detali_zakazov
' Программа 1.
Private Sub Кнопка0_Click()
Dim nz As Integer
Dim d As String
Dim dbs As Database, r1 As Recordset, r2 As Recordset
Set dbs = CurrentDb
Set r1 = dbs.OpenRecordset("table_
Set r2 = dbs.OpenRecordset("TABLE_
Dim t As Integer
nz = InputBox("Необх.колич-о заказов (не менее 200)", , "200")
nt = InputBox("Число товаров", , "10")
np = InputBox("Число поставщиков", , "6")
nf = InputBox("Код филиала", , "1")
npr = InputBox("Число продавцов в филиале", , "5")
nzz = InputBox("Число покупателей", , "6")
' Заполнение данными таблицы Table_Zakazov "Таблица заказов"
For i = 1 To nz
izz = Int(Rnd * nzz) + 1 ' номер заказчика
ip = Int(Rnd * npr) + 1 ' номер продавца
d = Int(Rnd * 30) + 1
d = d + "."
d2 = Str(Int(Rnd * 12) + 1)
d = d + d2 + "."
d2 = Str(Int(Rnd * 3) + 2006)
d = d + d2
r1.AddNew
r1!ID_filiala = nf
r1!ID_zakaza = i 'Изменяемое поле. Для второго филиала должно=i+1000
r1!ID_pokupatel = izz
r1!Data_zakaza = d
r1!ID_prodavca = ip
r1.Update
Next i
' Заполнение
данными таблицы Table_Detali_
For i = 1 To nz
izz = Int(Rnd * nzz) + 1 ' номер заказа
kz = Int(Rnd * 3) + 1 ' кол.позиций данного заказа (от 1 до 3)
ip = Int(Rnd * npr) + 1 ' номер продавца
For k = 1 To kz
r2.AddNew
r2!ID_filiala = nf
r2!ID_zakaza = i 'Изменяемое поле. Для второго филиала должно=i+1000
r2!ID_tovara = Int(Rnd * nt) + 1
r2!ID_postav = Int(Rnd * np) + 1
r2!Kolichestvo = Int(Rnd * 49) + 1
r2.Update
Next k
Next i
End Sub
______________________________
- Закрыть редактор VBA.
- Сохранить форму под названием Forma_Zakazov.
- Открыть форму с помощью Конструктора и переименовать кнопку на «Сформировать заказы». Закрыть форму.
- Открыть форму и запустить процедуру «Сформировать заказы». В ходе работы программа запросит ввести необходимые данные: Количество заказов – это число определяет, сколько строчек будет внесено в таблицу фактов о заказах. Данные будут разбросаны по месяцам 2006-2008 г.г. Остальные значения должны соответствовать количеству товаров, поставщиков, продавцов, покупателей, внесенных в таблицы измерений.
- Задайте первоначально значения Количества заказов равным 10 записям для проверки работы программы.