БД и объектность

Тема в разделе "WASM.HEAP", создана пользователем _DEN_, 20 дек 2011.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Может быть спрошу глупость, но почему все современные реляционные БД имеют плоскую структуру в виде набора таблиц и набора отношений? Ну понятно, да, реляционность, вся фигня. Но ведь реляционность и объектность - не взаимоисключающие, а наоборот, взаимодополняющие свойства. Сейчас, в любой реляционной БД объектность приходится выстраивать руками. Ну например:

    table person: id, name

    table programmer: id (FK на person.id, отношение 1 к 1), specialization_id, ...

    table manager: id (FK на person.id, отношение 1 к 1), team_id, ...

    ХП создания программера:

    Код (Text):
    1. begin;
    2. insert into person (name) values ('Петя');
    3. insert into programmer (id, specialization_id, ...) values (last_insert_id(), 5, ...);
    4. commit;
    Аналогично - манагера. Получается, что объектность есть только в голове БД-дизайнера, и никак не представлена в синтаксических конструкциях. О ней разве что можно догадаться по наличию FK constraints и свойствам PK / FK (auto increment, null, и т.д.).

    Есть ли какие-то более семантически и синтаксисчески богатые методы по работе с объектостями в БД? Но при этом так, чтобы это было без оверхеда - как будто все прописано руками.

    UPD: Прежде всего интересует MySQL.
     
  2. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Зачем там обьектность?
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Вообще-то Oracle вполне понимает тип "таблица объектов". Самый злобный ООП-ахтунг типа множественного наследования там, ессно, отсутствует, но традиционное наследование и полиморфизм - имеется.
     
  4. simferty

    simferty New Member

    Публикаций:
    0
    Регистрация:
    19 дек 2011
    Сообщения:
    6
    _DEN_, для MySQL, мб, какие-нибудь приблуды есть. а если так нравится ооп - возьмите другую субд. для пущего гемора - ту же cache'. в ней и все ооп фичи, и sql запросы поддерживаются.
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    CyberManiac
    Ахтунга не надо, но как минимум надо полиморфные типы - чтобы programmer-ы и manager-ы могли быть получены единым списком как person-ы.

    simferty
    Если БД и буду менять, то скорее всего на оракл, и скорее всего - не скоро. Примерно тогда, когда буду большим и богатым, и настанет мир во всем мире.
     
  6. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    _DEN_, для полиморфизма (по крайней мере на выборку) можно присобачить VIEW, в майскуле они вроде есть.
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    В общем, всем спасибо, я узнал что у меня есть огромная семья что нужно курить ORM и смежные им решения. Удаляюсь на обдумывание.
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _DEN_
    Оператор точка есть как в Delphi так и в SQL.