Упражнение 6

Създаване  и редактиране на релации

 

Релациите са необходими, за да се установи връзка между логически свързаните данни, които са разположени в различни таблици: да могат да се показват и обработват чрез една и съща заявка, форма, отчет, интернет страница като се запазва цялостността и логическите връзки между данните.

Има три типа релации:(фиг.1)

­       Едно към едно

­       Едно към много

­       Много към много


 

Най-често се използват връзките “едно към много”. Връзките от тип “много към много” не могат да се създават директно между две таблици. За да бъдат осъществени, трябва да се използва трета свързваща таблица. На фиг.1 връзката Titles-Authors  е от тип “много към много” и за да се реализира е използвана междинната таблица Title Author.

За да бъдат свързани две полета с връзка не се изисква те да имат едно и също име, но за да може да се установи референциалният интегритет те трябва да са от един и същи тип, освен ако не са AutoNumber. Поле от тип AutoNumber може да се свърже с поле от тип Number или Long Integer само ако свойствата им FieldSize имат една и съща стойност.

1. Създаване на връзки от тип “едно към едно” или “едно към много”

1.      Затварят се всички отворени таблици. Не могат да се създават връзки между отворени таблици

2.      Натиска се F11 за да се отвори прозорецът на базата (Database window)

3.      Натиска се бутонът Relationships (фиг. 2) и се отваря прозорецът Relationships (фиг. 1)


4.       

Ако таблиците, които ни трябват не са показани, кликва се с десния бутон на мишката върху празно място в областта на прозореца Relationships и от появилото се меню се изпълнява команда Show Table, която отваря прозореца Show Table

5.        След като покажем нужните таблици в прозореца Relationships затваряме Show Table чрез бутона Close.

6.        За да създадем връзката между таблиците, влачим първичния ключ от едната и го поставяме върху подобно на него поле (от същия тип и често същото) от другата таблица, което става външен ключ. Появява се прозорецът Edit Relationships (Фиг. 4)


7.       В прозореца Edit Relationships определяме характеристиките на създадената връзка – отметката в чекбокса “Enforce Referential Integrity” означава че Access ще осигури референциалната цялост на данните, които свързва тази връзка, отметката в чекбокса “Cascade Update Related Records” означава, че при промяна на стойност на полето първичен ключ в родителската таблица автоматично ще бъде извършена същата промяна във всички записи със стойността на този ключ в свързаното поле в дъщерната.  Отметката в чекбокса “Cascade Delete Related Records” означава, че при изтриване на запис в родителската таблица автоматично ще бъдат изтрити всички записи със стойността на този ключ в свързаното поле в дъщерната таблица.Cascade Update Related Records” и “Cascade Delete Related Records”е възможно да бъдат установени само в случай че е поставена отметка в чекбокса “Enforce Referential Integrity”, а референциалната цялост на данните може да бъде установена само ако свързващото поле в родителската таблица е първичен ключ или е индексирано и са забранени повторенията, свързаните полета имат един и същи тип на данните и са в една и съща база.Ако искаме да разрешим промени, които нарушават референциалната цялост, не трябва да поставяме отметка в “Enforce Referential Integrity”. В случай че в “Enforce Referential Integrity” има, а в “Cascade Update Related Records” и “Cascade Delete Related Records” няма отметки, Access няма да позволи промяна на стойността на свързващото поле, нито изтриване на записи от тези таблици.

8.      Чрез бутона за определяне на типа на връзката бихме могли да определим дали искаме вътрешна, лява външна или дясна външна връзка между таблиците.(Фиг. 5)


2. Редактиране на вече създадени връзки:

        става чрез двойно кликване  (ляв бутон) на мишката върху линията, символизираща релацията или кликване с десен бутон върху линията, символизираща релацията и избор на команда Edit Relationships от появилото се контекстно меню.

3. Изтриване (унищожаване) на връзки:

        чрез кликване с десен бутон върху линията, символизираща релацията и избор на команда Delete от появилото се контекстно меню.

 

 

Задача 1. Създайте в съответствие с методологията на предходните упражнения следните таблици :

таблица N_Empl :

полета : ЕmplID, Name, Address, Phone

тип данни: Autonum, Text, Text, Text

първичен ключ ЕmplID

 

таблица N_Order:

полета : OtderID, Customer, ЕmplID,  OrderDate

тип данни: Autonum, Text, number, Date/Time

първичен ключ OtderID

 

Направете между тях връзка тип “едно към много”. За целта:

-                      отворете прозореца на връзките чрез бутон Relationships  от лентата с инструменти. Визуалшират се свързаните таблици във вид на прозорчета и съществуващите релации между тях чрез линии, свързващи съответните им полета.

-                      добавете новите таблиците в прозореца Relationships като чрез десния бутон  на мишката извикате контекстното меню на прозореца и изпълните Show Table, а после маркирайте последователно  таблици N_Empl и N_Order и чрез Add Table  ги добавете    към   областта за   дефиниране   на   релации.    Избраните   таблици   се визуализират във вид на прозорчета със списък на имената на принадлежащите им полета.

-                       създайте чрез влачене връзката и установете референциалната   цялост - Маркирайте полето ЕmplID от таблица N_Empl и задържайки натиснат левия бутон на мишката, влачете курсора до попадането му върху полето ЕmplID от таблица N_Order.   При  отпускането   на  бутона  се  визуализира  диалогов   прозорец  (Edit Relationships)    за създаване и/или редактиране на релации между таблици. Друг начин за активиране на прозореца е двойно кликване върху празната част от полето на екрана Relationships

-                      активирайте полетата за референциална цялост Enforce Referential Integrity и   натиснете  бутон   Сreаtе.   Системата  визуализира новосъздадената релация между таблиците във вид на начупена линия, свързваща съответните полета. Връзката е от типа “едно към много”.

След създаването на релация между таблиците, се натиска бутона "Х" (с1оse). Следва записване за съхранение на направените корекции и изход към главното меню Database.

Въведете два записа в родителската и 4 – в дъщерната таблица. Опитайте да променяте стойностите на данните в свързващите полета и да изтриете запис от родителската таблица. Какви проблеми възникват?

Каква е ролята на отметките в Cascade Update Related Records” и  Cascade Delete Related Records”? Поставете отметка първо в “Cascade Update Related Records”, повторете горните опити за триене и промяна, после поставете отметка и в “Cascade Delete Related Records” и още веднъж ги повторете. Какъв е резултатът?

4. Създаване на връзки от тип “много към много”

1.      Създаваме двете таблици, които искаме да свържем с връзка “много към много”

2.      Създаваме трета допълнителна свързваща таблица, в която създаваме две полета със същите характеристики като първичните ключове в двете таблици, които искаме да свържем с изключение на това, че в новата таблица те не са първични ключове, а ще изпълняват ролята на външни ключове. Свързващата таблица може да има или да няма други полета.

3.      Създаваме връзки от тип “едно към много” между нашите таблици и свързващата таблица по познатия вече начин.

 

Задача 2. Да се създаде нова база, в нея да се направят две таблици: Authors  и Books с полета съответно AuthorId, Name, Family, BookId, Title, Date, Pages, Да се изберат подходящи ключове, тип на данните, ограничения и да се създаде връзка от тип “много към много” между двете таблици. За целта използвайте трета таблица, която съдържа полетата AuthorId и BookId като свързваща.

 

 

4.     Създаване на връзки с Lookup Wizard

Основното предназначение на този тип връзки е да се осигури възможност за избор на данни от една таблица в полетата на други таблици като се ползват падащи списъци. Това е особено полезно когато за някои от съхраняваните в базата данни се допускат само краен (неголям) брой фиксирани стойности. Тогава те се въвеждат в една таблица и навсякъде където са необходими се избират (напр. Учебните предмети в едно училище).Чрез избора се улеснява въвеждането, спестява се памет  и се избягват грешки.

За създаване на такъв тип връзки Access разполага с помощник Lookup Wizard, който се стартира от изгледа Design на съответната таблица (Фиг. 6)


 

На първата стъпка в диалоговия прозорец се избира дали данните ще се въвеждат от вече създаденатаблица или просто ще се напишат като списък. Ако ще ги използваме само в една таблица бихме могли да използваме вторанта възможност. Тогава се появява диалогов прозорец, в който можем да си въведем списъка (той може да съдържа няколко колони), на следващата стъпка се дава име на този списък и след приключване на работата на помощника той вече се използва за избор в съответната колона, откъдето е стартиран. Характеристиките на този тип връзка се изобразяват в панела Lookup  в изгледа Design на таблицата, от която е създадена. Типът на използвания контрол определя използването и. Той може да се избира измежду три възможности: List Box, Text Box  и Combo Box. Ако той е List Box то в съответното поле входът ще се осъществява само чрез избор измежду предлоените възможности. Ако той е Combo Box то в съответното поле входът ще се осъществява чрез избор измежду предлоените възможности или пряко въвеждане на стойност. Ако той е Text Box  то в съответното поле входът ще се осъществява само чрез пряко въвеждане на стойност. Така можем да изключим Lookup връзката.

В случай че смятаме да избираме съответните стойности от повече от една таблици ще е удобно да ги съхраним в отделна таблица и на първа стъпка на Lookup Wizard да посочим, че ще избираме от таблица. Тогава на втора стъпка се появява прозорецът на фиг. 8, от който ще изберем таблицата със стойностите за избор.

 


 

На стъпка 3 подбираме полетата, които ще се включват в избора (може и да са повече от едно) и на четвърта стъпка виждаме стойностите, измежду които ще можем да избираме.

 


Тогава в панела Lookup  в изгледа Design на таблицата, от която е създадена връзката се изобразяват характеристиките на връзката като връзка между таблици и съответно характеристиките на избираемите полета от родителската таблица (фиг. 10) Връзката  е от тип “едно към много”

 


 

Задача 3. . Да се създаде нова база, в нея да се направят три таблици: Uchenic, Predmeti  и ocenki с полета съответно EGN, Name, Family, TEL_N, Predmet, EGN, Predmet, ocenka, data. Да се изберат подходящи ключове, тип на данните, ограничения, маски и да се създаде връзка от тип Lookup” между Predmeti  и ocenki и връзкаот тип «едно към много» между Uchenic и ocenki.