Об'єктно-реляційний розрив

Об'єктно-реляційний розрив являє собою набір концептуальних і технічних труднощів, які часто зустрічаються, коли система управління реляційними базами даних (СУБД)  використовується в програмі, написаній в об'єктно-орієнтованому стилі, особливо, коли об'єкти або визначення класу відображаються в таблиці баз даних чи реляційних схемах.

Розрив

Інкапсуляція

Об'єктно-орієнтовані програми розроблені з урахуванням техніки приховування представлення.В рамках об'єктно-орієнтованого стилю відповідні властивості даного об'єкту не повинні бути представлені будь-яким інтерфейсом.  Тим не менш, об'єктно-реляційне відображення обов'язково виставляє основний контент об'єкту до взаємодії з інтерфейсом, що реалізація об'єкту вказати не може. Отже, об'єктно-реляційне відображення порушує інкапсуляцію об'єкту.

Доступ

У реляційному мисленні, "приватний" проти "публічний" доступ є відносною, а не абсолютною характеристикою стану даних, як в об'єктно-орієнтованій моделі. Реляційні і OO моделі часто мають конфлікти відносності проти абсолютизму класифікацій і характеристик.

Наслідування і поліморфізм

Під об'єктно-орієнтованою парадигмою, об'єкти мають інтерфейси, які разом забезпечують доступ тільки до внутрішніх частин об'єкта. Реляційна модель, з іншого боку, утилізує, отримані зміни відносин, щоб забезпечити різні перспективи та обмеження для забезпечення цілісності. Точно так само важливі концепції ООП для класів об'єктів, наслідування і поліморфізм яких не підтримуються реляційними базами даних.

Відображення у реляційну концепцію

Правильне відображення між реляційниими і об'єктно-орієнтованими концепціями може бути зроблено, якщо таблиці реляційних баз даних пов'язані з асоціаціями, знайденими в об'єктно-орієнтованого аналізі.

Відмінності в типах даних

Важливою невідповідністю між існуючими реляційними та ОО мовами є відмінності типів. Реляційна модель суворо забороняє за посиланням атрибути (або вказівники), у той час як OO-мови очікують перехід за посиланням. Скалярні типи і їх семантика оператора можуть значно відрізнятися між моделями, викликаючи проблеми у відображенні. Наприклад, більшість систем SQL підтримують рядкові типи з різним типом сортування та обмеженнями максимальної довжини (відкриті текстові типи, як правило, знижують продуктивність), у той час як більшість OO мови розглядають сортування тільки як аргумент для процедури сортування і рядки внутрішнім розміром наявної пам'яті. Більш тонкий, але відповідний приклад, що системи SQL часто ігнорують кінцеві прогалини в стрічках для порівняння, в той час як OO рядок бібліотеки немає. Як правило, не вдається побудувати нові типи даних для збереження інших примітивних типів в ОО мові.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.