43
Тема Тема 5 5 . Моделиране на . Моделиране на класовете за съхраняване на класовете за съхраняване на информация информация в релационни в релационни бази от данни РБД бази от данни РБД

Тема 5 . Моделиране на класовете за съхраняване на информация в релационни бази от данни РБД

  • Upload
    damien

  • View
    82

  • Download
    5

Embed Size (px)

DESCRIPTION

Тема 5 . Моделиране на класовете за съхраняване на информация в релационни бази от данни РБД. Моделиране на класовете за съхраняване на информация в релационни бази от данни РБД. Основни понятия; Моделиране на обектите в РБД Основни принципи при моделиране на обекти и класове - PowerPoint PPT Presentation

Citation preview

Тема Тема 55. Моделиране на . Моделиране на класовете за съхраняване на класовете за съхраняване на

информация информация в релационни в релационни

бази от данни РБДбази от данни РБД

Моделиране на класовете за Моделиране на класовете за съхраняване на информация съхраняване на информация в в релационни бази от данни РБДрелационни бази от данни РБД

Основни понятия;Основни понятия; Моделиране на обектите в РБДМоделиране на обектите в РБД Основни принципи при моделиране на обекти Основни принципи при моделиране на обекти

и класовеи класове Създаване на обектни идентификатори в Създаване на обектни идентификатори в

класовете за съхраняване на данни;класовете за съхраняване на данни; Начини за генериране на OID;Начини за генериране на OID; Моделиране на обектните наследявания в Моделиране на обектните наследявания в

РДБ;РДБ; Моделиране на отношения (релации);Моделиране на отношения (релации); Стратегии за имплементиране на кода:Стратегии за имплементиране на кода:

– Стратегия на грубата сила;Стратегия на грубата сила;

Основни понятияОсновни понятия

Определение:Определение:

Моделът на класоветеМоделът на класовете за съхраняване се за съхраняване се нарича нарича даннов моделданнов модел . Той се използва . Той се използва от всички разработчици на системата.от всички разработчици на системата.

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

Основни понятияОсновни понятия

Основни технологиии предназначение:Основни технологиии предназначение:

Обектната технология, с която се реализира бизнес Обектната технология, с която се реализира бизнес логиката;логиката;

Технологията на релационните бази данни (RDB), за Технологията на релационните бази данни (RDB), за съхраняване на информацията;съхраняване на информацията;

Съществуват и други процедурни варианти, напр. в COBOL, Съществуват и други процедурни варианти, напр. в COBOL, за реализиране на бизнес логиката и данни, основани на за реализиране на бизнес логиката и данни, основани на XML или обекно-ориентирани бази данни. COBOL е обект XML или обекно-ориентирани бази данни. COBOL е обект на отделно изучаване, както и базите данни, основани на на отделно изучаване, както и базите данни, основани на XML, които се изучават по други дисциплини, а обектните XML, които се изучават по други дисциплини, а обектните бази данни са технологии от по-ниско ниво. бази данни са технологии от по-ниско ниво.

Може да се твърди, че съвременните основни технологии са Може да се твърди, че съвременните основни технологии са обектната – за бизнес логиката и релационната - за обектната – за бизнес логиката и релационната - за съхранение на данни RDB. съхранение на данни RDB.

Основни понятияОсновни понятия Основната идея (парадигма) на ООП се Основната идея (парадигма) на ООП се

основава на утвърдени технически принципи основава на утвърдени технически принципи на програмирането. на програмирането.

Основната идея на релационната теория се Основната идея на релационната теория се основава на доказани математически основава на доказани математически принципи. принципи.

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

Основни понятияОсновни понятия

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

Моделиране на обектите в РБДМоделиране на обектите в РБД

Основни принципи при моделиране на обекти и Основни принципи при моделиране на обекти и класове:класове:

Атрибутите се организират в колони;Атрибутите се организират в колони; Класовете се представят с таблици;Класовете се представят с таблици; Моделиране на наследяването на класовете Моделиране на наследяването на класовете

в РБД;в РБД; Моделиране на отношенията в РДБ; Моделиране на отношенията в РДБ;

– Едно към едно;Едно към едно;– Едно към много;Едно към много;– Много към много;Много към много;– Асоциация, агрегация и композиция;Асоциация, агрегация и композиция;

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

Един атрибут може да се представи с нула или Един атрибут може да се представи с нула или повече колони на релационната база от данни. В повече колони на релационната база от данни. В базата от данни не се записват всички атрибути. базата от данни не се записват всички атрибути. Например, могат да не се записват такива Например, могат да не се записват такива атрибути, стойностите на които могат да се атрибути, стойностите на които могат да се изчислят от други с функции. Инстанциите на изчислят от други с функции. Инстанциите на класовете могат да имат поле за съхраняване на класовете могат да имат поле за съхраняване на сумата на фактура, но това поле не е сумата на фактура, но това поле не е задължително да има представяне в РДБ. задължително да има представяне в РДБ.

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

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класовеНапример:Например:

Факултетния номер на студента е Факултетния номер на студента е съвкупност от атрибутите:съвкупност от атрибутите:

година на приемане; година на приемане; Факултет;Факултет; пореден номер. пореден номер.

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

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класове Организация на класовете в Организация на класовете в

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

Връзката между понятията на Връзката между понятията на релационните бази данни и релационните бази данни и класовите понятия може да се класовите понятия може да се обобщи със следната схема:обобщи със следната схема:

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класове

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класове

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

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класове

Например, атрибутът Например, атрибутът streetstreet от класа от класа AddressAddress се се представя с колона представя с колона StreetStreet на таблица на таблица AddressAddress..

Общият принцип на достъп до атрибута Общият принцип на достъп до атрибута attributeNameattributeName на клас на клас ClassNameClassName съответства съответства на достъпа до на достъпа до ColumnName ColumnName от таблица от таблица TableName. TableName.

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

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класове

В примера това са колоните: В примера това са колоните: Address.AddressOID; Address.AddressOID; Address.UpdateCounter;Address.UpdateCounter; Address.DateCreated.Address.DateCreated. които представят класа Address. които представят класа Address. Предназначение:Предназначение: Address.AddressOID представя ключово поле в таблицата; Address.AddressOID представя ключово поле в таблицата; Address.UpdateCounter за защита от конкурентен достъп в Address.UpdateCounter за защита от конкурентен достъп в

многопотребителски режим (заключване на данните от многопотребителски режим (заключване на данните от записа); записа);

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

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

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класовеМодел на асоциация между класа Модел на асоциация между класа Address Address и държава и държава StateState. . На нея са показани само данновите части на класовете, които На нея са показани само данновите части на класовете, които

имат скрити (частни) атрибути за видимост. Добавени са имат скрити (частни) атрибути за видимост. Добавени са частни атрибути за идентификация на обектите-частни атрибути за идентификация на обектите-Address.addressOIDAddress.addressOID, , Address.updateCounter и Address.updateCounter и State.updateCounter.State.updateCounter. Бизнес обектите имат нужда от Бизнес обектите имат нужда от информация за конкурентен достъп - информация за конкурентен достъп - Address.updateCounter Address.updateCounter и и State.updateCounter.State.updateCounter. На диаграмата не са обозначени колоните На диаграмата не са обозначени колоните DateCreated в класовете, защото бизнес обектите няма причина DateCreated в класовете, защото бизнес обектите няма причина да променят тази информация, докато са в паметта. да променят тази информация, докато са в паметта.

Основни принципи при Основни принципи при моделиране на обекти и класовемоделиране на обекти и класове

Методите за достъп на частните членове, Методите за достъп на частните членове, които не са показани на схемата, get и set, които не са показани на схемата, get и set, често са по-сложни от тези за често са по-сложни от тези за обикновените (бизнес) атрибути. обикновените (бизнес) атрибути. Скритите атрибути най-често са за Скритите атрибути най-често са за еднократно четене-те се установяват при еднократно четене-те се установяват при първото обръщение за четене от базата и първото обръщение за четене от базата и се запомнят. Методите за запис трябва да се запомнят. Методите за запис трябва да осигуряват това изискване със осигуряват това изискване със съответното документиране защо е така.съответното документиране защо е така.

Създаване на обектни Създаване на обектни идентификатори в класовете за идентификатори в класовете за

съхраняване на даннисъхраняване на данни ПредназначениеПредназначение::Обектните идентификатори служат за уникално Обектните идентификатори служат за уникално

идентифициране на обекта в записващата среда. идентифициране на обекта в записващата среда. В релационната терминология те се наричат ключове (В релационната терминология те се наричат ключове (keykey). ). Еквивалентният термин в обектните йерархии е “обектен Еквивалентният термин в обектните йерархии е “обектен

идентификатор” (идентификатор” (object identifierobject identifier--OIDOID). ). OIDOID обикновено се имплементират като различими обекти обикновено се имплементират като различими обекти

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

Създаване на обектни Създаване на обектни идентификатори в класовете за идентификатори в класовете за

съхраняване на даннисъхраняване на данниOIDOID е уникален само за инстанциите на обекта е уникален само за инстанциите на обекта

Student Student към към PersonPerson и има стойност, и има стойност, например 12345, тогава неговата например 12345, тогава неговата уникалност се губи ако студентът стане уникалност се губи ако студентът стане професор, т.е. когато смени ролята си. професор, т.е. когато смени ролята си.

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

Начини за генериране на OIDНачини за генериране на OID

Да се използва функция Да се използва функция MAXMAX()+1 към данните на ()+1 към данните на колоната, по която се прави уникален идентификатор. колоната, по която се прави уникален идентификатор. Осигурява уникалност в рамките на таблицата. Осигурява уникалност в рамките на таблицата. Недостатък е допълнителното време за определяне на Недостатък е допълнителното време за определяне на стойността;стойността;

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

Използване на универсален уникален идентификатор Използване на универсален уникален идентификатор UUIDUUID на на Open Software FondationOpen Software Fondation. Това е 128 битова стойност, . Това е 128 битова стойност, образувана от образувана от EthernetEthernet картата на компютъра или неин картата на компютъра или неин програмен еквивалент и текущото време на компютърната програмен еквивалент и текущото време на компютърната система. Предимствата са отлични. Недостатъка е система. Предимствата са отлични. Недостатъка е необходимостта от мрежова карта, което не е портируемо необходимостта от мрежова карта, което не е портируемо както и потенциалната възможност да се управлява както и потенциалната възможност да се управлява картата, респективно, полученият ключ.картата, респективно, полученият ключ.

Начини за генериране на OIDНачини за генериране на OID

Глобален универсален идентификатор на Глобален универсален идентификатор на MicrosoftMicrosoft ( (GUIDGUID). Това е подобен на предходния ). Това е подобен на предходния подход като стратегия, получава 128 битов и е подход като стратегия, получава 128 битов и е хеш от софтуерен идентификатор и времето. хеш от софтуерен идентификатор и времето. Използва се мрежовата карта. Може да осигури Използва се мрежовата карта. Може да осигури пълна уникалност за машината която го е пълна уникалност за машината която го е продуцирала. Недостатък-не осигурява пълна продуцирала. Недостатък-не осигурява пълна уникалност при мрежови приложения;уникалност при мрежови приложения;

Използване на създадените от разработчиците Използване на създадените от разработчиците на системите за управление на бази от данни на системите за управление на бази от данни (СУБД) генериращи функции. Много от (СУБД) генериращи функции. Много от производителите на СУБД включват такива производителите на СУБД включват такива генератори, които могат да се използват в генератори, които могат да се използват в рамките на цялата база от данни и осигуряват рамките на цялата база от данни и осигуряват уникалност за нея. Недостатък-не може да се уникалност за нея. Недостатък-не може да се използва при разпределена база от данни от използва при разпределена база от данни от различни производители; различни производители;

Начини за генериране на OIDНачини за генериране на OID Използване на подходът Използване на подходът HIGHHIGH//LOWLOW. .

Подходът е прост и портируем, лесно се Подходът е прост и портируем, лесно се реализира и има висока ефективност и реализира и има висока ефективност и уникалност.уникалност.

Основната идея е Основната идея е OID OID да се съставя от две да се съставя от две части-уникална части-уникална HIGHHIGH стойност, която се стойност, която се получава като код и получава като код и NN-разрядно число, -разрядно число, което се присвоява като младша част към което се присвоява като младша част към нея. Всеки път, когато се получава нова нея. Всеки път, когато се получава нова стойност за стойност за HIGHHIGH, младшата част се нулира. , младшата част се нулира. Например, ако Например, ако HIGHHIGH=1701 и разрядността на =1701 и разрядността на LOWLOW=4, тогава продуцираният =4, тогава продуцираният OIDOID ще ще получи начална стойност 17010000. С получи начална стойност 17010000. С увеличаване на увеличаване на LOWLOW с единица се получава с единица се получава следващ и т.н. до 17019999. След това се следващ и т.н. до 17019999. След това се сменя старшата на 1702 и се нулира сменя старшата на 1702 и се нулира младшата. За получаване на младшата. За получаване на HIGHHIGH се се използват различни начини:използват различни начини:

Начини за генериране на OIDНачини за генериране на OID

Да се получи от СУБД. С 4-разрядна Да се получи от СУБД. С 4-разрядна младша част се прави един достъп до младша част се прави един достъп до СУБД на 10000 идентификатора;СУБД на 10000 идентификатора;

Може да се използва мрежовата карта, с Може да се използва мрежовата карта, с предимствата и недостатъците му;предимствата и недостатъците му;

Самостоятелно имплементиране на Самостоятелно имплементиране на генератор, например написване на код генератор, например написване на код за генериране на М-разрядно число с за генериране на М-разрядно число с функция за увеличаване. Изискванията функция за увеличаване. Изискванията са кода да е уникален за цялата са кода да е уникален за цялата

интегрирана среда. интегрирана среда.

Начини за генериране на OIDНачини за генериране на OID

При самостоятелно имплементиране на генератор е При самостоятелно имплементиране на генератор е необходимо:необходимо:– Източникът да е един и да се използва от всички Източникът да е един и да се използва от всички

приложения. приложения. – Да се осигури достъп с критична секция до увеличаващата Да се осигури достъп с критична секция до увеличаващата

функционалност, както и единственост (функционалност, както и единственост (SingletionSingletion) на обекта, ) на обекта, който управлява процеса на създаване. който управлява процеса на създаване.

– Разрядността да е достатъчна за обозначаване на всички Разрядността да е достатъчна за обозначаване на всички обекти на организацията. Използват се 128 бита за обекти на организацията. Използват се 128 бита за HIGHHIGH и 16 и 16 или 32 бита за или 32 бита за LOWLOW. По-голямата разрядност позволява с . По-голямата разрядност позволява с прост алгоритъм да се образува новата уникална стойност. прост алгоритъм да се образува новата уникална стойност.

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

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

– Разпределеното проектиране трябва да се основава на Разпределеното проектиране трябва да се основава на подходящата за него подходящата за него HIGHHIGH//LOWLOW старатегия. старатегия.

Начини за генериране на OIDНачини за генериране на OID

Поради това, че обектите са на една Поради това, че обектите са на една организация, може да се включи уникалния организация, може да се включи уникалния единтификатор на организацията към ключа единтификатор на организацията към ключа за да се гарантира уникалност между за да се гарантира уникалност между организациите. Такава уникалност се нарича организациите. Такава уникалност се нарича галактическа. Прост начин да се осигури това галактическа. Прост начин да се осигури това е на се добави името на е на се добави името на Internet DomainInternet Domain адреса към идентификатора, което гарантира адреса към идентификатора, което гарантира пренасянето на собствени стойности за пренасянето на собствени стойности за HIGHHIGH. . Може да се използват Може да се използват UUIDUUID и и GUIDGUID, когато , когато организацията обменя данни с други организацията обменя данни с други организации или е възможно сливане или организации или е възможно сливане или разделяне на организации. разделяне на организации.

Моделиране на обектните Моделиране на обектните

наследявания в РДБнаследявания в РДБ РДБ не поддържа от самосебе си РДБ не поддържа от самосебе си

наследяването, поради което е необходимо да наследяването, поради което е необходимо да се представи в схемата структурата на се представи в схемата структурата на наследяване на класовата йерархия в схемата наследяване на класовата йерархия в схемата на данновата схема. на данновата схема.

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

Представяне на цялата класова йерархия в Представяне на цялата класова йерархия в една схема;една схема;

Представяне на всеки конкретен клас в Представяне на всеки конкретен клас в собствена таблица;собствена таблица;

Представяне на всеки клас в собствена Представяне на всеки клас в собствена таблица.таблица.

Моделиране на обектните Моделиране на обектните наследявания в РДБнаследявания в РДБ

Моделиране на обектните Моделиране на обектните наследявания в РДБнаследявания в РДБ

Има три начина за представяне на примерната класова Има три начина за представяне на примерната класова йерархия в релационната база данни . Общият подход йерархия в релационната база данни . Общият подход за ключовете, който се използва в трите подхода на за ключовете, който се използва в трите подхода на физическия даннов модел, е наличието на физическия даннов модел, е наличието на идентификатор на обекта (OID), всеки от които идентификатор на обекта (OID), всеки от които представя атрибута представя атрибута Person.oidPerson.oid. .

При стратегията с една таблица атрибутите на При стратегията с една таблица атрибутите на наследниците се добавят в общата таблица наследниците се добавят в общата таблица Person.Person. Тя Тя включва допълнителния включва допълнителния Person.TypeCode Person.TypeCode за кодиране за кодиране на типа на наследствения обект ( student, professor и на типа на наследствения обект ( student, professor и др.). др.).

При подхода с отделни таблици се използва първичния При подхода с отделни таблици се използва първичния ключ на таблиците ключ на таблиците StudentStudent и и ProfessorProfessor като вторичен за като вторичен за връзка с таблицата връзка с таблицата PersonPerson чрез нейния първичен ключ чрез нейния първичен ключ PersonOIDPersonOID. .

Моделиране на обектните Моделиране на обектните наследявания в РДБнаследявания в РДБ

Подход Предимства Недостатъци

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

  Простота при добавяне на нов клас. Изисква добавяне на нови колони за допълнителните атрибути.

Заеманото място в базата се увеличава, защото много редове ще имат празни колони.

  Обектния полиморфизъм се реализира просто с промяна на типа на записа.

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

  Достъпа до данните е бърз, защото всички данни са в една таблица.

Таблицата се разширява бързо при големи йерархии.

  Справките са прости, защото всички данни са в една таблица.

 

Моделиране на обектните Моделиране на обектните наследявания в РДБнаследявания в РДБ

Подход Предимства Недостатъци

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

Висока скорост на достъп до единичен даннов обект.

Промените в класа изискват да се промени неговата таблица и таблиците на неговите наследници. Напр. Ако се добави колоната birthDate към класа Person ще се добавят колони към таблиците Person, Student и Professor.

  Справките са прости, защото всички данни за всеки един конкретен клас са в една таблица.

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

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

Една таблица за всеки клас

Просто реализиране защото се пренася 1 към 1.

Образуват се много таблици в базата данни, по една за всеки клас (и таблици за реализация на релациите).

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

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

  Много просто се променя наследник и се добавя нов, защото се прави с промяна/добавяне на една таблица.

Справките са сложни, освен ако се изпозват изгледи (views) за симулиране на свързани таблици.

Моделиране на обектните Моделиране на обектните наследявания в РДБнаследявания в РДБ

Пример за оценка на предимства и недостатъци. Пример за оценка на предимства и недостатъци. добавя се допълнителен клас добавя се допълнителен клас TenuredProfessor TenuredProfessor със със

собствен атрибут собствен атрибут tenureDate tenureDate от тип от тип DateDate

Моделиране на обектните Моделиране на обектните наследявания в РДБнаследявания в РДБ

При При първият начинпървият начин на представяне към на представяне към таблицата, моделът се разширява с ново поле таблицата, моделът се разширява с ново поле на таблицата, например на таблицата, например TenureDateTenureDate и и номериране на нов тип;номериране на нов тип;

Вторият начинВторият начин изисква да се създаде изисква да се създаде таблица, например таблица, например TenuredProfessorTenuredProfessor и полета: и полета: – TenuredProfessorOID – TenuredProfessorOID – идентификатор на обекта;идентификатор на обекта;– NameName – от – от PersonPerson;;– StartDate – ProfessorStartDate – Professor;;– TenureDate – TenureDate – собствено поле.собствено поле.

Третият начинТретият начин изисква да се създаде изисква да се създаде таблица, например таблица, например TenuredProfessorTenuredProfessor и полета: и полета: – PersonOID – PersonOID – идентификатор на обекта;идентификатор на обекта;– TenureDate – TenureDate – собствено поле.собствено поле.

Моделиране на отношения Моделиране на отношения

(релации)(релации) Разлика при моделирането между асоциация и Разлика при моделирането между асоциация и

агрегация (композиция)агрегация (композиция) Ассоциациите и агрегация / композициите Ассоциациите и агрегация / композициите

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

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

Моделиране на отношения Моделиране на отношения (релации)(релации)

Начинът за представяне на релациите зависи от техния Начинът за представяне на релациите зависи от техния мултипликатор:мултипликатор:

Отношение едно към едно.Отношение едно към едно. За да се представи За да се представи отношението има две стратегии. Ако всеки клас отношението има две стратегии. Ако всеки клас съответства на отделна таблица, както е показано на съответства на отделна таблица, както е показано на фигурата за отношенията между класовете фигурата за отношенията между класовете CourseCourse и и CourseVideoCourseVideo, тогава вторичният ключ трябва да се , тогава вторичният ключ трябва да се имплементира в една от двете таблици. В този пример имплементира в една от двете таблици. В този пример колоната колоната CourseVideo.CourseNumberCourseVideo.CourseNumber служи като вторичен служи като вторичен ключ към таблицата ключ към таблицата CourseCourse. От даннова гледна точка е . От даннова гледна точка е безразлично в коя таблица ще се постави вторичния ключ. безразлично в коя таблица ще се постави вторичния ключ. При еднопосочна асоциация е от значение и вторичен При еднопосочна асоциация е от значение и вторичен ключ се записва в таблицата, която запазва отношението. ключ се записва в таблицата, която запазва отношението.

Например, ако има еднопосочна асоциация от Например, ако има еднопосочна асоциация от PersonPerson към към Address, Address, тогава вторичния ключ трябва да се добави в тогава вторичния ключ трябва да се добави в таблицата таблицата PersonPerson. Втората стратегия се състои в запис на . Втората стратегия се състои в запис на данните на двата класа в една таблица. Например данните на двата класа в една таблица. Например агрегацията между класовете агрегацията между класовете CourseCourse and and CourseOverviewCourseOverview. .

Моделиране на отношения Моделиране на отношения (релации)(релации)

Моделиране на отношения Моделиране на отношения (релации)(релации)

Отношение едно към много.Отношение едно към много. Такова отношение е Такова отношение е отношението отношението offering of на фиг. 5.4.offering of на фиг. 5.4. То се инплементира То се инплементира в класовете чрез колекция, например в класовете чрез колекция, например HashsetHashset в в страната с мултипликатор 0..* и чрез една референция страната с мултипликатор 0..* и чрез една референция на обект в страната с мултипликатор 1. В този случай на обект в страната с мултипликатор 1. В този случай Course.seminarsCourse.seminars и и Seminar.courseSeminar.course, съответно. В , съответно. В релационната база тази релация се имплементира чрез релационната база тази релация се имплементира чрез вторичен ключ в страната с мултипликатор 0..* , в вторичен ключ в страната с мултипликатор 0..* , в случая случая Seminar.CourseNumber.Seminar.CourseNumber.

Отношение много към много.Отношение много към много. Отношението се Отношението се имплементира чрез асоциацитивна таблица в базата имплементира чрез асоциацитивна таблица в базата данни. Тази таблица съдържа само първичните ключове данни. Тази таблица съдържа само първичните ключове на двете бизнес таблици. На фигурата такова е на двете бизнес таблици. На фигурата такова е отношението instructs между класовете Professor и отношението instructs между класовете Professor и Seminar и се имплементира с таблицата Instructs в Seminar и се имплементира с таблицата Instructs в базата данни. С добавяне на асоциативна таблица се базата данни. С добавяне на асоциативна таблица се преобразува отношението много към много в две преобразува отношението много към много в две асоциации едно към много, които се имплементират по асоциации едно към много, които се имплементират по указания в т. 2 начин. указания в т. 2 начин.

Моделиране на отношения Моделиране на отношения (релации)(релации)

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

Релацията указва че професорът обучава по 1 Релацията указва че професорът обучава по 1 или повече семинари, което определя или повече семинари, което определя мултипликатора на релацията към мултипликатора на релацията към асоциативната таблица instructs – 1..*. асоциативната таблица instructs – 1..*. Обратната асоциация – всеки семинар се Обратната асоциация – всеки семинар се ръководи от 0..* професори, дефинирана в ръководи от 0..* професори, дефинирана в обектния модел, се моделира еквивалентно с обектния модел, се моделира еквивалентно с релацията от таблицата семинар Seminar към релацията от таблицата семинар Seminar към асоциативната таблица Instructs.асоциативната таблица Instructs.

Моделиране на отношения Моделиране на отношения (релации)(релации)

Мултипликаторите на асоциацията в класовата Мултипликаторите на асоциацията в класовата диаграма се кръстосват при нейното диаграма се кръстосват при нейното представяне във физическия даннов модел:представяне във физическия даннов модел:

Моделиране на отношения Моделиране на отношения (релации)(релации)

Общото правило за моделиране на обектните отношения е Общото правило за моделиране на обектните отношения е да се осигурява еквивалентност на мултипликаторите в да се осигурява еквивалентност на мултипликаторите в релационната схема. релационната схема.

Начини за моделиране на обектното отношение: Начини за моделиране на обектното отношение: едно към едно се моделира с релация едно към едно в едно към едно се моделира с релация едно към едно в

модела на базата данни; модела на базата данни; едно към много да се моделира с релация едно към едно към много да се моделира с релация едно към

много;много; много към много да се моделира с много към много. много към много да се моделира с много към много. Това не се изпълнява пряко в модела на базата данниТова не се изпълнява пряко в модела на базата данни, ,

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

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

Моделиране на отношения Моделиране на отношения (релации)(релации)

Рекурсивните отношения са такива, при Рекурсивните отношения са такива, при които в двете страни на отношението се които в двете страни на отношението се намира един и същ клас.намира един и същ клас.

Например, асоциацията Например, асоциацията prerequisitesprerequisites на на примерната йерархия, представя примерната йерархия, представя взаимовръзката от клас Course към себе си, взаимовръзката от клас Course към себе си, определящо, че всеки изучаван курс изисква определящо, че всеки изучаван курс изисква предварителното изучаване на други курсове. предварителното изучаване на други курсове. За моделирането на рекурсивните отношения За моделирането на рекурсивните отношения се използва същият подход, като на се използва същият подход, като на нерекурсивните. Асоциацията в примера може нерекурсивните. Асоциацията в примера може да се реализира чрез асоциативна таблица- да се реализира чрез асоциативна таблица- Prerequisites, Prerequisites, която съхранява като ключове която съхранява като ключове кодовете на курсовете и техните кодовете на курсовете и техните предварително изучавани курсове 0..* към 0..*. предварително изучавани курсове 0..* към 0..*.

Стратегии за имплементиране Стратегии за имплементиране

на кодана кода Съществуват три основни подхода, Съществуват три основни подхода,

наричани стратегии за капселоване при наричани стратегии за капселоване при имплементирането на модела на имплементирането на модела на интерфейса за съхраняване на обектите:интерфейса за съхраняване на обектите:

На грубата сила;На грубата сила; Създаване на обекти за достъп до Създаване на обекти за достъп до

базата данни (DAOs)базата данни (DAOs);; Със средствата за създаване на слоя Със средствата за създаване на слоя

за съхраняване. (Persistence за съхраняване. (Persistence frameworks).frameworks).

Стратегия на грубата силаСтратегия на грубата сила

Бизнес обектите директно се обръщат чрез кода Бизнес обектите директно се обръщат чрез кода на (SQL) към базата данни. В приложенията на на (SQL) към базата данни. В приложенията на Java това е възможно, посредством Java това е възможно, посредством интерфейсния протокол ( JDBC). Предимствата интерфейсния протокол ( JDBC). Предимствата на този подход са в бързото написване на на този подход са в бързото написване на малки приложения и/или прототипи. малки приложения и/или прототипи. Недостатъците са: Недостатъците са:

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

Изисква да се пишат части от код на SQL Изисква да се пишат части от код на SQL които да се тестват и поддържат.които да се тестват и поддържат.

Създаване на обекти за достъп Създаване на обекти за достъп до базата данни (DAOs)до базата данни (DAOs)

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

Например, класът Например, класът StudentStudent има клас има клас StudentDataStudentData който който имплементира кода на SQL. Тази стратегия е имплементира кода на SQL. Тази стратегия е подходяща за прототипи, малки системи (с по-малко от подходяща за прототипи, малки системи (с по-малко от 40 - 50 бизнес класове) или системи, при които при 40 - 50 бизнес класове) или системи, при които при които преходното моделиране е много трудно, които преходното моделиране е много трудно, например когато се използва съществуваща база например когато се използва съществуваща база данни. Главното предимство на DAOs спрямо директния данни. Главното предимство на DAOs спрямо директния подход е че бизнес класовете не са пряко зависими от подход е че бизнес класовете не са пряко зависими от базата данни. Данновите класове са пряко зависими от базата данни. Данновите класове са пряко зависими от нея. Необходимо е да се създават (напишат на Java) нея. Необходимо е да се създават (напишат на Java) такива класове или да се използва индустриалния такива класове или да се използва индустриалния стандарт на Java (JDOs), достъпни на страница стандарт на Java (JDOs), достъпни на страница http://www.jdocentral.comhttp://www.jdocentral.com. Главният недостатък на този . Главният недостатък на този подход е препрограмирането на данновите класове при подход е препрограмирането на данновите класове при промени в базата данни. промени в базата данни.

Със средствата за създаване на слоя Със средствата за създаване на слоя за съхраняване. (Persistence за съхраняване. (Persistence

frameworks)frameworks)Слоят на съхраняването напълно капсулира достъпа до Слоят на съхраняването напълно капсулира достъпа до

базата данни от бизнес обектите. Вместо да се пише код, базата данни от бизнес обектите. Вместо да се пише код, се дефинират метаданни, които представят се дефинират метаданни, които представят съответствието между бизнес обектите и данновите съответствието между бизнес обектите и данновите обекти. На базата на тези метаданни се генерира кода за обекти. На базата на тези метаданни се генерира кода за достъп, който той изисква за съхраняването на бизнес достъп, който той изисква за съхраняването на бизнес обектите и релациите между тях. Същината на тези обектите и релациите между тях. Същината на тези средства могат да се видят на страница средства могат да се видят на страница http://www.ambysoft.com/persistenceLayer.htmlhttp://www.ambysoft.com/persistenceLayer.html . . Предимството на този подход е че програмистите на Предимството на този подход е че програмистите на приложението не се нуждаят от познания за схемата на приложението не се нуждаят от познания за схемата на релационната база. Дори не е нужно да знаят, че техните релационната база. Дори не е нужно да знаят, че техните обекти се съхраняват в релационна база. Посредством обекти се съхраняват в релационна база. Посредством административен инстумент се дефинират връзките между административен инстумент се дефинират връзките между модела на обектите и данновия модел. С това се подобрява модела на обектите и данновия модел. С това се подобрява общата ефективност на слоя за представяне, защото общата ефективност на слоя за представяне, защото повечето разработчици на програми не знаят всички повечето разработчици на програми не знаят всички подходи, които експертите по бази данни използват при подходи, които експертите по бази данни използват при изграждане на слоя за представяне на данни. Главният изграждане на слоя за представяне на данни. Главният недостатък е че разработчиците трябва да познават недостатък е че разработчиците трябва да познават средствата за създаване на слоя за съхранение. средствата за създаване на слоя за съхранение.