Автор: Пользователь скрыл имя, 02 Июня 2013 в 14:23, лабораторная работа
Пакет Oracle Database 10g Express Edition (Oracle Database XE) является свободно распространяемой версией СУБД Oracle. Работа с СУБД выполняется с помощью интуитивно понятного WEB-интерфейса браузера. С помощью этого интерфейса можно выполнять все основные операции по созданию таблиц баз данных, установлению связей между таблицами, вводу данных, созданию запросов, отчетов, администрированию пользователей.
Рассмотрим основные правила работы с этим пакетом.
SELECT * FROM Orders; клавиша <Enter>.
SELECT count(*) FROM Orders; клавиша <Enter>.
Disconnect клавиша <Enter>.
Снова откройте домашнюю страницу, войдя под именем test, пароль – test и посмотрите созданную таблицу через раздел Object Brower.
Цель работы: Научиться создавать базы данных в разных средах и экспортировать данные в другие форматы.
Задание. 1. Создать базу данных в MS Access из таблиц, приведенных ниже.
Задание 2. Создать источник данных DSN для связи с сервером Oracle.
В результате будет установлено соединение с сервером Oracle.
Задание 3.
User Name, Password – которые были указаны при создании Пользователя в среде БД Oracle.
Таблицы для построения Базы данных в Access:
Табл. 1. Студенты
- ID студента (номер студенческого билета)
- ФИО студента
-Домашний телефон
-Номер группы
Табл.2. Сводная экзаменационная ведомость
- ID студента (внешний ключ из табл.1)
-Номер группы
- Оценка 1 (оценка по 1-ому экзамену) – пустое поле
- Оценка 2 (оценка по 2-ому экзамену) – пустое поле
Табл.3 Результаты сдачи экзамена по БД гр. 4206
- ID студента
-Оценка
Примечание: После каждой строки нажать клавишу 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
Задание
Ввести три записи.
Например, r1!Zar = 6000 + 1000 * Int(Rnd() * 10)
«6000» - минимальная зарплата
«1000» - шаг изменения зарплаты
«Int(Rnd() * 10)» - случайное число от 0 до 10.
k=1+(курс евро – 40)*0,1
Задание: Используя в качестве источников табличные данные о результатах продаж, сформировать реляционное хранилище данных по схеме «звезда». (Каждый студент должен разработать свой вариант базы данных). Необходимо сформировать 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 продавца, ФИО, Телефон.
Количество товара |
Скидка, % |
Описание |
5 |
3 |
Скидка в размере 3% при покупке товара от 5 до 10 шт. |
10 |
5 |
Скидка в размере 5% при покупке товара от 10 до 20 шт. |
20 |
7 |
Скидка в размере 7% при покупке товара от 20 и более. |
II. Составить таблицы фактов:
В нашем проекте будет создано две таблицы фактов.
Таблица Заказы будет содержать данные о заказах – номер заказа, ID продавца. ID покупателя и дату совершения заказа
Таблица Подробности заказов содержит данные о товарах, входящих в заказ (от 1 до 3 наименований - это число можно задать в программе) и их количестве. Количество генерируется случайным образом в пределах от 1 до 50 (этот параметр также можно поменять).
Примечание: Эти таблицы будут заполняться автоматически с помощью программ, представленных ниже.
Листинг программы для первой кнопки (заполняем таблицы 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
______________________________
Информация о работе Работа в Oracle Database Express Edition