Классика баз данных - статьи



         

Рассогласованность объектного и реляционного подходов


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

Объектные системы обычно характеризуются четырьмя базовыми компонентами: идентификацией (identity), состоянием (state), поведением (behavior) и инкапсуляцией (encapsulation). Идентификация в большинстве объектно-ориентированных (ОО) языков является неявным понятием, состоящим в том, что у любого объекта имеется уникальный идентификатор, отделенный от его состояния (значения внутренних полей объекта) – два объекта с одинаковым состоянием являются отдельными самостоятельными объектами, несмотря на то, что зеркально отображаются один на другой. Отсюда происходят дискуссии относительно «идентичности и эквивалентности» объектов в языках, подобных C++, C# или Java, где разработчикам необходимо различать операции «a == b» и «a.equals(b)». Поведение объекта довольно легко наблюдать, оно определяется набором операций, которые могут вызываться клиентом для манипулирования объектами, их изучения или для какого-либо взаимодействия с ними. (Это отличает объекты от пассивных структур данных в процедурных языках, подобных C.) Инкапсуляция является важным элементом объектного подхода, предотвращающим внешнее манипулирование внутренними частями объекта и обеспечивающим возможность эволюции интерфейса объекта. (Как ни странно, применение инкапсуляции для упрощения сопровождения программного обеспечения оказалось важным побуждающим мотивом почти во всех новшествах языковой компьютерной науки (Linguistic Computer Science). Исследователи процедурной, функциональной, объектной, аспектной и даже реляционной технологий (([Date02]) и других языков указывают на «инкапсуляцию» как на один из наиболее важных факторов.) Из этих понятий можно вывести более интересные понятия, такие как тип – формальное объявление состояния и поведения объектов; ассоциация, позволяющая типам ссылаться друг на друга на основе легковесных ссылок вместо того, чтобы включать в один объект состояние другого объекта (что иногда называют композицией); и полиморфизм – возможность подстановки некоторого объекта там, где ожидается наличие объекта другого типа.




Содержание  Назад  Вперед