
- •1.Субд FoxPro 2.0. Команды создания, открытия и закрытия бд. Рабочие области.
- •Краткая характеристика foxpro
- •2.Субд FoxPro 2.0.Коменда изменения структуры бд,дополнения и редактирования.
- •3. Команды FoxPro: If и Case.
- •4. Циклы в foxpro while, for, scan
- •5 Структура команд субд FoxPro
- •Команды вывода list и display
- •Команды перемещения по базе данных
- •Функции, связанные с указателем записи
- •Команды удаления данных
- •Команда изменения значения поля бд
- •Ускоренный поиск
- •Приблизительный поиск
- •8.Команда создания новой базы данных.
- •9 Команда sql по дополнению бд
- •Команда sql по дополнению бд
- •10 Команда sql по удалению записей (для Visual FoxPro)
- •Команда sql по удалению записей (для Visual FoxPro)
- •11 Общий вид команды формирования запроса select.
- •Указание результатов выборки и источника данных
- •Указание объекта, куда пересылается выборка:
- •Критерий отбора данных:
- •Группировка данных
- •Сортировка данных
- •12 Нормализация структуры данных.
- •Нормализация данных при реляционном подходе
- •Нормализация структуры данных
- •13 Нормализация отношений.
- •Пример нормализации отношений
- •14 Реляционные операторы.
- •Традиционные операции над множествами. Объединение (union).
- •Пересечение (intersect).
- •Вычитание (minus).
- •Произведение (times).
- •15 Специальные реляционные операторы: выборка, проекция, соединение, деление. Выборка (where)
- •Проекция [ ].
- •Соединение ( join ).
- •Деление (divideby)
- •Примеры реляционных выражений.
Проекция [ ].
Определение: Проекцией
A[X,Y,...,Z]
отношения A по атрибутам X, Y, ...,Z, где каждый из атрибутов принадлежит отношению A, называется отношение с заголовком {X,Y,...,Z} и телом, содержащим множество всех кортежей отношения A, за исключением повторяющихся.
Никакой атрибут не может быть указан в списке атрибутов более одного раза. Проекция дает вертикальное подмножество исходного отношения. Примеры проекций.
S [CITY]
________
| CITY |
|________|
| London |
| Paris |
| Athens |
|________|
(S WHERE CITY='Paris') [S#]
_____
| S# |
|____|
| S2 |
| S3 |
|____|
P [COLOR,CITY]
________________
| COLOR | CITY |
|_______|________|
| Red | London |
| Green | Paris |
| Blue | Rome |
| Blue | Paris |
|_______|________|
Соединение ( join ).
Операция соединения имеет несколько разновидностей. Наиболее важным является естественное соединение JOIN.
Пусть отношения A и B имеют заголовки {X1,X2,...,Xm,Y1,Y2,...,Yn} и {Y1,Y2,...,Yn,Z1,Z2,...,Zp} соответственно, то есть атрибуты Y1,Y2,...,Yn- общие для двух отношений. Предположим так же, что атрибуты с одинаковыми именами определены на на одном и том же домене. Будем рассматривать выражения {X1,X2,...,Xm}, {Y1,Y2,...,Yn} ,{Z1,Z2,...,Zp} как три составных атрибута X, Y, Z соответственно.
Определение: Естественным соединением
A JOIN B
отношений A и B называется отношение с заголовком {X,Y,Z} и телом, содержащим множество всех кортежей {X:x,Y:y,Z:z}, таких, для которых в отношении A значение атрибута A равно x, атрибута Y равно y, и в отношении B значение атрибута Y равно y, атрибута Z равно z.
Соединение обладает свойствами ассоциативности и коммутативности.
Если отношения A и B не имеют общих имен атрибутов, то выражение (A JOIN B) эквивалентно (A TIMES B), то есть естественное соединение превращается в декартово произведение.
Пример естественного соединения.
S JOIN P по общему атрибуту CITY
___________________________________________________
|S#|SNAME|STATUS|CITY |P#|PNAME |COLOR|WEIGHT|
|__|_____|______|______|__|______|_____|______|
|S1|Smith| 20 |London|P1|Nut |Red | 12 |
|S1|Smith| 20 |London|P4|Screw |Red | 14 |
|S1|Smith| 20 |London|P6|Cog |Red | 19 |
|S2|Jones| 10 |Paris |P2|Bolt |Green| 17 |
|S2|Jones| 10 |Paris |P5|Cam |Blue | 12 |
|S3|Blake| 30 |Paris |P2|Bolt |Green| 17 |
|S3|Blake| 30 |Paris |P5|Cam |Blue | 12 |
|S4|Clark| 20 |London|P1|Nut |Red | 12 |
|S4|Clark| 20 |London|P4|Screw |Red | 14 |
|S4|Clark| 20 |London|P6|Cog |Red | 19 |
|__|_____|______|______|__|______|_____|______|
θ -соединение.
Пусть отношения A и B не имеют общих имен атрибутов и θ определяется так же, как и в операции выборки. Тогда θ -соединение отношения A по атрибуту X с отношением B по атрибуту Y называется результат вычисления выражения
(A TIMES B) WHERE X θ Y
Деление (divideby)
Пусть отношения A и B имеют заголовки {X1,X2,...,Xm,Y1,Y2,...,Yn} и {Y1,Y2,...,Yn} соответственно, то есть атрибуты Y1,Y2,...,Yn- общие для двух отношений. Предположим также, что атрибуты с одинаковыми именами определены на одном и том же домене. Пусть теперь выражения {X1,X2,...,Xm} и {Y1,Y2,...,Yn} обозначают два составных атрибута X и Y соответственно.
Определение. Делением
A DIVIDEBY B
отношений A и B называется отношение с заголовком {X} и телом, содержащим множество всех кортежей {X:x}, таких что существует кортеж {x:x,Y:y}, который принадлежит отношению A для всех кортежей {Y:y}, принадлежащих отношению B.
Примеры на деление.
Пусть делимое- это отношение DELE, которое является проекцией отношения SP по атрибутам S# и P#. Делитель - это отношение DEL. Рассмотрим три варианта.
DELE
_________
| S# | P# |
|____|____|____________
| S1 | P1 | | S2 | P1 |
| S1 | P2 | | S2 | P2 |
| S1 | P3 | | S3 | P2 |
| S1 | P4 | | S4 | P2 |
| S1 | P5 | | S4 | P4 |
| S1 | P6 | | S4 | P5 |
|____|____| |____|____|
1) DEL 2) DEL 3) DEL
___ ___ ___
| P#| | P#| | P#|
|___| |___| |___|
| P1| | P2| | P1|
|___| | P4| | P2|
|___| | P3|
| P4|
| P5|
| P6|
|___|
DELE DIVIDEBY DEL
1) 2) 3)
___ ___ ___
| S#| | S#| | S#|
|___| |___| |___|
| S1| | S1| | S1|
| S2| | S4| |___|
|___| |___|
В примере 3) делитель содержит номера всех деталей. Следовательно, в результате получаются номера поставщиков поставляющих все детали. Оператор деления полезен для запросов такого рода. То есть, если запрос на обычном языке включает слово "все", то почти наверняка понадобится операция деления.