Контрольная работа по дисциплине «базы данных»




Скачать 456.13 Kb.
НазваниеКонтрольная работа по дисциплине «базы данных»
страница10/11
Дата публикации23.04.2013
Размер456.13 Kb.
ТипКонтрольная работа
skachate.ru > Информатика > Контрольная работа
1   2   3   4   5   6   7   8   9   10   11

Задание 2





  1. Упорядочить файл GROUP по датам рождения отдельно для мужчин и женщин.

  2. Упорядочить файл STUDY по названиям предмета.

  3. Упорядочить файл GROUP по номеру полиса отдельно для мужчин и женщин.

  4. Упорядочить файл GROUP по фамилиям отдельно для мужчин и женщин.


Для проверки выполнения задания студент должен выслать в текстовом виде команды FOX PRO, выполняющие задания 1-4.
^



3. Установление связей между файлами

Понятие о рабочих областях



В FoxPro можно обрабатывать сразу несколько файлов баз дан­ных. Каждый такой файл типа DBF и все вспомогательные файлы (например, индексные) открываются в своей отдельной рабочей области. Переход из области в область осуществляется командой

  • SELECT <рабочая область/псевдоним>

Первые десять рабочих областей идентифицируются номерами 1-10 или буквами А - J. Области с 11-й по 25-ю обозначаются но­мерами или буквенно-цифровыми именами W11 - W25. Область, в которой мы находимся в данный момент, называется активной рабочей областью и в ней можно работать с находящейся здесь базой данных, используя все допустимые команды системы. Одновременно даже в одной команде можно иметь доступ (с неко­торыми ограничениями) к полям других баз. В этом случае имя по­ля из неактивной области – составное. Имени поля тог­да предшествует имя рабочей области, разделенные знаками «-» и «>« или (что более удобно) точкой:

<рабочая область > - > <имя поля>

или

<рабочая область>.<имя поля>
Например, следующие составные имена для поля FAM из базы KADR.DBF идентичны, если эта база открыта в области А или 1:

^ KADR.FAM, A.FAM, KADR->FAM, A->FAM.

При входе в СУБД активизируется область 1 (или А), и, если вы работаете только с одной базой, заботиться об открытии областей не нужно.
Пример. В файле KADR среди прочих содержатся сведения о фамилиях и табельных номерах работников, а в файле BRIG1 - о табельных номерах TAB и выработке VIR. Необходимо по фами­лии (например, МИРОНОВ) из файла KADR найти его выработку из файла BRIG1.

^ CLOSE DATA

HSE kadr - открытие файла KADR.DBF

USE brigl IN 0 -открытие BRIG1.DBF в свободной области

LOCATE FOR fam='МИРОНОВ' - поиск записи с фамилией МИРОНОВ

SELECT brigl - переход в область BRIG1

LOCATE FOR tab=b.tab - поиск записи в файле BRIG1 с табельным номером МИРОНОВА

? a.fam, tab, vir - выдача данных из обеих баз

^ МИРОНОВ Р.И. 468 204000
Замечание. Как уже говорилось, в команде USE можно одновременно указывать и область, в которой открывается база данных. Однако переход в указанную область при этом не происходит. Так, после выполнения команд USE brig1 IN 0 мы все равно остаемся в текущей области А.
^

Установление связей между файлами



В FoxPro допускается работа сразу с несколькими базами данных в при этом возможно установление связей между ними. Указатели записей в таких связанных базах будут двигаться синхронно. База, в которой указатель движется, произвольно, счи­тается старшей, а база/базы, в которой указатель следует за указа­телем старшей базы, - младшей. В старшей и младших базах долж­ны быть поля, несущие какой-то общий признак, иначе, хотя связь и возможна, она будет бессмысленна. Допускается сцепление одной базы с несколькими другими. Младшие базы, в свою очередь, могут быть связаны с базами следующего уровня и т.д.

Возможно установление двух типов связей между записями двух сцепленных баз данных. Связь типа одна-запись-к-одной переме­щает указатель в младшей базе таким образом, что он всегда уста­навливается в младшей на первую встреченную им запись с совпадающим признаком. Остальные такие записи (если есть) остаются «не заме­ченными». Эта связь устанавливается просто командой SET RELATION. Связь типа одна-запись-ко-многим позволяет обра­титься ко всем записям младшей базы с совпадающим признаком (команды SET RELATION и SET SKIP TO).

Оба типа связей могут быть распространены на несколько баз сразу.
^

Связь вида одна-запись-с-одной



Команда

SET RELATION TO <ключ> INTO <область>

[,<ключ> INTO <область>...] [ADDITIVE]

связывает указатель записей в активной рабочей области с указателями записей из других рабочих областей, имена которых указа­ны после слова INTO, по заданному общему полю (ключу). Един­ственное условие - файл, с которым устанавливается связь, должен быть проиндексирован по этому полю.

Пример. Связать файлы KADR.DBF и BRIG1.DBF по полю TAB. Вывести для каждого табельного номера файла BRIG1.DBF соответствующую фамилию и выработку.

USE brigl IN a

USE kadr INDEX kadrftab IN b

SET RELATION TO tab INTO Ь

LIST tab,vir,b.fam
Record # TAB VIR B.FAM

^ 1 98 446000 ПОТАПОВ Д.П.

2 6 480072 КУЛАКОВА М.И.

3 13 120000 СИДОРОВ П.С.

4 468 204000 МИРОНОВ Р.И.
Здесь выведены записи файла BRIG1.DBF, в которые включено поле соответствующих им фамилий KADR.DBF (B.FAM).

В FoxPro имеется возможность устанавливать связи с нескольки­ми базами одновременно. Если со старшим файлом, который уже связан с другим, необходимо связать некоторый третий (четвертый и т.д.), следует во все последующие команды SET RELATION включить слово ADDITIVE, которое обеспечит сохранение связей, установленных ранее.

Связь между всеми файлами разрывается командой SET RELATION ТО без параметров. Связь с отдельным файлом в заданной <области> - командой

^ SET RELATION OFF INTO <область>
Для сохранения созданной связи используют команду
CREATE VIEW < имя файла связи>
Открыть файл связи можно при помощи команды
SET VIEW TO < имя файла связи>

^

Связь вида одна-запись-со-многими



Следующая команда устана­вливает связь такого типа между двумя или несколькими базами данных:

  • SET SKIP TO [<область1> [,<область2>]... ]

При этом с каждой записью из старшей базы могут быть сцепле­ны несколько записей из младшей базы. Связь может быть устано­влена сразу с несколькими младшими базами, находящимися в ука­занных <областях>.

Прежде чем использовать команду SET SKIP TO, необходимо выполнить начальное сцепление вида одна-запись-с-одной коман­дой SET RELATION.

Удаление связи одна-запись-со-многими осуществляется коман­дой SET SKIP ТО без параметров.

Пример. Пусть в бригадных файле BRIG3.DBF некоторые табельные номера могут встречаться несколько раз (например, если фиксируются выработки каждого работника по отдельным нарядам). Допускаем также, что рабочие могут рабо­тать сразу в нескольких бригадах. Требуется для каждой фамилии и табельного номера из базы KADR.DBF предъявить все выработ­ки данного работника из баз BRIG3.DBF и BRIG5;DBF, которые проиндексированы по полю TAB (индексы BRIG3.IDX и BRIG5.IDX). browse-окно показано на рис. 1., решение приве­дено ниже:
SELECT a

USE kadr IN a && Открытие старшей базы области А

USE brig3 IN b INDEX brig3 && Открытие младшей базы в области В

USE brig5 IN с INDEX brig5 && Открытие другой младшей базы в С

* Установление связи одна-с-одной базы KADR.DBF с

* базами BRIG3.DBF, BROG5.DBF

SЕТ RELATION TO tab INTO b, tab INTO с

* Установление связи одна-со-многими базы KADR.DBF с

SЕТ SKIP TO b,c && базами BRIG3.DBF и BRIG5.DBF

BROWSE FIELDS a.fam :Н='Фамилия' .a.tab :Н='Табель',;

b.tab :Н='Таб/БригЗ',b.vir :Н='Выр/БригЗ', ;

с,tab :Н='Таб/Бриг5',с.vir :Н='Выр/Бриг5'

ЗЕТ RELATION TO && Отмена всех связей


Фамилия

Табель

Таб/Бриг3

Выр/Бриг3

Таб/Бриг5

Выр/Бриг5

Ефимов А.П.

▒▒▒▒▒▒▒▒▒▒▒▒▒▒

▒▒▒▒▒▒▒▒▒▒▒▒▒▒

446

▒▒▒▒▒

▒▒▒▒▒

446

446

446

280050

130000

446

446

446

50000

80065

10020

Ларионов Т.С.

▒▒▒▒▒▒▒▒▒▒▒▒▒▒

321

▒▒▒▒▒

321

321

25070

60000

321

321

650000

Рис. 1
Для наглядности здесь выведены табельные номера работников из всех бригад. Видим, что ЕФИМОВ А.П. с табельным номером 446 в файле BRIG3.DBF имеет две записи, а в файле BRIG5.DBF - три, ЛА­РИОНОВ Т.С. в бригаде номер 3 - две записи, а в бригаде номер 5 -одну. Здесь повторяющиеся поля из старшей базы отображены симво­лом заполнения. Для быстрого перемещения от записи к записи в старшей базе можно использовать клавиши Ctrl-<вниз>/<вверх>.
Хотя клавиши дополнения и удаления (Ctrl-N, Ctrl-T) здесь до­ступны, они действуют только на старшую базу. Если при этом нужно, чтобы что-то происходило и с младшими базами, следует их перепрограммировать.

Команды DISPLAY/LIST предъявляют записи похожим образом, но для каждой сцепленной записи из младших баз значения полей из старшей базы будут повторяться. Ниже приведен результат вы­полнения команды
LIST a.fam,a.tab, b.tab,b.vir,c,tab,c.vir OFF :
A.FAM A.TAB B.TAB B.VIR C.TAB C.VIR

^ ЕФИМОВ А.П. 446 446 280050 446 50000

ЕФИМОВ А.П. 446 446 130000 446 80065

ЕФИМОВ А.П. 446 446 0 446 100020

ЛАРИОНОВ Т.С. 321 321 25070 321 650000

ЛАРИОНОВ Т.С. 321 321 60000 321 0

Рассмотренный пример соответствует сцеплению одной базы с одной. При этом реализовано два уровня данных. База KADR.DBF образует старший, первый уровень, а база BRIG3.DBF второй уровень (рис.2,).



Рис. 2 Рис.3

Сцепление баз можно распространить и на большее число уровней. Например, пусть имеется три базы данных (<база1>, <база2>, <база3>), в которых содержатся данные о предприятиях, цехах для всех предприятий и участках для всех цехов всех предприятий (рис..3). Необходимо связать эти базы таким образом, чтобы для каждой текущей записи из базы предприятий указатель записей базы цехов становился на первую запись, где находятся сведения о цехе, принадлежащем данному предприятию, а указатель в базе участков - на запись с информацией об участке этого цеха. Есте­ственно, что все базы должны иметь поля, позволяющие осущест­вить их содержательное сцепление: база цехов должна иметь поле с названиями предприятий, а база участков - поле с названиями предприятий и поле с номерами цехов. Именно по этим полям должно быть сделано индексирование.

В отличие от предыдущего примера, где сцепление базы KADR.DBF выполнялось со всеми подчиненными базами сразу, здесь команды SET RELATION TO вводятся по мере перемещения из области в область. Схема организации связей приведена ниже:

USE <бава1> IN a

USE <баэа2>^ IN b INDEX <ивдекс2>

USE <бава3> IN с INDEX <индекс3>

SELECT a
SET RELATION ТО <ключ базы1> INTO Ь &&Сцепление Базы1 с Базой2

SELECT Ь

SET RELATION ТО <ключ базы2> INTO с &&Сцепление Баэы2 с БазойЗ

Связь между базами может быть установлена не только по неко­торому ключевому полю, как показано в примерах, но и по номеру записи, если в качестве <ключа> в команде SET RELATION ис­пользовать функцию RECNOQ. Это позволяет, при необходимости соединить две «параллельные» базы. Такая ситуация может возникнуть, если в базе должно быть более 255 предельно допустимых полей. В этом случае можно организовать вторую базу, являющуюся продолжением первой, и связать их по номеру записи как показано ниже.

USE bazal

USE baza2 IN О

SET RELATION TO RECNO (‘bazal') INTO baza2

&& связывание

SROWSE FIELDS bazal.<поле>,baza2.<поле>

&& просмотр

Аппарат сцепления баз командой SET RELATION является мощным средством доступа к «родственным» данным. Однако поскольку такое сцепление влечет синхронное перемещение указателей записей во всех подчиненных базах вслед за перемещением указателя в главной базе, это может отнимать много времени в случае, если доступ к младшей базе в данный момент не нужен. Поэтому часто бывает целесообразным временное разъ­единение баз. Во многих случаях вообще лучше прибегнуть к поиску нужной записи командой/функцией SEEK, нежели установлению постоянной связи.

1   2   3   4   5   6   7   8   9   10   11

Похожие:

Контрольная работа по дисциплине «базы данных» iconРабота с резервной копией базы данных пк «Школьный офис» (методические рекомендации)
Резервное копирование базы данных осуществляется с целью защиты введенной информации от потери в случае повреждения базы данных,...
Контрольная работа по дисциплине «базы данных» iconКурсовая работа по дисциплине «Базы данных в информационных системах»
Формы как средство добавления, просмотра, удаления, изменений параметров базы данных
Контрольная работа по дисциплине «базы данных» iconЛабораторная работа №5 По дисциплине: «Сетевые базы данных»
Составить и выполнить программу pl/sql, которая считывает из базы данных среднюю величину всех заказов после 03. 01. 2009 г., и выводит...
Контрольная работа по дисциплине «базы данных» iconКонтрольная работа по дисциплине Базы данных Требования к выполнению контрольной работы
...
Контрольная работа по дисциплине «базы данных» iconКонтрольная работа по дисциплине «Проблемно-ориентированные вычислительные системы»
Цель работы: выполнить анализ предметной области, построить еr-модель базы данных, составить проекты таблиц для их создания в базе...
Контрольная работа по дисциплине «базы данных» icon1. Базы данных в Rational Rose
Но когда дело доходит до разработки базы данных, то широко распространенной практикой является создание моста из case-средства, реализующего...
Контрольная работа по дисциплине «базы данных» iconМетодические указания для выполнения лабораторных работ и курсового...
Лабораторная работа №1 «Построение структуры базы данных»
Контрольная работа по дисциплине «базы данных» iconМетодические указания для выполнения лабораторных работ по дисциплине «Базы данных и знаний»
Базы данных – это организованная структура, предназначенная для хранения информации
Контрольная работа по дисциплине «базы данных» iconКурсовая работа по предмету «Базы Данных». Тема: 21. Разработка базы данных зоопарка
«Общими указаниями по организации, методике проведения и правилам оформления курсовых проектов и работ»
Контрольная работа по дисциплине «базы данных» iconПояснительная записка Контрольно-измерительные материалы по дисциплине «Базы данных и субд»
Контрольно-измерительные материалы по дисциплине «Базы данных и субд» предназначены для проверки знаний студентов 3-го курса математического...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
контакты
skachate.ru
Главная страница