русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Зв’язок типу Один-До-Багатьох.


Дата додавання: 2014-05-22; переглядів: 2606.


 
 

Наступний приклад показує як використати макроси для створення кнопки “вихід” (повернутися). У нас є форма “Таблиця2Групи”(рис.4.) у якій реалізована кнопка “Виклик

Рис.4. Головна форма і підлегла їй діаграма з кнопками керованими макросами.

діаграми” котра при натисканні виконує макрос 3 (рис.5) і виводить на екран відповідну діаграму (рис4).


Рис. 5. Макрос 3 та 4 в режимі проектування.

У свою чергу у формі діаграми створена кнопка “Вихід” (рис.4) котра дає змогу повернутись у вихідну форму. При натисканні кнопки “Вихід” виконується макрос 4 (рис.5).

 

Лекція № Зв’язок між таблицями.

Access дозволяє створювати реляційні БД, основою яких є організація зв’язків між таблицями. Access враховує ці зв’язки при корекції даних в таблицях та при створенні запитів, звітів.

Для встановлення зв’язку між таблицями необхідно вибрати команду “схема даних” із меню “сервіс”. Далі необхідно добавити (вибрати) таблиці між якими буде створюватись зв’язок вибравши відповідну позицію з меню “зв’язки” (або з меню що з’являється при натисканні правої клавіші миші). У центральному вікні виводиться список таблиць БД. Необхідно помітити потрібні для зв’язків і дати команду “добавити”. У вікні схеми даних з’являються образи вибраних таблиць між якими треба створити зв’язок.

Для створення зв’язку потрібно при допомозі мишки перетягнути поле, яке буде використане для зв’язку (звичайно це ключове поле або індексоване, яке не допускає повторення даних у цьому полі) із списку полів головної таблиці на відповідне поле підлеглої (зв’язаної) таблиці.

В діалоговому вікні “зв’язки” (Relationships), яке з’явиться на екрані, необхідно вибрати параметри зв’язку і натиснути кнопку “створити” (Create).

Встановлений зв’язок відобразиться лінією, яка з’єднує зв’язані поля із списку полів. При цьому буде забезпечене відношення Один-до-Багатьох (One-To-Many) або Оди-До-Одного (One-To-One), що відобразиться в області тип зв’язку (Relations). Конкретно можливий тип зв’язку залежить від властивостей полів, котрі зв’язуються.

Дві опції Cascade Update Related Fields (каскадне обновлення полів) і Cascade Deleted Related Records (каскадне викидання записів), які доступні при включеному індикаторі Enforce Referential Integrity забезпечують каскадне обновлення полів і каскадне знищення записів в зв’язаних таблицях БД.

Розглянемо різні типи зв’язків між таблицями.

1. Зв’язок типу Оди-До-Одного.

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

Іншими словами, зв’язуються ідентичні ключеві поля і один запис головної таблиці зв’язаний з одним і тільки одним записом зв’язаної таблиці.

Розглянемо властивості такого типу зв’язку при включених вимогах на цілісність даних та каскадне оновлення та знищення.

Для встановлення такого зв’язку число записів у головній таблиці повинне бути більшим або рівним числу записів у зв’язаній таблиці, при цьому усі дані (вміст поля, яке зв’язується,) зв’язаної таблиці повинні співпадати з даними головної таблиці (див. рис 1).

Головна таблиця   Зв’язана таблиця
Поле1 Поле2 Поле3   Поле3 Поле4
А1     А2  
А2     Б2  
  Б1        
  Б2        
             

 

Рис. 1.

В іншому випадку Access не дозволить встановити зв’язок між заповненими таблицями. Встановлювати зв’язок такого типу між незаповненими таблицями немає сенсу бо внесення нового запису у головну таблицю (цей тип зв’язку це дозволяє) не супроводить ся перенесенням її у зв’язану таблицю а зміни у зв’язаній таблиці не допускаються.

При заповнених полях зв’язаних таблиць у головну таблицю можна добавляти записи але вони не переносяться у зв’язану. Добавляти записи у зв’язану таблицю не дозволяється, за винятком коли число записів у головній таблиці більше ніж у зв’язаній і добавляється запис, який у зв’язаному полі має відповідні головній таблиці дані. Так, наприклад, у зв’язану таблицю на рис.1 можна додати запис Б1 та А1.

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

Якщо заборонити каскадне оновлення та знищення записів (при включеній умові цілісності даних (Enforce Referential Integrity ) т програма не дозволить скоректувати чи викинути дані не тільки у зв’язаній таблиці а і у головній.

Такий тип зв’язку можна створити між декількома полями таблиць або між великою кількістю таблиць.

На рис.1 та рис.2 показані вихідні таблиці на основі яких створюється зв’язок типу Один-До-Одного, який показаний на рис.3.

"Порядковий_номер" "Назва_кафедри" "Назва_групи" "№__залік_студентів" "П_І_П"
"Радіофізики" "р-11" "Ісько Іван Степанович"
"Радіофізики" "п-12" "Абрамів Сергій Васильович"
"Радіофізики" "р-51" "Петрів Петро Іванович"
"Радіофізики" "о-12" "Парів Степан Степанович"
"Радіофізики" "р-33" "Яців Ярослав Іванович"

Рис.2

 

"Номер_запису" "№_залік_студентів" "П_І_П" "Розмір_стипендії"
"Ісько Іван Степанович" 23,00 грн.
"Абрамів Сергій Васильович" 45,00 грн.
"Петрів Петро Іванович" 0,00 грн.
"Парів Степан Степанович" 33,00 грн.
"Яців Ярослав Іванович" 77,00 грн.

Рис.3.

 

 

 
 

Рис.4

Зв’язок типу Один-До-Багатьох.

Вимоги до головної таблиці аналогічні попереднім. Поле головної таблиці що зв’язується повинно бути принаймні індексованим без повторень або ключовим а полу зв’язаної таблиці повинно бути ключовим з допустимими повтореннями даних. Тоді одному запису головної таблиці можуть бути поставленні у відповідність декілька записів зв’язаної таблиці.

Наприклад як показано на рис.5, головна таблиця містить поле із назвами кафедр (які не можуть повторюватись) а зв’язана таблиця даних про студентів теж містить поле назв кафедр на яких вони навчаються.

 

Головна таблиця   Зв’язана таблиця
Назва кафедри   Номер студента Назва кафедри
Каф1   Каф1
Каф2   Каф1
Каф3   Каф3
Каф4   Каф3

Рис.5

 

Такого типу зв’язок є найбільш поширений у реляційних базах даних.

Зв’язок цього типу має схожі властивості як і попередній але тут дозволяється викидати записи у зв’язаній таблиці а коректувати – ні.

При виборі параметрів зв’язаності полів є можливість задати ще один параметр – тип об’єднання. За замовчуванням використовується тип об'єднання, при якому з обох чи таблиць запитів відбираються тільки ті записи, що містять однакові значення в об'єднаних полях. Якщо значення в цих полях однакові, запит комбінує два відповідні записи з обох таблиць і відображає їх як один запис у динамічному наборі даних. Якщо для записів однієї таблиці немає відповідних записів з іншої таблиці, то ніякі записи не будуть показані в результатах запиту. Такий тип об'єднання називається внутрішнім.

Приклад такого зв’язку показаний на рис.6.

 


Рис.6.

Особливості створення реляційних зв’язків у випадку коли у полях використовуються підстановки.

Покажемо проблеми, які виникають у цьому випадку на конкретному прикладі. Ми БД з трьох таблиць (рис.7): “ТаблицяНазвКафедр”, “ТаблицяГрупи”, “ОсновніДаніПроСтудента” котрі містять дані про студентів, групи та кафедри до яких вони належать. Встановлення зв’язків між таблицями по полях назв кафедр та назвах груп значно полегшить нам роботу при роботі з БД. При заповненні таблиць “ТаблицяГрупи” та “ОсновніДаніПроСтудента” можна значно полегшити ввід даних використавши майстер підстановок, при встановленні властивостей полів “Належність кафедрі” та “Кафедра”, використавши, як джерело, поле “Назва кафедри” таблиці “ТаблицяНазвКафедр”.

 
 

Тому можна запропонувати наступний порядок створення БД:

1. Створити макети таблиць БД.

2. Встановити зв’язки типу Один-До-Багатьох між полями “Назва кафедри” (таблиця “ТаблицяНазвКафедр”) та “Належність кафедрі” (таблиця “ТаблицяГрупи”) і “Кафедра” (таблиця “ОсновніДаніПроСтудента”).

3. Встановити зв’язки типу Один-До-Багатьох між полями “Назва групи” (таблиця “ТаблицяГрупи” ) та “Групи” (таблиця “ОсновніДаніПроСтудента”).

Рис.7. Таблиці БД.

 

4. Заповнити таблицю “ТаблицяНазвКафедр”).

5. Корекція властивостей полів “Належність кафедрі” та “Кафедра” – організація вводу даних у ці поля на основі списку кафедр поля “Назва кафедри” таблиці “ТаблицяНазвКафедр”.

6. Заповнення таблиці “ТаблицяГрупи”.

7. Корекція властивостей поля “Група” таблиці “ОсновніДаніПроСтудента” – організація вводу даних у це поле на основі списку імен груп з поля “Назва групи” таблиці “ТаблицяГрупи”.

8. Заповнення таблиці “ОсновніДаніПроСтудента”).

Треба зауважити, що у двох перших таблицях немає полів “Номер запису” з властивостями “Лічильник”, бо у них ( як нам здається) немає потреба, а ключовими полями є перші у списку полів.

Отримана схема даних показана на рис. 8. На схемі відображені створені зв’язки між полями таблиць. Крім того, використання полів таблиць, як списку даних для інших полів , теж відображені на схемі лініями які свідчать про зв’язок між даними цих полів.

 

Рис.8. Схема даних створеної БД.

 



<== попередня лекція | наступна лекція ==>
Приклад 2. | Лекція 8. Звіт як продукт аналізу БД.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн