Психология программирования объектно-ориентированных баз данных.

  Банников Н.А. www.stikriz.narod.ru Почта На главную страницу  
 

Рейтинг@Mail.ru

Причины создания универсальных баз данных

    Хороший вопрос для программиста УБД: "Что такое стул ?" Из возможных вариантов ответа может быть: "Это предмет на котором сидят".  Ошибочка вышла. На котором сидят - это только одно из свойств стула, так сказать способ его использования или функциональность. Стул - это седалище, спинка, ножки (ножка) и способ использования, может, еще что-то, да, каждая деталь - это целый список свойств со значениями - характеристиками, например цвет ножек. Представьте себе, что вы идете по улице и рассматриваете прохожих. Вот идет пожилой мужчина. Что Вы о нем думаете? Наверное, что это мужчина преклонных лет с голубыми глазами и сумкой в руках - так, почти, не о чем. УБД думает о нем так:  общий тип - человек (а это значит ... и далее по списку), разновидность - мужчина, из включенных свойств (вложенный слой) сумка. Сумка может включать слой с предметами, которые в ней лежат. Короче, просто кошмар какой-то. Это если бы Вы шли по парку и вместе с деревьями и цветами видели их внутреннее устройство вплоть до химических формул ферментов и волокон, можно и глубже копать.
    Суть в том, что описание типов начинается с самого простейшего, и далее по восходящей к более сложному. Вам ничего не мешает создавать каждый раз новые типы данных, но правильнее будет всегда использовать механизм наследования. Вам ничего не мешает описывать каждый объект как тип с простыми свойствами, но лучше описывать объект через набор типов, связанных ссылками или включением. Правильный вариант подразумевает работу с объектами полиморфно, например, улучшается поиск, а второй момент позволяет сконцентрироваться на главном, имея, однако, простой способ просмотра и изменения сложных свойств объекта. Любое место в УБД может быть документом. Вначале, вообще понятия документа не было. Было что-то наподобие "Избранного" в Internet Explorer е - переходы. Вы можете пройти весь путь от начала УБД - главной записи до нужного места, а можете сразу прыгнуть в подпространство и очутиться в нужном месте - главное пробормотать подходящее заклинание.
    Вообще, УБД во многом написана по мотивам древних представлений человечества о строении миров и отношениях между божествами и стихиями природы. Мне приходилось думать о таких абсолютно абстрактных вещах, что постепенное скатывание в область мистики для заимствования терминов и осмысления сути было практически предопределено с самого начала. Да, я не один такой. Вот фраза: "This firewall does not support masquerading." Это фраза по английский взята из руководства пользователя. Если переводить как нормальный человек мыслил еще каких-то 30 лет тому назад, то получится: "Эта огненная стена не поддерживает переодевания." Какая еще огненная стена ? Чем это она не поддерживает переодевания ? Но мы-то теперь знаем, что брандмауэр не позволяет нелегальное проникновение. Читаешь вот такие опусы из Help ов и прочей литературы и потихоньку приходишь к мысли, что, наверное, сказка про конька - горбунка вполне могла быть вовсе и не сказкой, а каким-нибудь Help ом к транспортному средству в вольном изложении не очень понятливых дикарей. А вообще, потрясающие вещи получаются. Как только я начал искать аналоги в древней литературе абстракциям в своей УБД, то сразу дело пошло быстрее, т.к. в этой же литературе есть описание следующего шага, который нужно сделать. 
    Давайте поиграем в детскую игру под названием "Что на что похоже". Первый пример: Бог говорит воде: "Да создаст вода всякую душу живую и т.д." Так кто создал души животных? Вода или Бог. Вроде как Бог творец, а создавала вроде как вода. Неувязочка что ли?  Никакой неувязочки нет. Вода создавала по закону, который дал Бог. Вот и получается, что вода только соавтор, даже, исполнитель, а творец все равно Бог. В УБД человек только говорит что создавать, а создает база данных сама по закону, который заложен человеком. Конечно, законов можно поиздавать различных много, но для этого не нужно базу данных переделывать. Вода она и есть вода. Если бы для каждого животного нужно было бы Богу воду переделывать, то то он бы намучился, наверняка за семь дней не управился. Так и нам не стоит писать много программ для каждого типа автоматизации. 
    Бог почему то создал венец творения не сразу, а с начало пошел от простейших по пути эволюции, как нам кажется. Даже человек получается из двух одноклеточных и проходит весь путь эволюции, становясь то рыбкой, то головастиком, то земноводным. Хоп и на человека становится похож. На черта это все тянуть, если можно бы и сразу в дамки? Да все просто объяснить. Конструкторы предков должны отработать на полную катушку. Сначала как для червячка и т.д. , а уже потом как для Homo. Почему же нам отказываться от этого механизма? Наследование вещь приятная и полезная. Потом, все мы знаем, что самосвал и Жигули - это автомобили, а Жигули и самолет - транспортные средства. Если Вы хотите отдохнуть в Сочи, то думаете, что надо бы доехать на каком-нибудь транспорте, узнаете цены, сроки, сервис в пути для максимального количества транспортных средств, а уже потом решаете, что поедете из Краснодара на поезде, например. Зачем же лишать пользователя возможности работать с объектами полиморфно? пусть он найдет неподписанные документы, а потом уже распечатает на подпись именно приказ, а не платежку. А если автоматизировать библиотеку или справочник, то наследование просто необходимо, т.к. мы ищем информацию о функции erf, например, а не автора и название книги. Меня всегда печалило, что в картотеке библиотеки нужно искать по автору. А если я в этой области новичок? 
    Какое расстояние от моего компьютера до вашего стола? У моего компьютера сейчас электрон стукнулся об атом кремния в процессоре и выбил вторичный электрон. А Вы своим прикосновением наэлектризовали коврик мыши. И там, далеко, и здесь электроны одинаковы. Для электрона такое расстояние - это бесконечность. Так почему же они имеют совершенно одинаковые свойства? Я более чем уверен, что в другой галактике есть точно такой же электрон, как на Вашем коврике. Как это объяснить? Помните о споре философов про первичное и вторичное? Мне импонирует теория про абсолют, который где то на том свете есть, а в нашем мире только его воплощение. Вот и в УБД есть описание объектов - дерево типов и данные - дерево данных. Все божества, например, Олимпа имели родственные связи и иерархические отношения, что по своей структуре - дерево или граф древовидного вида, как хотите. В УБД объекты описываются типами, которые тоже образуют дерево именно по тем же причинам, как и Олимп.  Значит тот свет - это справочник типов, а этот свет - это сами данные? Выходит так. Как известно, на том свете всегда есть главный Бог и помощники, которые управляют этим светом. Как Вы не говорите, но по сравнению со мной, например, Николай Чудотворец - это Бог, может менее божественный, чем Иисус, который в свою очередь только сын. Так чем же отличается Христианство от язычества? Да ничем. Принципиально ничем. Все дело в мелочах и обрядах. Если в язычестве жарили реального ягненка, то в Христианстве едят его плоть и пьют его кровь в виде хлеба и вина, а ягненок уже давно с отцом. Что такое Бог? Это все и ничего. Скажите какой он? И будете неправы, т.к. он непознаваем как вакуум, который содержит в себе все, ничего не содержа. Так и в УБД есть главный тип - тип без свойств, но с именем. Помните фразу: "Вначале было Слово, и Слово было у Бога, и Слово было Бог". В процессе наследования все создается из главного типа - Бога (только название). Так что фразу: "Бог в каждом из нас", можно перефразировать применительно к УБД: "Главный тип в каждом наследнике".
    Помните о Волхвах, которые предсказали появление Христа? Они все имели посох - символ оси мира. Ось мира - это то на чем держится мир. "Дайте мне точку опоры, и я переверну мир!" - это та самая точка. В УБД тоже есть главная запись, которая является как бы осью мира. Её нельзя удалить, что символизирует собой невозможность конца света. Можно удалить все данные, но затем набить новые. Все начнется сначала, но не для мира, который вечен.
    Многое еще могу сказать... Советую Вам быть любознательными, искать аналогии в окружающем мире, строить объекты как можно разумнее, не стесняться ветвить данные и строить сложные иерархии типов, предусматривая типы, которые никогда не будут иметь соответствующих экземпляров в УБД, но помогут Вам в процессе наследования.

    Банников Н.А. www.stikriz.narod.ru почта 2000 г.

Сайт создан в системе uCoz