Ръководство за релации на таблици

Ръководство за релации на таблици

Една от целите на доброто проектиране на бази данни е да премахнете излишъка на данни (дублираните данни). За да постигнете тази цел, трябва да разделите вашите данни в множество тематично обособени таблици, така че всеки факт да е представен само веднъж. След това трябва да предоставите на Access начин за възстановяване на разделената информация  – като поставите общи полета в таблици, които са свързани. За да направите обаче тази стъпка правилно, трябва да откриете релациите между вашите таблици и след това да зададете тези релации в базата данни.

В тази статия

Въведение

Типове релации между таблици

Защо се създават релации между таблици?

Разбиране на целостта на връзките

Показване на релации между таблици

Въведение

След като във вашата база данни сте създали таблица за всяка тема, трябва да предоставите на Access средства, с които да събира отново тази информация, когато ви е нужна. Можете да направите това, като поставите общи полета в таблиците, които са свързани, и дефинирате релации между таблиците. Тогава можете да създавате заявки, формуляри и отчети, които показват информация от няколко таблици едновременно. Например формулярът, показан тук, съдържа информация, извлечена от няколко таблици:

Формуляр за поръчки, показващ едновременно свързана информация от пет таблици

1. Информацията за този формуляр идва от таблицата "Клиенти"...

2. ...таблицата "Поръчки"...

3. ...таблицата "Продукти"...

4. ...и таблицата "Подробни данни за поръчките".

Името на клиента в полето За изплащане от е извлечено от таблицата "Клиенти", стойностите на "ИД на поръчката" и "Дата на поръчка" идват от таблицата "Поръчки", "Продукти" идва от таблицата "Продукти", а стойностите на "Единична цена" и "Количество" идват от таблицата "Подробна информация за поръчката". Тези таблици са свързани една с друга по различни начини, за да се получи във формуляра информация от всяка от тях.

В горния пример полетата в таблиците трябва да бъдат координирани, така че да покажат информация за една и съща поръчка. Тази координация се извършва с помощта на релации между таблици. Релацията между таблиците работи чрез съответствие на данни в полета ключове – често това е поле с еднакво име в двете таблици. В повечето случаи тези съответстващи си полета са първичния ключ от едната таблица, който предоставя еднозначен идентификатор за всеки запис, и външен ключ в другата таблица. Например служителите могат да бъдат асоциирани с поръчките, за които отговарят, чрез създаване на релация между полетата "ИД_служител" в таблиците "Служители" и "Поръчки".

''ИД_служител'' се използва като първичен ключ в таблицата ''Служители'' и като външен ключ в таблицата ''Поръчки''.

1. "ИД_служител" се съдържа и в двете таблици – като първичен ключ...

2. ... и като външен ключ.

Най-горе на страницата

Типове релации между таблици

Има три типа релации между таблици в Access.

  • Релация "един към много"

    Да използваме за пример база данни за проследяване на поръчки, съдържаща таблицата "Клиенти" и таблицата "Поръчки". Един клиент можа да прави произволен брой поръчки. Това значи,че за всеки клиент, представен в таблицата "Клиенти", може да има много поръчки, представени в таблицата "Поръчки". Следователно релацията между таблицата "Клиенти" и таблицата "Поръчки" е релация "един към много".

    За да представите релация "един към много" в структурата на вашата база данни, вземете първичния ключ от страната "един" на релацията и го добавете като допълнително поле или полета в таблицата от страната "много" на релацията. В този случай например трябва да добавите ново поле – полето "ИД" от таблицата "Клиенти" – към таблицата "Поръчки" и да го наречете "ИД на клиента". Access може след това да използва номера в "ИД на клиента" от таблицата "Поръчки", за да намери правилния клиент за всяка поръчка.

  • Релация ''много към много''

    Да разгледаме релацията между таблицата "Продукти" и таблицата "Поръчки". Една поръчка може да съдържа повече от един продукт. От друга страна един продукт може да се среща в много поръчки. Следователно за всеки запис в таблицата "Поръчки" може да има много записи в таблицата "Продукти". Освен това за всеки запис в таблицата "Продукти" може да има много записи в таблицата "Поръчки". Тази релация се нарича релация "много към много". Имайте предвид, че за да откриете съществуваща релация "много към много" между таблици е важно да разглеждате и двете страни на релацията.

    За да представите релация "много към много", трябва да създадете трета таблица, често наричана свързваща таблица, която разбива релацията "много към много" на две релации "един към много". Вмъкнете първичния ключ от всяка от двете таблици в третата таблица. В резултат на това третата таблица записва всяко срещане, или екземпляр, на релацията. Например таблицата "Поръчки" и таблицата "Продукти" имат релация "много към много", която се дефинира чрез създаване две релации "един към много" към таблицата "Подробна информация за поръчката". Една поръчка може да има много продукти, а всеки продукт може да се среща в много поръчки.

  • Релация "един към един"

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

Най-горе на страницата

Защо се създават релации между таблици?

Можете да създавате релации между таблици явно с помощта на прозореца "Релации" или с плъзгане на поле от екрана Списък на полетата. Access използва релациите между таблици, за да реши как да съедини таблиците, когато трябва да ги използвате в обект от база данни. Има няколко причини да създадете релациите между таблиците, преди да създадете други обекти от базата данни, например формуляри, заявки и отчети.

  • Релациите между таблиците предоставят информация при проектирането на заявки

    За да работите със записи от повече от една таблица, често се налага да създадете заявка, която съединява таблиците. Заявката работи, като търси съвпадение на стойностите в поле първичен ключ на първата таблица с поле външен ключ във втората таблица. Например, за да върнете поръчките, които съдържат всички заявки за всеки клиент, трябва да проектирате заявка, която съединява таблицата "Клиенти" с таблицата "Поръчки" на базата полето на "ИД на потребител". В прозореца "Релации" можете ръчно да зададете полетата за съединяване. Ако обаче вече има дефинирана релация между таблиците, Access създава съединение по подразбиране на базата на съществуващата релация. Освен това, ако използвате някой от съветниците за заявки, Access използва информацията, която той събира от релациите между таблиците, които вече сте дефинирали, за да ви представи информирани възможности за избор и да попълни предварително настройките на свойствата с подходящи стойности по подразбиране.

  • Релациите между таблиците предоставят информация при проектирането на формуляри и отчети

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

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

    Когато проектирате база данни, трябва да разделите вашата информация в таблици, всяка от които има първичен ключ. След това трябва да добавите външни ключове към свързаните таблици, които препращат към тези първични ключове. Тези двойки външен ключ – първичен ключ представляват основата на релациите между таблиците и заявките към множество таблици. Важно е тези препратки външен ключ – първичен ключ да се поддържат синхронизирани. Целостта на връзките, която зависи от релациите между таблиците, гарантира синхронизирането на препратките.

Най-горе на страницата

Разбиране на целостта на връзките

Когато проектирате база данни, трябва да разделите вашата информация за базата данни в множество тематично базирани таблици, за да намалите излишъка на данни. След това трябва да предоставите на Access начин да връща съчетания от тези данни, като поставите общи полета в свързаните таблици. Например, за да зададете релация "един към много", трябва да вземете първичния ключ от таблицата "един" и да го добавите като допълнително поле в таблицата "много". За да върне данните обединени, Access взема стойността от таблицата "много" и търси съответната стойност в таблицата "един". По този начин стойностите в таблицата "много" препращат към съответните стойности в таблицата "един".

Да предположим, че имате релация "един към много" между таблици "Доставчици" и "Поръчки" и искате да изтриете един доставчик. Ако този доставчик има поръчки в таблицата "Поръчки", тези поръчки ще станат изолирани, когато изтриете неговия запис. Поръчката все още ще съдържа идентификатора на доставчика, но този идентификатор вече няма да е валиден, защото записът, към който препраща, вече не съществува.

Предназначението на целостта на връзките е да не допуска изолирани записи и да поддържа препратките синхронизирани, така че тази хипотетична ситуация никога да не възниква.

Можете да поддържате целостта на връзките, като я разрешите за релация на таблица (вижте Поддържане на целостта на връзките за инструкции). След като е разрешено, Access отказва всяка операция, която нарушава целостта на връзките за тази релация между таблиците. Това означава, че Access ще отказва актуализирания, които променят целта на препратка, и изтривания, които премахват целта на препратка. Възможно е да може да имате напълно валидна нужда за промяна на първичния ключ за спедитор, който има поръчки в таблицата "Поръчки". В такива случаи е необходимо Access да актуализира автоматично всички засегнати редове като част от единична операция. По този начин Access гарантира, че актуализирането се извършва изцяло, така че вашата база данни не остава в несъгласувано състояние, като някои редове са актуализирани, а други – не. По тази причина Access поддържа опцията Актуализирай каскадно свързаните полета. Когато поддържате целостта на връзките и изберете опцията Актуализирай каскадно свързаните полета и след това актуализирате първичен ключ, Access автоматично актуализира всички записи, които препращат към първичния ключ.

Възможно е също да ви се наложи да изтриете един ред и всички свързани записи  – например запис за един доставчик и всички свързани поръчки за този доставчик. По тази причина Access поддържа опцията Изтривай каскадно свързаните записи. Когато поддържате целостта на връзките и изберете опцията Изтривай каскадно свързаните записи и след това изтриете един запис в страната на релацията с първичния ключ, Access автоматично изтрива всички записи, които препращат към този ключ.

Най-горе на страницата

Показване на релации между таблици

За да покажете релациите между таблиците, щракнете върху Релации в раздела Инструменти за бази данни. Прозорецът "Релации" се отваря и показва всички съществуващ релации. Ако не са дефинирани релации между таблици и отваряте прозореца "Релации" за първи път, Access ви подканва да добавите таблица или заявка към прозореца.

Отваряне на прозореца "Релации"

  1. Щракнете върху Файл и след това върху Отвори.

  2. Изберете и отворете базата данни.

  3. В раздела Инструменти за бази данни, в групата Релации щракнете върху Релации.

    Ако базата данни съдържа релации, се показва прозорецът "Релации". Ако базата данни не съдържа релации и отваряте прозореца "Релации" за първи път, се показва диалоговият прозорец Показване на таблица. Щракнете върху Затвори, за да затворите диалоговия прозорец.

  4. В раздела Проектиране, в групата Релации щракнете върху Всички зависимости.

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

Релацията между таблиците се представя в прозореца "Релации" с релационна линия, начертана между таблиците. Релация, която не поддържа целостта на връзките, се показва като тънка линия между общите полета, поддържащи релацията. Когато изберете релацията, като щракнете върху нейната линия, линията се удебелява, за да покаже, че е избрана. Ако поддържате целостта на връзките за тази релация, линията се показва удебелена в краищата. Освен това над удебелената част на линията от страната "едно" на релацията се показва числото 1, а над удебелената част на линията от другата страна се показва символът за безкрайност ().

Когато прозорецът "Релации" е активен, можете да избирате от следните команди в лентата:

В раздела Проектиране, в групата Инструменти:

  • Редактиране на релации    Отваря диалоговия прозорец Редактиране на релации. Когато изберете релационна линия, можете да щракнете върху Редактиране на релации, за да промените релацията между таблиците. Можете също да щракнете двукратно върху релационната линия.

  • Изчистване на оформлението    Премахва всички показани таблици и релации в прозореца "Релации". Забележете, че тази команда само скрива таблиците и релациите, а не ги изтрива.

  • Отчет за релациите    Създава отчет, който показва таблиците и релациите във вашата база данни. Отчетът показва само таблиците и релациите в прозореца "Релации", които не са скрити.

В раздела Проектиране, в групата Релации:

  • Показване на таблица    Отваря диалоговия прозорец Показване на таблица, така че да можете да избирате таблици и заявки за преглеждане в прозореца "Релации".

  • Скриване на таблица    Скрива избраната в прозореца "Релации" таблица.

  • Преки зависимости    Показва всички релации и свързани таблици за избраната таблица в прозореца "Релации", ако не са показани.

  • Всички зависимости    Показва в прозореца "Релации" всички релации и свързани таблици във вашата база данни. Забележете, че скритите таблици (таблиците, за които е поставена отметка в квадратчето Скрита в диалоговия прозорец Свойства на таблицата) и техните релации няма да бъдат показани, освен ако в диалоговия прозорец "Опции за навигация" не е избрана опцията "Покажи скритите обекти".

  • Затвори    Затваря прозореца "Релации". Ако сте направили промени в оформлението на прозореца "Релации", ще бъдете запитани дали искате да запишете тези промени.

Най-горе на страницата

Разширете уменията си в Office
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×