Основи на съвременните бази данни Предговор


Лекция 4. Общи понятия на релационния подход към организацията на БД. Основни концепции и термини



страница5/17
Дата17.08.2018
Размер1.71 Mb.
#80209
1   2   3   4   5   6   7   8   9   ...   17

Лекция 4. Общи понятия на релационния подход към организацията на БД. Основни концепции и термини


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

4.1. Базови понятия в релационните бази от данни


Основни понятия от релационните бази от данни са: тип данни, домейн, атрибут, кортеж, първичен ключ и отношение.

За начало ще покажем смисъла на тези понятия в примера на отношението СЪТРУДНИЦИ, съдържащо информация за сътрудниците в дадена организация:




4.1.1. Тип данни

Понятието тип данни в релационния модел на данни е напълно адекватно на понятието тип данни в езиците за програмиране. Обикновено в съвременните релационни БД се допуска съхраняване на символни, числови данни, битови низове, специализирани числови данни (такива като "пари"), а също и специални "темпорални" данни (дата, време, времеви интервал). Достатъчно активно се развива подходът за разширяване на възможностите на релационните системи с абстрактни типове данни (съответните възможности имат, например, системите от семейството Ingres/Postgres). В нашия пример имаме работа с данни от три типа: символни низове, цели числа и "пари".
4.1.2. Домейн

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

Най-правилната интуитивна трактовка на понятието домейн е разбирането за домейна като допустимо потенциално множество значения от даден тип. Например, домейнът "Имена" в нашия пример е определен върху базовия тип символен низ, но в негови значения могат да бъдат само тези низове, които могат да изобразяват име (в частност, такива низове не могат да започват с ер малък).

Трябва да отбележим и семантичното натоварване на понятието домейн: данните се считат за сравними само в този случай, когато се отнасят към един домейн. В нашия пример стойностите на домейните "Номера на пропуските" и "Номера групите" се отнасят към типа цели числа, но не са сравними. В повечето релационни СУБД понятието домейн не се използва, макар че в Oracle V.7 то вече се поддържа.

4.1.3. Схема на отношение, схема на база от данни

Схема на отношение – това е именовано множество двойки {име на атрибут, име на домейн (или типа ако понятието домейн не се поддържа)}. Степен или "арност" на схемата на отношение е мощността на това множество. Степента на отношението СЪТРУДНИЦИ е равна на четири, то ест то е 4-арно. Ако всички атрибути на едно отношение са определени върху различни домейни, има смисъл да се използват за именуване на атрибутите имената на съответните домейни (не забравяйки, че това е само един удобен начин за именуване и не отстранява различията между понятията домейн и атрибут).

Схема на БД (в структурен смисъл) – това е набор от именовани схеми на отношения.


4.1.4. Кортеж, отношение

Кортеж, съответстващ на дадена схема на отношение, - това е множеството двойки {име на атрибут, стойност}, което съдържа едно вхождение на всяко име на атрибут, принадлежащ на схемата на отношението. "Стойност" е допустимата стойност на домейна на даден атрибут (или тип данни, ако понятието домейн не се поддържа). С това, степента или "арността" на кортежа, т.е. броя елементи в него, съвпада с "арността" на съответната схема на отношението. Иначе казано, кортежът е набор от именувани стойности на зададен тип.

Отношение е множеството кортежи, съответствващи на одна схема на отношение. Понякога, за да се избягват грешки, се казва "отношение-схема" и "отношение-екземпляр", понякога схемата на отношение се нарича заглавие на отношението, а отношението като набор кортежи – тяло на отношение. В същност, понятието схема на отношение е най-близко до понятието структурен тип данни в езиците за програмиране. Би било напълно логично да се разрешава отделно да се определя схема на отношение, а след това едно или няколко отношения с дадената схема.

Но в релационните бази от данни това не е прието. Името на схема на отношение в такива бази от данни винаги съвпада с името на съответното отношение-екземпляр. В класическите релационни бази от данни след определяне на схемата на база от данни се променят само отношенията-екземпляри. В тях могат да се появяват нови и изтриват или модифицират съществуващите кортежи. Но в много от реализациите се допуска и изменение на схемата на базата от данни: определяне на нови и изменение на съществуващи схеми на отношение. Това е прието да се нарича еволюция на схемата на базата от данни.

Обикновената житейска представа за отношение е таблицата, заглавието на която е схемата на отношението, а редовете – кортежи на отношение-екземпляр; в този случай имената на атрибутите се наричат стълбове на тази таблица. Затова понякога се казва "стълб на таблица", имайки предвид "атрибут на отношение". Когато преминем към разглеждане на практически вопроси по организацията на релационните бази от данни и средствата за управление, ще използваме тази житейска терминология. Към тази терминология се придържат в повечето комерсиални релационни СУБД.

Релационна база от данни е набор от отношения, имената на които съвпадат с имената на схемите на отношения в схемата на БД.

Както се вижда, основните структурни понятия на релационния модел на данни (ако не се смята понятието домейн) имат много проста интуитивна интерпретация, макар в теорията на релационните БД всички те да се определят абсолютно формално и точно.


4.2. Фундаментални свойства на отношенията


Ще се спрем на някои важни свойства на отношенията, които следват от приведените по-горе определения:
4.2.1. Отсъствие на кортежи-дубликати

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

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

Ще отбележим, че в много от практическите реализации на РСУБД се допуска нарушение свойството уникалност на кортежите за промеждутъчните отношения, пораждани неявно при изпълнение на заявките. Такива отношения не са множества, а мултимножества, което в редица случаи позволява да се постигнат определени предимства, но понякога води до сериозни проблеми.

4.2.2. Отсъствие на подреденост на кортежите

Свойството отсъствие на подреденост на кортежите на отношение също е следствие от определението на отношението-екземпляр като множество кортежи. Отсъствието на изискването за поддържане на реда на множеството кортежи на отношение дава допълнителна гъвкавост на СУБД при съхраняване на базите от данни във външната памет и при изпълнение на заявките към базата от данни. Това не противоречи на факта, че при формулиране на заявка към БД, например, на езика SQL може да се поиска сортировка на резултиращата таблица в съответствие със стойностите на някои стълбове. Такъв резултат, най-общо казано, не е отношение, а някакъв подреден списък кортежи.
4.2.3. Отсъствие на подреденост на атрибутите

Атрибутите на отношенията не са подредени, тъй като по определение схемата на отношение е множество двойки {име на атрибут, име на домейн}. За обръщение към стойност на атрибута в кортежа на отношение винаги се използва името на атрибута. Това свойство теоретично позволява, например, да се модифицират схеми на съществуващи отношения не само чрез добавяне на нови атрибути, но и чрез изтриване на съществуващи атрибути. Но в повечето съществуващи системи такава възможност не се допуска, и макар подредеността на набора атрибути на отношение да не се изисква явно, често в качеството на неявен ред на атрибутите се използва техния ред в линейната форма на определяне на схемата на отношение.
4.2.4. Атомарност на стойностите на атрибутите

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

Може да се каже, че тук имаме бинарно отношение, значенията на атрибута ОТДЕЛИ на което са отношения. Да отбележим, че изходното отношение СЪТРУДНИЦИ е нормализиран вариант на отношението ОТДЕЛИ:



СЪТР_НОМЕР

СЪТР_ИМЕ

СЪТР_ЗАПЛ

СЪТР_ОТД_НОМЕР

2934

Иванов

112,000

310

2935

Петров

144,000

310

2936

Сидоров

92,000

313

2937

Федоров

110,000

310

2938

Иванова

112,000

315

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

Да се зачисли сътрудника Кузнецов (пропуск номер 3000, заплата 115,000) в отдел номер 320 и

Да се зачисли сътрудника Кузнецов (пропуск номер 3000, заплата 115,000) в отдел номер 310.

Ако информацията за сътрудниците e представена като отношение СЪТРУДНИЦИ, двата оператора ще се изпълнят еднакво (вмъкни кортеж в отношение СЪТРУДНИЦИ). Ако се работи с ненормализираното отношение ОТДЕЛИ, то първият оператор ще се изрази във вмъкване на кортежа, а втория - в добавяне на информацията за Кузнецов в множествената стойност на атрибута ОТДЕЛ на кортежа с първичен ключ 310.


4.3. Релационен модел на данни


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

С други думи, използвахме понятия на така наречения релационен модел данни. Моделът на данните описва някакъв набор родови понятия и признаци, които трябва да притежават всички конкретни СУБД и управляваните от тях бази от данни, ако те се основават на този модел. Наличието на модел на данни позволява да се сравняват конкретните реализации, използвайки един общ език.

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

4.3.1. Обща характеристика

Най-разпространената трактовка на релационния модел данни, се оказва, че принадлежи на Дейт, който я възпроизвежда (с различни уточнения) практически във всички свои книги. Съгласно Дейт релационният модел се състои от три части, описващи различните аспекти на релационния подход: структурна част, манипулационна част и цялостна част.

В структурната част на модела се фиксира, че единствената структура от данни, използвана в релационните БД, е нормализираното n-арно отношение. В същност, в предишните два раздела на лекцията разглеждахме именно понятия и свойства на структурната съставляваща на релационния модел.

В манипулационната част на модела се утвърждават два фундаментални механизма на манипулиране на релационни БД - релационна алгебра и релационно изчисление. Първият механизъм се базира основно на класическата теория на множествата (с някои уточнения), а вторият - на класическия логически апарат за изчисляване на предикати от първи ред. Ще разгледаме тези механизми по-подробно в следващата лекция, а сега само ще отбележим, че основната функция на манипулационната част на релационния модел е осигуряване на мярката за релационност на всеки конкретен език за релационни БД: езикът се нарича релационен, ако има изразителност и мощност не по-малки, отколкото релационната алгебра или релационното изчисление.

4.3.2. Цялостност на същност и връзки

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

Второто изискване се нарича изискване за цялостност по връзки и е малко по-сложно. Очевидно, при съблюдаването на нормализираност на отношенията сложните същности реалния свят се представят в релационната БД във вид на няколко кортежа от няколко отношения. Например, да представим в релационната база от данни същността ОТДЕЛ с атрибути ОТД_НОМЕР (номер на отдел), ОТД_КОЛ (брой сътрудници) и ОТД_СЪТР (набор сътрудници на отдела). За всеки сътрудник трябва да се съхранява СЪТР_НОМЕР (номер на сътрудника), СЪТР_ИМЕ (име на сътрудника) и СЪТР_ЗАПЛ (работната заплата на сътрудника). Както ще видим, при правилно проектиране на съответстващата БД в нея ще се появят две отношения: ОТДЕЛИ (ОТД_НОМЕР, ОТД_КОЛ) (първичен ключ - ОТД_НОМЕР) и СЪТРУДНИЦИ (СЪТР_НОМЕР, СЪТР_ИМЕ, СЪТР_ЗАПЛ, СЪТР_ОТД_НОМ) (първичен ключ - СЪТР_НОМЕР).

Както се вижда, атрибутът СЪТР_ОТД_НОМ се появява в отношението СЪТРУДНИЦИ, не защото номерът на отдела се явява собствено свойство на сътрудника, а само за да може да има възможност да се възстанови при необходимост пълната същност ОТДЕЛ. Значението на атрибута СЪТР_ОТД_НОМ във всеки кортеж на отношението СЪТРУДНИЦИ трябва да съответствува на значението на атрибута ОТД_НОМ в някой кортеж на отношението ОТДЕЛИ. Атрибут от този род се нарича външен ключ, тъй като неговите стойности еднозначно характеризират същностите, представени от кортежите на някакво друго отношение (т.е. задават значенията на техния първичен ключ). Казва се, че отношение, в което е определен външен ключ, сочи към съответстващо отношение, в което същият атрибут е първичен ключ.

Изискването за цялостност по връзки, или изискване за външен ключ се състои в това, че за всякo значениe на външния ключ, появяващо се в указващото отношение, в отношението, към което води указателя, трябва да се намери кортеж с такава стойност на първичния ключ, или значението на външния ключ трябва да е неопределено (т.е. да не се сочи към нищо). За нашия пример това означава, че ако за сътрудника е указан номер на отдела, то този отдел трябва да съществува.

Ограниченията за цялостност на същности и по връзки трябва да се поддържат от СУБД. За съблюдаване на цялостност на същността е достатъчно да се гарантира отсъствие във всяко отношение на кортежи с едно и също значение на първичния ключ. С цялостността по връзки нещата са по-сложни.

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

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

В развитите релационни СУБД обикновено може да се избере методът за поддържане на цялостност по връзки за всяка отделна ситуация по определяне на външен ключ. Разбира се, за вземането на такова решение е необходимо да се анализират изискванията на конкретната приложна област.



Каталог: tadmin -> upload -> storage
storage -> Литература на факта. Аналитизъм. Интерпретативни стратегии. Въпроси и задачи
storage -> Лекция №2 Същност на цифровите изображения Въпрос. Основни положения от теория на сигналите
storage -> Лекция 5 система за вторична радиолокация
storage -> Толерантност и етничност в медийния дискурс
storage -> Ethnicity and tolerance in media discourse revisited Desislava St. Cheshmedzhieva-Stoycheva abstract
storage -> Тест №1 Отбележете невярното твърдение за подчертаните думи
storage -> Лекции по Въведение в статистиката
storage -> Търсене на живот във вселената увод
storage -> Еп. Константинови четения – 2010 г някои аспекти на концептуализация на богатството в руски и турски език


Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   17




©obuch.info 2024
отнасят до администрацията

    Начална страница