МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||||||||||||||||||||
ПрикладПрипустим, вміст доменів наступний: - = {Бовкун, Вередун, Прядун} - = {Фізика, Хімія} - = {3,4,5} Тоді повний декартовий добуток складається з 18 трійок - прізвище, навчальна дисципліна, оцінка. Тоді відношення R може моделювати реальну ситуацію і містити п'ять рядків, які відповідають результатам сесії (Вередун екзамен з фізики не здавав):
3.3.3. Нормалізація Метою нормалізації є усунення недоліків структури БД, які призводять до шкідливої надмірності в даних, яка в свою чергу потенційно призводить до різних аномалій і порушень цілісності даних. Теоретики реляційних баз даних в процесі розвитку теорії виявили та описали типові приклади надмірності і способи їхнього усунення. Нормальна форма — формальна властивість відношення, яка характеризує ступінь надмірності збережуваних даних і можливі проблеми. Кожна наступна нормальна форма в нижченаведеному списку (крім ДКНФ) в деякому сенсі є досконалішою, ніж попередня, з точки зору усунення надмірності. - Перша нормальна форма (1НФ, 1NF) - Друга нормальна форма (2НФ, 2NF) - Третя нормальна форма (3НФ, 3NF) - Нормальна форма Бойса — Кодда (НФБК, BCNF) - Четверта нормальна форма (4НФ, 4NF) - П'ята нормальна форма (5НФ, 5NF) - Доменно-ключова нормальна форма (ДКНФ, DKNF). 3.4. Об’єктно-орієнтовані БД. 3.4.2. Об'єктно-орієнтовані БД Об'єктно-орієнтована база даних (ООБД) - база даних, в якій дані оформлені у вигляді моделей об'єктів, що включають прикладні програми, які управляються зовнішніми подіями [18]. Результатом поєднання можливостей (особливостей) баз даних і можливостей об'єктно-орієнтованих мов програмування є Об'єктно-орієнтовані системи управління базами даних (ООСУБД). ООСУБД дозволяє працювати з об'єктами баз даних так само, як з об'єктами в програмуванні в об'єктно-орієнтованих мовах програмування. Деякі об'єктно-орієнтовані бази даних розроблені для щільної взаємодії з такими об'єктно-орієнтованими мовами програмування як Python, Java, C#, Visual Basic .NET, C++, OBJECTIVE-C і Smalltalk; Приклади об'єктно-орієнтованих СУБД: Cache, Gemstone, ONTOS. Об'єктно-орієнтована модельбазується на концепціях: - об'єкту і ідентифікатора об'єкту; - атрибутів і методів; - класів; - ієрархії і спадковості класів. Будь-яка сутність реального миру моделюється у вигляді об'єкту. Будь-який об'єкт при своєму створенні отримує унікальний ідентифікатор, що генерується системою, який пов'язаний з об'єктом у весь час його існування і не міняється при зміні стану об'єкту. Кожен об'єкт має стан і поведінку. - Стан об'єкту - набір значень його атрибутів. - Поведінка об'єкту - набір методів (програмний код), що оперують над станом об'єкту. - Значення атрибуту об'єкту - це теж деякий об'єкт або множина об'єктів. - Стан і поведінка об'єкту інкапсульовані в об'єкті. Взаємодія між об'єктами проводиться на основі передачі повідомлень і виконанні відповідних методів.
Множина об'єктів з одним і тим же набором атрибутів і методів утворює клас об'єктів. Об'єкт повинен належати тільки одному класу (якщо не враховувати можливості спадкоємства, див. наступний абзац). Допускається наявність примітивних зумовлених класів, об'екти-екземляри яких не мають атрибутів: цілі, рядки і так далі Клас, об'єкти якого можуть служити значеннями атрибуту об'єктів іншого класу, називається доменом цього атрибуту. Допускається породження нового класу на основі вже існуючого класу - спадкоємство. В цьому випадку новий клас, званий підкласом існуючого класу (суперкласу) успадковує всі атрибути і методи суперкласу. У підкласі, крім того, можуть бути визначені додаткові атрибути і методи. Розрізняються випадки простого і множинного спадкоємства. У першому випадку підклас може визначатися тільки на основі одного суперкласу, в другому випадку суперкласів може бути декілька. Якщо в мові або системі підтримується одиничне спадкоємство класів, набір класів утворює деревовидну ієрархію. При підтримці множинного спадкоємства класи зв'язані в орієнтований граф з коренем, званий решіткою класів. Об'єкт підкласу вважається таким, що належить будь-якому суперкласу цього класу. Допускається перевизначення атрибутів і методів суперкласу в підкласі(перевантаження методів). Ця можливість збільшує гнучкість, але породжує додаткову проблему: при компіляції об'єктно-орієнтованої програми можуть бути невідомі структура і програмний код методів об'єкту, хоча його клас (у загальному випадку - суперклас) відомий. Для вирішення цієї проблеми застосовується так званий метод пізнього зв‘язування, що означає, по суті справи, інтерпретаційний режим виконання програми з розпізнаванням деталей реалізації об'єкту під час виконання посилки повідомлення до нього. Введення деяких обмежень на спосіб визначення підкласів дозволяє добитися ефективної реалізації без потреб в інтерпретації
Оскільки загальноприйнятого визначення "об'єктно-орієнтованої моделі даних" не існує будемо говорити лише про "об'єктний" підхід до логічного подання даних і про різні об'єктно-орієнтовані способи його реалізації.
Будь-яка модель даних повинна включати три аспекти: - структурний, - цілісний , - маніпуляційний. Подивимося, як вони реалізуються на основі об'єктно-орієнтована парадигми програмування: Структура: Структура об'єктної моделі описуються за допомогою трьох ключових понять: 1. інкапсуляція- кожен об'єкт володіє деяким внутрішнім станом (зберігає усередині себе запис даних), а також набором методів - процедур, за допомогою яких (і тільки таким чином) можна дістати доступ даним, що визначають внутрішній стан об'єкту, або змінити їх. Таким чином, об'єкти можна розглядати як самостійна суть, відокремлена від зовнішнього світу. Наступний приклад демонструє, що ми не можемо безпосередньо звернутися до даних об'єкту, а повинні викликати метод (Move) для зміни його даних і (GETX, GETY) для причитування значень цих даних. Тобто об'єкт приховує свою внутрішню структуру, саме ця властивість і називається "інкапсуляцією".
Приклад: Class Point { // вводимо новий тип даних - об'єкт "крапка" X,y : int; // дані об'єкту - координати точки ......... Point(X : int, Y : int); // конструктор об'єкту - процедура, що викликається при // визначенні змінної на базі об'єкту і // що надає значення його даним ......... Draw(); // метод "намалювати крапку" Erase(); // метод "стерти крапку" Move(newx,newy); // метод "перемістити крапку" (змінює дані об'єкту) int GETX(); // метод "надати значення поля X" int GETY(); // метод "надати значення поля Y" ......... // всі методи повинні бути описані, наприклад реалізація методу Move: Move(newx : int, newy : int){ X=newx; // запис нових даних в об'єкт Y=newy; // } } // кінець опису об'єкту Begin // основна процедура програми Point A(0,0); // створити новий об'єкт і привласнити йому дані for i=1 to 100 // створити цикл A.Draw(); // намалювати крапку A.Hide(); // стерти крапку A.Move(i,i*10); // привласнити екземпляру об'єкту нові дані endfor; print(A.GetX(),A.GetY()); // отримати і надрукувати дані об'єкту End.
2. Спадковість- має на увазі можливість створювати з класів об'єктів нові класи об'єкти, які успадковують структуру і методи своїх предків, додаючи до них риси, що відображають їх власну індивідуальність. Спадковість може бути проста (один предок) і множинна (декілька предків). Приклад: Class Circle extend Point { // створюємо новий об'єкт "коло", що успадковує // властивості об'єкту "крапка" Radius : int; // додаємо нове поле "радіус", поля X і Y успадковуються // від батьківського об'єкту ............. Circle(X:int,y:int,radius:int); // конструктор нового об'єкту ............. Draw(); // перевизначаємо деякі методи Hide(); // батьківського об'єкту, метод Move успадковується ............. Changeradius(Radius); // вводимо новий метод "змінити радіус" ............. Getradius(); // вводимо новий метод "набути значення радіусу" // методи GETX і GETY успадковуються від батьківського // об'єкту }
2. Спадковість- можливість створювати з класів об'єктів нові класи об'єкти, які успадковують структуру і методи своїх предків, додаючи до них риси, що відображають їх власну індивідуальність. Спадковість може бути проста (один предок) і множинна (декілька предків). Приклад: Class Circle extend Point { // створюємо новий об'єкт "коло", що успадковує // властивості об'єкту "крапка" Radius : int; // додаємо нове поле "радіус", поля X і Y успадковуються // від батьківського об'єкту ............. Circle(X:int,y:int,radius:int); // конструктор нового об'єкту ............. Draw(); // перевизначаємо деякі методи Hide(); // батьківського об'єкту, метод Move успадковується ............. Changeradius(Radius); // вводимо новий метод "змінити радіус" ............. Getradius(); // вводимо новий метод "набути значення радіусу" // методи GETX і GETY успадковуються від батьківського // об'єкту }
3. поліморфізм -різні об'єкти можуть по різному реагувати на однакові зовнішні події залежно від того, як реалізовані їх методи. Приклад: Begin Point A(100,100); Circle B(200,200,50); A.Draw(); // малює крапку B.Draw(); // малює коло End. Цілісність даних Для підтримки цілісності об'єктно-орієнтований підхід пропонує використовувати наступні засоби: - автоматична підтримка відносин спадковості - можливість оголосити деякі поля даних і методи об'єкту як "приховані", не видимі для інших об'єктів; такі поля і методи використовуються тільки методами самого об'єкту - створення процедур контролю цілісності усередині об'єкту. Засоби маніпулювання даними: В об'єктно-орієнтованому програмуванні відсутні загальні засоби маніпулювання даними, такі як реляційна алгебра або реляційне числення. Робота з даними ведеться за допомогою однієї з об'єктно-орієнтованих мов програмування загального призначення, звичайно це Smalltalk, C++ або Java.
Деякі підсумки: У об'єктно-орієнтованих базах даних, на відміну від реляційних, зберігаються не записи, а об'єкти. ОО-підхід представляє досконаліші засоби для відображення реального миру, ніж реляційна модель: - природне подання даних. У реляційній моделі всі відношення належать одному рівню, саме це ускладнює перетворення ієрархічних зв'язків моделі "суть-зв'язок" в реляційну модель. - є можливість визначення нових типів даних і операцій з ними. - В той же час, ОО-моделі властивий і ряд недоліків: - відсутні могутні непроцедурні засоби витягання об'єктів з бази. Всі запити доводиться писати на процедурних мовах, проблема їх оптимізації покладається на програміста. - замість чисто декларативних обмежень цілісності (типу явного оголошення первинних і зовнішніх ключів реляційних таблиць за допомогою ключових слів PRIMARY KEY і REFERENCES) або напівдекларативних тригерів для забезпечення внутрішньої цілісності доводиться писати процедурний код. Очевидно, що обидва ці недоліки пов'язані з відсутністю розвинених засобів маніпулювання даними. Це завдання вирішується двома способами - розширення ОО-мов у бік управління даними (стандарт ODMG), або додавання об'єктних властивостей в реляційні СУБД (Sql-3, а також так звані об'єктно-реляційних СУБД).
3.4.2. Об'єктно-реляційні БД Останнім часом виробники СУБД прагнуть з'єднати два цих підходу і проповідують об'єктно-реляційну модель представлення даних [1]. Приклади таких СУБД - IBM Db2 for Common Servers, Oracle 10, SQL Server 2008. Один із способів об'єднання можливостей реляційного і об'єктно-орієнтованого підходу до управління даними запропонував відомий американський вчений Майкл Стоунбрейкер [12]. Згідно його переконанням реляційну СУБД потрібно просто доповнити засобами доступу до складних даних. При цьому ядро СУБД не вимагає переробки, як у випадку з Sql3, і зберігає всі властиві реляційних системам. Об'єктні розширення реалізуються у вигляді надбудов, які динамічно підключаються до ядра.
3.4.3. Переваги моделі ООБД 1. Визначення призначених для користувача абстракцій Об'єктно-орієнтовані бази даних надають можливість визначати нові абстракції і управляти реалізацією таких абстракцій. Ці нові абстракції можуть відповідати структурам даних, потрібним в складних завданнях, новим абстрактним типам даних. (створення нового класу з атрибутами і методами, мати класи, що успадковують атрибути і методи від суперкласів, створювати екземпляри класу, кожен з яких володіє унікальним об'єктним ідентифікатором, витягувати ці екземпляри поодинці або групами, а також завантажувати і виконувати методи) 2. Полегшене проектування деяких зв'язків У об'єктно-орієнтованих базах даних підтримується засіб інверсних зв'язків для виразу взаємних посилань між двома об'єктами (бінарний зв'язок). Така система забезпечує посилальну цілісність шляхом встановлення відповідного зворотного посилання відразу ж після створення прямого посилання. (Objectstore ) 3. Відсутність потреби у визначенні ключів У моделі ООБД є поняття ідентифікаторів об'єктів, що автоматично генеруються системою і гарантовано унікальних для кожного об'єкту. В моделі ООБД усувається потреба у визначенні ключів. По-перше, ідентифікатор об'єкту не може бути модифікований додатком. По-друге, поняття ідентифікованості об'єкту залучає окреме і узгоджене поняття ідентичності, не залежне від того, яким чином проводиться доступ до об'єкту або як об'єкт моделюється за допомогою описових даних 4. Наявність предикатів порівняння У РБД порівняння завжди базується лише на значеннях. У цій моделі два кортежі є однією суттю, якщо всі їх ключові атрибути мають однакові значення. Проте в моделі ООБД були розроблені і визначені інші типи порівняння: 1. Рівність об'єктів на основі їх ідентичності. Два об'єкти, S1 і S2 рівні, якщо вони є одним і тим же об'єктом (тобто мають один і той же ідентифікатор об'єкту). 2. Рівність об'єктів на основі значень. Це можна визначити в два заходи - (a) два примітивні об'єкти рівні, якщо мають одне і те ж значення; (b) два не примітивні об'єкти рівні, якщо вони мають однакове число властивостей, і для кожної властивості pi об'єкту S1 існує властивість pj об'єкту S2, рівна йому за значенням. 3. Рівність властивостей на основі значень. 4. Рівність властивостей на основі їх ідентичності. 5. Менша потреба в з'єднаннях В об'єктно-орієнтованих базах даних неявні з'єднання, що породжуються ієрархічною вкладеністю об'єктів, відрізняються від явних об'єднань. Останні нагадують реляційні з'єднання: два об'єкти порівнюються явним чином по значеннях атрибутів або об'єктних ідентифікаторів. Більш того, всі явні з'єднання (засновані на порівнянні значень або ідентифікаторів) не можуть бути виражені на реляційній мові запитів, оскільки в РБД будь-який предикат може містити тільки атомарні атрибути [7]. 6. Виграш в продуктивності -? 7. Підтримка версій і тривалих транзакцій У РБД не підтримуються ні робота з версіями, ні тривалі транзакції. Така підтримка є в деяких ООБД, хоча і з обмеженими можливостями. 8. Об'єктна алгебра Об'єктна алгебра не так детально розроблена і не є такою ж зрілою, як реляційна алгебра. Але як би там не було, така алгебра існує, і в ній визначаються п'ять фундаментальних операцій, що зберігають об'єкти: union, difference, select, generate і map[1]. На основі цих фундаментальних операцій можуть бути визначені інші операції, наприклад, intersection. Правила перетворень для логічної оптимізації виразів об'єктної алгебри із збереженням еквівалентності виводяться в [2] і [3]. Тоді як операції union, difference і mapпроводять, головним чином, відображення «один до одного», операції select і generateпроводять відображення «один до багатьом». Збереження об'єктів означає, що операції алгебри повертають об'єкти, що належать до раніше визначених класів бази даних, і не створюють нових об'єктів. Оператор union повертає об'єкти, що містяться в множині P або в множині Q, або в обох множинах. Оператора difference повертає набір об'єктів, що належать множині P, але не множині Q. Select повертає підмножину введеної множини. Generateгенерує об'єкти з тих, що належать вхідній множині. Map повертає множину об'єктів, що утворюються в результаті кожного застосування послідовності методів.
1. M. Scholl, H. Schek, «Relational object model». 3rd Int. Conf. On Database Theory, LNCS, vol. 470, Springer Verlag, 1990. 2. D.D. Straube, M.T. Ozsu, «Queries and query processing in object-oriented database systems». ACM Transactions on Information Systems, Oct. 1990. 3. D.D. Straube, M.T. Ozsu, «Execution Plan Generation for Object-Oriented Data Model». 2nd Int. Conf. on Deductive and Object-Oriented Databases, Munich, Germany, Dec. 1991.
3.4.4. Недоліки моделі ООБД 1. Відсутність інтероперабельності між РБД і ООБД Щоб ООБД змогли зробити значний вплив на ринок баз даних, необхідно виконати ряд умов. 1.Перетворити ООБД на системи баз даних, що володіють достатньою сумісністю з РБД, що повністю оперилися. Потрібний якийсь шлях міграції, щоб забезпечити співіснування тих, що існують нині і нових продуктів, а також плавний перехід від перших до других. 2.Запропонувати засоби розробки додатків і засобу доступу до об'єктно-орієнтованих баз даних. 3.Уніфікувати архітектуру РБД і ООБД. 4.Уніфікувати моделі даних РБД і ООБД. 2. Недостатність засобів для оптимізації запитів Оптимізацію запитів до ООБД утрудняє додаткова складність самої об'єктно-орієнтірованій моделі даних 3. Відсутність засобів забезпечення запитів мова запитів не сумісна з ANSI SQL. Серед цих засобів забезпечення запитів немає вкладених підзапитів, запитів з множинами (union, intersection, difference), агрегатних функцій і GROUP BY, з'єднання декількох класів - можливостей, повністю підтримуваних в РБД [25]. Крім того, відсутній стандарт для об'єктних запитів, хоча треба сказати, що робилися спроби розробити об'єктну мову SQL [14]. Sql3, ймовірно, затримується на декілька років. 4. Відсутність підтримки подань 5. Проблеми з безпекою –відсутня підтримка авторизації, не автоматизована система блокування
Читайте також:
|
||||||||||||||||||||||||||
|