Лекции по бази данни



страница2/10
Дата16.12.2016
Размер1.96 Mb.
#11293
ТипЛекции
1   2   3   4   5   6   7   8   9   10

Роли във връзката
Възможно е едно множество от същности да участва повече от един път в една връзка. Всяко участие на множеството същности във връзката се интерпретира по различен начин, така че различните участия трябва да се именуват. Именно тези участия се наричат роли във връзката.

Ще разгледаме два примера.



Бинарната връзка sequel_of отразява, че един филм е продължение на друг. Ролята original обозначава оригиналът на даден филм (той е единствен и затова връзката sequel_of в ролята original е много към един). Ролята sequel обозначава продълженията на даден филм.



Във връзката contracts участват две роли на Studios. Ролята

movie_producer обозначава студиото, което продуцира филма, а ролята star_owner обозначава студиото, което е сключило договор със звездата.

Така всеки екземпляр на връзката се състои от наредени четворки от вида (studio1, studio2, movie, star), където star е конкретна звезда, movie е конкретен филм, studio1 е конкретно студио в ролята movie_producer, което е сключило договор със star, studio2 е конректно студио в ролята star_owner, което продуцира movie.


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

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

В моделите в които не се използват атрибути за връзките трябва да се добавят допълнителни множества същности, които характеризират самите връзки. Ще направим това за горния пример.

В диаграмата отразяваме факта, че дадена звезда по даден филм получава точно определена заплата.


Представяне на небинарна връзка чрез бинарни връзки
В повечето релационни СУБД, където се използва ER-модела са позволени само бинарни връзки. Там в ER-диаграмата връзката се представя само чрез стрелка. При такива СУБД стремежът е към компактност на представянето – при визуализация ромбът заема излишно пространство.

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

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

Ще се справим с този проблем като въведем функционални и многозначни зависимости в релационния модел.

Като пример ще преобразуваме множественaта връзка от по-горе, в която има роли.


star_of


ISA връзки
Характерно за съвременните СУБД е поддръжка на обектно-релационния модел на данните. За целта в модела ER са предвидени подкласове. Често пъти в едно множество може да има същности със специални свойства, при това тези свойства не се асоциират с всички същности от множеството. В такива случаи тези същности се дефинират в специални множества от същности, които се наричат подкласове.

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



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

по-горни подкласове и множества.

Принципи на проектирането
Ще посочим някои основни принципи, които трябва да се спазват при проектиране на бази от данни с модела ER.

Съответствие

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



Простота и избягване на излишество

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



Избиране на точните връзки

Добавянето на всяка една връзка трябва да бъде добре обмисляно – трябва да се внимава дали новата връзка не е следствие от дефинираните преди това връзки. Определянето на точните връзки се извършва въз основа на проучвания в приложната област.



Избор на точния елемент

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

Нека E е множество от същности. Нека са изпълнени следните условия:


  • всички връзки, в които участва E са много към един към E;

  • всички атрибути на E заедно трябва да представят една същност, т.е. атрибутите на E (ако са повече от един) трябва да са независими един от друг – това е за да се избегне дублиране на информацията;

  • в нито една връзка E не трябва да участва повече от веднъж, т.е. в никоя връзка E не трябва да има различни роли.

При тези предположения заместваме E по следния начин: нека R е връзка много към един от F към E. Тогава премахваме връзката R и във F добавяме атрибутите на E и атрибутите на R. Трябва да внимаваме да не се получи конфликт с имената на атрибутите, т.е. ако се наложи трябва да преименуваме добавените към F атрибути. Ако връзката R не е бинарна постъпваме по следния начин: добавяме атрибутите на E към атрибутите на R и не премахваме R. След като извършим процедурата върху всички връзки, в които участва E премахваме и самото множеството E.

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




star_of

Тук един договор може да бъде свързан с повече от едно студия.


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

  • ключове – атрибут или множество от атрибути, които уникално идентифицират съответните същности; две различни същности трябва да се различават по стойността на поне един ключов атрибут;

  • ограничения на единствената стойност – в определен контекст да имаме уникалност на стойността; ключовете са такова ограничение, също връзките много към един;

  • ограничения за референтна цялостност – в базата от данни да се извършват обръщения само към съществуващи обекти;

  • ограничения по домен – стойността на даден атрибут да бъде от определено крайно множество;

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


Ключове
Ключ за едно множество от същности E е подмножество K на атрибутите на E, такова че всеки две различни конкретни същности e1, e2 от E трябва да се различават по стойността на поне един от атрибутите в K.

Естествено, това не изключва възможността стойностите на някои атрибути от K за e1 и e2 да съвпадат. Последното е възможно в случай, че K се състои от повече от един атрибут.

Всяко множество от същности трябва да притежава ключ. Всъщност, това не е абсолютно задължително за модела ER – възможно е две конкретни същности да се различават по начина на свързване с конкретни същности от други множества.

Идентификацията на същностите се осъществява чрез ключа. Ако не е зададен ключ, то СУБД автоматично добавя поле с уникален идентификатор за всяка конкретна същност.


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

Когато едно множество от същности участва в isa-йерархия, то в ключа на това множество задължително трябва да участват само атрибути на коренното множество.


В ER диаграмата атрибутите, които участват в ключа на едно множество от същности се подчертават. Подчертава се единствено първичния ключ.

Ще разгледаме пример.



Предполагаме, че може да има филми с еднакви заглавия, но само ако са произведени в различни години. Също, идентифицираме звездите само по имена – например, считаме че звездите с еднакви имена използват псевдоними.


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

Има няколко начина, по които ограниченията на единствената стойност се представят в диаграмата ER.


Всеки атрибут на дадена същност има единствена стойност. Понякога е възможно даден атрибут да няма стойност, но в този случай трябва да използваме null-стойност за този атрибут. Ако СУБД не поддържа null-стойности можем да използваме стойност, която не е от множеството стойности на съответния атрибут – например, ако за даден филм не се знае неговата продължителност да използваме стойност -1 за атрибута length. Релационните СУБД поддържат null-стойности, въпреки че те не се въвеждат във формалните разглеждания.

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


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

Има няколко начина, по които можем да наложим ограничения за референтна цялостност:



  • забрана за изтриване на дефинирана същност, ако тя е във връзка с някоя друга същност - например, ако дадено студио притежава филми да не можем да го изтрием;

  • изтриването на същност да включва изтриването на всички същности, които са във връзка с нея - например, изтриването на дадено студио да включва изтриването на всички филми, които се притежават от него.

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

Ще разгледаме пример.



Стрелките се интерпретират по следния начин:



  • стрелката от owns към Studios означава, че всеки филм трябва да се притежава от единствено съществуващо студио;

  • стрелката от runs към Studios означава, че всеки президент трябва да управлява единствено същестуващи студио;

  • стрелката от runs към Presidents означава, че всяко студио се управлява най-много от един президент, но може да има студия, които в определен момент нямат президенти.


Други ограничения
Ограниченията по домен означават, че даден атрибут може да приема стойности от определено крайно множество. Те могат да бъдат отразени чрез задаване на тип за атрибута. По-големи ограничения по домен можем да получим, ако директно изброим стойностите, които даден атрибут може да приема – например, дължината на филм (атрибута length) да приема стойност цяло число от 0 до 240. В модела ER няма специална нотация за ограничения по домен, въпреки че при конкретните СУБД такава нотация със сигурност има.
Има и други общи ограничения, които не попадат в разгледаните. Например, можем да наложим ограничение за броя на същностите, които могат да са свързани с конкретна същност по дадена връзка.

Частен случай на такова ограничение са връзките много към един

(в частност един към един). В модела ER всяко ребро, което свързва връзка с множество същности можем да надпишем с ограничение за броя на същностите, които могат да са във връзка с конкретни същности от другите множества на връзката. Ще разгледаме пример.

Ограничението означава, че във всеки филм може да участват

най-много 10 звезди. Чрез такъв тип ограничения можем да представяме

стрелките – вместо обикновената стрелка можем да надписваме съответното ребро с  1, а вместо закръглена стрелка можем да надписваме съответното ребро с =1.


Слаби множества от същности
Слабите множества от същности са новост в модела ER и покриват част от проблемите при проектирането. За едно обикновено множество от същности ключът е винаги подмножество на неговите атрибути. За едно слабо множество от същности някои атрибути на неговия ключ може да са атрибути на друго множество същности.

Слаби множества от същности се използват когато имаме множества от същности, които са организирани в йерархия на класификация, която не е isa-йерархия. Ако същностите на едно множество E са подсъщности на друго множество F, то е възможно имената на същностите от E да не са уникални, докато не се вземат под внимание имената на същностите

от F, на които съответните същности от E са подсъщности.

Ще разгледаме един пример.



В едно студио може да има няколко екипа. В рамките на едно студио екипите имат уникални номера, но е възможно различни студия да номерират екипите си по еднакъв начин. Поради тази причина, номерът не е достатъчен за да се идентифицира един екип. Така ключът на множеството Crews се образува от неговия атрибут number и атрибутът name на множеството Studios.

След малко ще обясним смисъла на двойните правоъгълници и ромбове.

Друг пример за слаби множества от същности са свързващите множества от същности, които се получават когато преобразуваме небинарни връзки към бинарни. Техният ключ се формира от ключовете на множествата същности, които участват във връзката, която е била преобразувана. Ще разгледаме пример.



Преобразували сме тернарната връзка между звезда, филм и студио в бинарни. Ключът на същностите от множеството Contracts се формира от ключовете на множествата Movies, Stars и Studios.


В диаграмите ER слабите множества от същности отбелязваме с двоен правоъгълник.

Нека E е слабо множество от същности.

Тогава неговият ключ се състои от:


  • нула или повече от атрибутите на E;

  • ключови атрибути на множества същности, които са свързани чрез специални поддържащи връзки много към един от E към тези множества същности.

Една връзка R е поддържаща за слабото множество E, ако:

  • тя е бинарна и е много към един от E към някое множество F;

  • съществува ограничение за референтна цялостност от E към F, т.е. всяка конкретна същност от E трябва да е свързана с точно една конкретна същност от F чрез връзката R (в диаграмата ER трябва да има закръглена стрелка от R към F).

В горните означения множеството F наричаме поддържащо множество. В ER диаграмите поддържащите връзки отбелязваме с двоен ромб.

Ако поддържащото множество от своя страна е слабо, то неговият ключ се определя рекурсивно по неговите поддържащи множества.

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


Релационен модел на данните
В релационния модел данните се представят по единствен начин: чрез двумерна таблица, която наричаме релация. Всяка релация има уникално име. Примерна релация с име Movies:

title

year

length

type

Star Wars

1977

124

color

Mighty Ducks

1991

104

color

Wayne’s World

1997

95

color

Имената на колоните в таблицата се наричат атрибути. Всеки ред в таблицата се нарича кортеж.

Схема на една релация наричаме името на релацията, заедно с крайното множество от атрибутите на релацията. Схемата на релацията Relation, която има атрибути Attr1, Attr2, …, AttrN записваме по следния начин:

Relation (Attr1, Attr2, …, AttrN). Например, схемата на горната релация е:

Movies (title, year, length, type).
Атрибутите на една релация са множество, а не списък. Въпреки това се предполага, че при визуализация атрибутите се записват в определен стандартен ред. Този стандартен ред винаги ще определяме от записа на схемата на релацията.
Схема на една база от данни наричаме множеството от схемите на релациите, които участват в тази база от данни.
Всеки кортеж притежава една компонента за всеки атрибут на релацията. За да обозначаваме отделен кортеж на една релация обикновено записваме неговите компоненти, заградени в скоби и разделени със запетаи. При това, компонентите на кортежа записваме в съответствие със стандартния ред на атрибутите.

Например, за релацията Movie първият кортеж се обозначава по следния начин: (Star Wars, 1977, 204, color).


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

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

Например, за релацията Movies атрибутът title има домен символен низ, атрибутите length и year имат домен цяло число, атрибутът type има домен множеството { color, blackAndwhite }.
Релациите са множества от кортежи, не списъци от кортежи. Поради тази причина, редът в който се записват кортежите на една релация е незначителен. Освен това, редът в който се записват атрибутите на една релация също е незначителен. Когато променяме този ред, обаче, трябва да променяме и редът в който се записват компонентите на съответните кортежи.

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


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

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


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

Преобразуването на ER диаграма в релационна схема се осъществява по следния начин:



  • всяко множество същности се преобразува в релация, като атрибути на релацията са атрибутите на множеството същности;

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

Този начин не се прилага в следните ситуации, при които се изисква

по-специално преобразуване:


  • преобразуване на слаби множества от същности;

  • преобразуване на isa-връзки;

  • понякога две релации се комбинират в една – например, релация за множество същности E се комбинира с релация за връзка много към един от E към някое друго множество от същности.

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

Movies (title, year, length, type)

Stars (name, address)

Studios (name, address)

Presidents (name)

Екземплярите на множествата същности се преобразуват по естествен начин към кортежи. Пример за екземпляр на релацията Stars:


name

address

Carrie Fisher

123 Maple Str., Hollywood

Mark Hamill

456 Oak Rd., Brentwood

Harrison Ford

789 Palm Dr., Beverly Hills

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


Връзките в ER диаграмата за филмите, звездите и студията се преобразуват към следните схеми на релации:

StarsIn (title, year, starName)

Owns (title, year, studioName)

Runs (studioName, presidentName)

Ключовите атрибути на множеството Movies са title, year, ключовият атрибут на множеството Stars е name, ключовият атрибут на множеството Studios е name, ключовият атрибут на множеството Presidents е name. Преименуването на атрибутите за връзката Runs е съществено, тъй като ключовите атрибути на множествата Studios и Presidents имат еднакви имена.

Като друг пример, връзката с ролите на Studios се преобразува към следната схема на релация:

Contracts (title, year, starName, producingStudio, studioOfStar).

Ключовите атрибути на Studios участват два пъти, тъй като множеството Studios има две роли във връзката contracts. Поради това извършваме преименуване. Ако връзката contracts има атрибут salary, то този атрибут salary също трябва да се включи към атрибутите на релацията.


При преобразуване на екземпляр на връзка R между множества същности E1, E2, …, En в екземпляр на релацията за връзката всяка наредена n-торка (e1, e2, …, en), ei е конкретна същност от Ei,

i = 1, 2, …, n се преобразува към кортеж, като за всяка конкретна същност ei компонентите на кортежа, съответни на ключовите атрибути за множеството Ei са стойностите на тези ключови атрибути за същността ei, i = 1, 2, …, n. Естествено, ако връзката има атрибути, то с наредената n-торка са свързани стойности за тези атрибути, така че компонентите на кортежа, които съответстват на атрибутите на връзката ще приемат тези стойности.


Каталог: materials
materials -> Исторически преглед на възникването и развитието на ес
materials -> Съюз на математиците в българия-секция русе коледно математическо състезание – 12. 2006 г. 4 клас
materials -> Великденско математическо състезание 12. 04. 2008 г. 2 клас Времето за решаване е 120 минути
materials -> Съюз на математиците в българия-секция русе коледно математическо състезание – 09. 12. 2006г
materials -> Съюз на математиците в българия-секция русе коледно математическо състезание – 12. 2006 г. 8 клас
materials -> Великденско математическо състезание 12. 04. 2008г. 3 клас
materials -> К а т е д р а " информатика"
materials -> Зад. 2 Отг.: 5- 3т Зад. 3 Отг.: (=,-);(+,=);(+,=) по 1т., общо 3т. За
materials -> Іv клас От 1 до 5 зад по 3 точки, от 6 до 10 – по 5 и от 11 до 15 – по 7


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




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

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