Додатові відомості про зв’язування таблиць 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Додатові відомості про зв’язування таблиць



В результаті зв’язування двох таблиць можуть утворюватись динамічні набори даних.

В кожній із таблиць є ключове поле. Записи в таблицях упорядковуються за значеннями ключового поля. Хоча б одна із зв’язуваних таблиць має первинний ключ. Множину значень ключів позначимо К1 та К2 відповідно для кожної із таблиць, як схематично вказано на Рис 5.3.

 
 

 

Рис. 5.3. Схема зв’язування таблиць

 

Позначимо ці множини як

К1= {k11, k12 …,k1n}, К2= {k21, k22 …,k2m}

Не завжди К1=К2, тобто необов’язково множини значень ключів співпадають. Ця обставина впливає на спосіб утворення динамічних наборів.

При утворенні динамічних наборів зв’язаних таблиць поточні записи однієї таблиці доповнюються відповідними записами другої таблиці. Нехай поточний запис таблиці1 буде позначено Р. Відповідність записів встановлюється по співпаданню значень ключа (k= k). Позначимо відповідний запис у іншій таблиці як В.

Якщо К1=К2, то поточний записдинамічного набору утворюється як об’єднання Р U В, або схематично запис динамічного набору можна представити

як показано нижч

 
 

Така ситуація описується за допомогою SQL у реченні FROM наступним чином:

 

FROM таблица_1 INNER JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2,

 

Якщо К1¹К2, то говорять про зовнішнє об’єднання. При зовнішньому об’єднанні таблиць уточнюють наступне:

1. записи якої з таблиць поповнюються відповідними записами зв’язаної таблиці;

2. як діяти, якщо відсутній відповідний запис у зв’язаній таблиці.

Якщо при формуванні динамічного набору поповнюються записи однієї таблиці (умовимся називати її таблицяР) записами іншої таблиці, то у результуючу таблицю включаються усі записи таблиціР). Такою таблицеюР у різних ситуаціях може бути або таблиця 1 або таблиця 2. Якщо таблицеюР є таблиця 1, то говорять про створення лівого зовнішнього об’єднання, бо у наших позначеннях таблиця 1 розташована зліва і у реченні FROM в аргументах записується першою

 

FROM таблица_1 LEFT JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2,

 

Схематично запис, що утворюється при лівому зовнішньому об’єднанні можна вказати, використовуючи введені позначення, розглянувши дві ситуації:

2. Якщо відповідний запис у таблиці2 відсутній, то поточний запис формується як вказано на схемі, що подається нижче:

 
 

Якщо таблицеюР є таблиця 2 то говорять про створення правого зовнішнього об’єднання, бо у наших позначеннях таблиця 2 розташована праворуч, а у реченні FROM в аргументах записується другою

 

FROM таблица_1 RIGHT JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2,

 

Схематично запис, що утворюється при правому зовнішньому об’єднанні можна вказати, використовуючи введені позначення, розглянувши дві ситуації:

1. Якщо відповідний запис у зв’язаній таблиці існує, то поточний запис результуючої таблиці формується так, як схематично показано на схемі, наведеній нижче:

 
 

 

2. Якщо відповідний запис у зв’язаній таблиці - відсутній, то поточний запис результуючої формується так, як схематично показано на схемі, наведеній нижче без заповнення полів, що відповідають зв’язаній таблиці.

 
 

Вкажемо аргументи операцій з’єднання у реченні FROM.

Аргумент Опиc
таблица_1, таблица_2 Імена таблиць, записи яких належить об’єднати.
поле_1, поле_2 Імена полів. Якщо ці поля не є числовими, то повинні мати однаковий тип даних і вміщувати дані одного типу, однак, поля можуть мати різні імена.
Оператор Любий оператор порівняння: "=," "<," ">," "<=," ">=," або "<>".

 

 

Якщо потрібно включити у результат лише записи, що мають однакові значеннях у полях зв’язку, то використовують операцію INNER JOIN.

Операції LEFT JOIN, RIGHT JOIN можуть вкладатись у операцію INNER JOIN, але не навпаки.

Поля типу МЕМО не об’єднуються.

Поле зв’язку не буде включатись у результуючу таблицю, якщо воно не включено в речення SELECT.

Щоб зв’язати кілька речень ON в JOIN, використовують наступний синтаксис:

 

SELECT поля

FROM таблица_1 INNER JOIN таблица_2

ON таблица_1.поле_1 оператор таблица_2.поле_1 AND

ON таблица_1.поле_2 оператор таблица_2.поле_2) OR

ON таблица_1.поле_3 оператор таблица_2.поле_3)];

Висновки:

1. Таким чином, системи управління базами данних Access дозволяють розробити невичерпне число різноманітних запитів необхідних користувачеві.

2. Кожному запиту на мові QBE відповідає тотожній по результатам SQL-запит, але у зворотньому порядку це незавжди вірно.

3. SQL-запитизабезпечують:

¨ формування джерел даних для полів зі списком;

¨ визначення обчислювальних полів;

¨ фільтрацію даних.


6. Вибранні питання роботи з операторами SQL, що змінюють структуру бази даних

 

Існує особливий тип запитів, які створюються користувачами в Конструкторі запитів за допомогою інструкцій SQL та команди меню Запит, Запит SQL. До останніх відносять;

· Запит SQL, Объединение - забезпечує злиття даних кількох джерел (Таблиць/запитів), що мають однакову структуру даних;

· Запит SQL, К серверу – за допомогою такого запиту можнастворити запит до сервера;

· Запит SQL, Управление – призначений для створення, модифікації структури таблиці програмним способом.

 

Створення таблиці

 

 

Розглянемо приклад: за допомогою SQL створити структуру таблиці “Контролер”, яка має у своєму складі два поля:

¨ Цілочислене поле Код контролера, являє собою первинний ключ;

¨ Текстове поле “Пр” дл я зберіганняпрізвища контролера.

Для створення структури вказаної таблиці потрібно виконати наступні дії:

1. Перейти на вкладку “Запити» у вікні бази даних, натиснути <Cоздать>, вибрати Конструктор, таблиці для конструктора запитів не відбирати.

2. Виконати команду меню Запрос, Запрос SQL, Управление.

3. У вікні Управлющий запрос набрати інструкцію:

 

CREATE TABLE [Контролер] ([Код контролера] SINGLE, [Пр] CHAR (50));

 

Вказана інструкція відповідає синтаксису CREATE TABLE, див. також Розділ 3.1.

 

CREATE TABLE таблиця (поле_1 тип [(размер)]

[NOT NULL] [индекс_1] [, поле_2 тип [(размер)]

[NOT NULL] [индекс_2] [,...]] [, CONSTRAINT составнойИндекс [,...]])

 

Аргументи інструкції CREATE TABLE вказані в табл.3.2.

Інструкція CREATE TABLE вміщує дані про типи та розміри створюваних полів.

Виконання запиту (меню Запрос, Запуск), не супроводжується виведенням на монітор таблиці. Щоб пересвідчитись у тому, що створено нову порожню таблицю необхідно відкрити вкладку Таблицы, віднайтиновостворену таблицю та відкрити її у табличному режимі та Конструкторе Таблиц (щоб перевірити результат виконання управляючого запита). Зазначимо, що запит на створення та запит SQL на створення порожньої таблиці - абсолютно різні запити і мають різні іконки:

 
 

Структуру нової таблиці можна створювати програмно. У такому випадку необхідно задати (для кожного поля створюваної таблиці) типи даних.

В системі управління базами данних Access базовою мовою є VB, тому для практичного використання буде корисним співставлення наборів типів даних, представлених у вигляді наступної таблиці.

У першому стовпчику таблиці наведено типи даних, які доступні у режимі конструктора Таблиц або можуть бути вказані значення властивості Размер поля (FieldSize).

У другому стовпчику перераховані відповідні типи даних запитів, які доступні у режимі конструктора для запитів в діалоговому вікні Параметры запроса (Сервис, Параметры).

У третьому стовпчику перераховуються відповідні типи даних Visual Basic.

У четвертому - перераховуються типи даних об’єкта доступа до даних (DAO) Field, а у п’ятому відповідні типи даних SQL ядра бази Jet, а також допустимі синоними до них.

Зазначимо, що Таблиця заповнена на російській мові відповідно до русифікованої версіії системи управління базами данних Acces.


Типи даних

Поля Таблиць Параметри запитів Visual Basic Константи властивості Type об’єкта Field Мова SQL ядра бази
Не підтримує Двоичный Не підтримує Не підтримує BINARY (синоним: VARBINARY)
Логический Логический Boolean dbBoolean BOOLEAN(синоніми: BIT, LOGICAL, LOGICAL1, YESNO)
Числовой (Размер поля = Байт) Байт Byte dbByte BYTE(синонім: INTEGER1)
Счетчик (Размер поля = Длинное целое) Длинное целое Long dbLong COUNTER (синонім: AUTOINCREMENT)
Денежный Денежный Currency dbCurrency CURRENCY(синонім: MONEY)
Дата/время Дата/время Date dbDate (синоніми DATE, TIME, TIMESTAMP)
Числовой (Размер поля = С плавающей точкой (8 байт)) С плавающей точкой (8 байт) Double dbDouble (синоніми: FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC)
Числовой або Счетчик (Размер поля = Код репликации) Код репликации Не підтримує dbGUID GUID
Числовой (Размер поля = Длинное целое) Длинное целое Long dbLong LONG ((синоніми: INT, INTEGER, INTEGER4))
Поле об’єкта OLE Поле об’єкта OLE String dbLongBinary LONGBINARY(синоніми: GENERAL, OLEOBJECT)
Поле МЕМО Поле МЕМО String dbMemo LONGTEXT (синоніми: LONGCHAR, MEMO, NOTE)
Числовой (Размер поля = С плавающей точкой (4 байт)) С плавающей точкой (4 байт) Single dbSingle SINGLE(синоніми: FLOAT4, IEEESINGLE, REAL)
Числовой (Размер поля = Целое) Целое Integer dbInteger SHORT  
Текстовый Текстовый String dbText TEXT(синонимы: ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR)
Гиперссылка Поле МЕМО String dbMemo LONGTEXT  
Не підтримує Значение Variant Не підтримує VALUE

 

Microsoft Access підтримує наступні управляючі інструкції.

 

Інструкції Призначення інструкцій
· CREATE TABLE створює таблицю
· ALTER TABLE додає нове поле або індекс в існуючу таблицю ·
DROP вилучає таблицю з бази даних або вилучає індекс, ви значень для поля чи групи полів
· CREATE INDEX створює індекс для поля чи групи полів.

Зауваження! При перетворенні управляючого запиту в запит іншого типу, напиклад, у запит на вибірку, введена інструкція SQL буде втрачена.

· Для створення або зміни об’єктів бази даних на сервері ODBC, наприклад, Microsoft SQL Server, слід використовувати запити до сервера, а не управляючі запити.

Для створення поля з підстановкою можна використати інструкцію:

SELECT DISTINCTROW Контролер.Пр, Контролер.[Код контролера]

FROM Контролер;

Приклад створення таблиці з індексацією

CREATE TABLE Нова

([Код_контролера] integer,

[Прізвище] text,

[Ім’я] text,

[ДатаКонтракту] date,

[Телефон] text,

[Примітка] memo,

CONSTRAINT [Индекс1] PRIMARY KEY ([Код_контролера]));


Створення таблиці на основі запиту

Якщо потрібно створити нову таблицю, яка наповнюється даними бази даних на основі раніше розробленого запиту (див., наприклад,Табл. 5. 1.), то необхідко у відповідному запиті вказати ім’я створюваної таблиці. Вкажемо ім’я “Вартість тестувань ”:

SELECT Запит21.* INTO [Вартість тестувань]

FROM Запит21;

 

У даному прикладі була використана інструкція SELECT...INTO

Синтаксис, якої наведено нижче

 

SELECT поле_1[, поле_2[,...]] INTO новаяТаблиця [IN внешняяБазаДаних ]

FROM источник

 

Аргументы інструкції SELECT...INTO:

 

Аргумент Опис
поле_1; поле_2 Імена полів, які слід скопіювати у нову таблицю.
внешняяБазаДаних Шлях до зовнішньої бази даних
Источник Ім’я існуючої таблиці, з якої вибираюь записи. Це може бути одна Таблиця кілька Таблиць або запит.

 

Запит на створення таблиці можна використовувати для архівування, створення резервних копій таблиці, копій для експорта в іншу базу даних, а також у якості основи звітів, що відтворюють дані за конкретний період часу.

Зауваження:

· У новій таблиці можна визначити ключ. При створенні таблиці поля в новій таблиці наслідують типи даних і розміри базових полів; ніякі інші властивості Таблиц та полів не передаються.

· Для додавання даних в існуючу таблицю використовують інструкцію INSERT INTO замість запита на додавання записів.



Поделиться:


Последнее изменение этой страницы: 2016-06-29; просмотров: 189; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.234.141 (0.032 с.)