powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объектная надстройка над реляционной БД
25 сообщений из 60, страница 1 из 3
Объектная надстройка над реляционной БД
    #32341188
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь на тему сабжа уже много дискуссий велось, но я все таки рискну :)
В общем хочу реализовать примерно такую модель:
Есть некая система. Типы данных в ней - стандартные (int, string, итд) и мои - документ, справочник и таблица.
разные типы документов хранятся в разных таблицах (соответственно), со справочниками и таблицами то же самое. Есть только таблица описывающая их поля. Само собой - в документе (справочнике, таблице) например может быть поле типа документ, справочник или таблица.
Как я хочу чтобы это выглядело:
Есть класс ЖурналДокументов. Каждый экземпляр класса указывает на список всех документов конкретного типа. Я могу из него получить экемпляр класса Документ - опять же указатель на конкретный документ. Когда я получаю поля документа - я могу получить число, строку, или указатель на документ, справочник или таблицу.
Есть ли у кого-то идеи как это можно реализовать. И имеет ли смысл? :)
Пишу на C#.
Вроде понятно объяснил... Ну на всякий случай пример:
DocumentList DList = new DocumentList ("НалоговаяНакладная");
Document Doc = DList.GetDocument(.....);
Table T = Doc.Fields("Таблица");
Document D = Doc.Fields("Основание");
Storage S = Doc.Fields("Контрагент");

или что то вроде
А, да. Еще я хочу чтобы классы Storage, Document, Table использовались для всех типов справочников, документов, таблиц. Т.е. чтобы не надо было делать наследника от этих классов для документа, скажем, расходная накладная...
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32342707
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Передо мной это посмотрело 70 человек. Никто не ответил. Наверное всем уже надоело прикручивать надувные шины к асфальтовому катку. И скорости все равно нет, и асфальт неровный получается.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32342789
mega_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!!!
недавно ради интереса сделал в google поиск по ключевым словам persistence layer и натолкнулся на ссылку как раз по теме и есть реализация на c#
и даже можно было скачать какую-то версию для ознакомления.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343017
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Cat2:
То что я видел здесь раньше отличается от того что хочу сделать я.
Мне интересно, что неправильно в моей идее. Если отбросить проблему скорости. Что некрасивого в такой модели доступа к данным?
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343028
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем отличается, если не секрет?
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343175
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Наверное всем уже надоело прикручивать надувные шины к асфальтовому катку.

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

--И скорости все равно нет, и асфальт неровный получается

ИМХО, скорость зависит исключительно от "мощности мотора", а "ровность асфальта" от "круглости" катков (....рел. модель данных фореве!;). Когда то мощности не хватало даже для маленького каточка :). Реляционные СУБД - сложные системы , требующие значительных вычислительных ресурсов. ОО-парадигма тоже на халяву не реализуется. А поскольку ОО- и Р- ...мммм... ортогональны друг-другу то мотор потребуется ....мммм.....не ОО+Р, а ОО*Р мощности. Однако такая система возможна.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343238
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2U-gene:
И все таки не понимаю - неужели это получается настолько криво и некрасиво?
По-моему было бы неплохо работать с объектами вместо таблиц - в данной конкретной задаче... Меня честно говоря больше интересовал вопрос реализации, а не имеет ли это смысл. Думал может кто подскажет как это реализовать правильно...
Или тогда второй вариант:
Как можно реализовать систему у которой полем в таблице может быть документ, справочник, таблица, итд. Просто хочется написать какой-то универсальный интерфейс, т.к. в той модели что я разработал - мы не знаем заранее какие типы документов/справочников/таблиц у нас есть, есть только таблицы описывающие поля...
Может кто подскажет где можно найти описание хранения данных такого рода?
Я хочу чтобы это было аналогично 1С - вот думаю как это реализовать грамотно.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343263
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ все таки не понимаю - неужели это получается настолько криво и некрасиво?
Да, вот как раз твой ответ: авторЯ хочу чтобы это было аналогично 1С - вот думаю как это реализовать грамотно 1С хороший пример.

Есть еще правильные примеры - например SAP/R3. Если есть в запасе несколько тысяч человеко-лет, то вперед. :)

авторПо-моему было бы неплохо работать с объектами вместо таблиц - в данной конкретной задаче... Меня честно говоря больше интересовал вопрос реализации, а не имеет ли это смысл. Думал может кто подскажет как это реализовать правильно...
Или тогда второй вариант:

Дык смысл должен быть - иначе как с этим работать?

авторКак можно реализовать систему у которой полем в таблице может быть документ, справочник, таблица, итд. Просто хочется написать какой-то универсальный интерфейс, т.к. в той модели что я разработал - мы не знаем заранее какие типы документов/справочников/таблиц у нас есть, есть только таблицы описывающие поля...

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

Тока смысл?
т.к. в той модели что я разработал - мы не знаем заранее какие типы документов/справочников/таблиц у нас есть, есть только таблицы описывающие поля...
А что за такая система, где неизвестно, чего есть? А как с этим работать?

-- Tygra's --
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343308
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что за такая система, где неизвестно, чего есть? А как с этим работать?

Как бы объяснить...
В общем - скажем в одной программке (а-ля конфигуратор в 1С, я создаю тип документа (буду от него отталкиваться). Описываю поля, одно поле - дата, другое - справочник, вставляю табличную часть.
У меня в таблице описаний типов документов появляется описание поля для
каждого этого документа и имя таблицы в которой это будет все хранится.
И создаю таблицу, в первом поле дата, в другом ID элемента справочника, в третьем имя таблицы.

И по-моему было бы удобно сделать универсальный класс для работы со всеми типами документов. Через Document.Fields["НазваниеПоля"].Value получать либо значение конкретного поля, либо ссылку на класс документ, справочник, таблица.
У нас есть конструктор типов документов и справочников, и есть библиотека универсальных классов для работы с ними. Удобно должно быть..

По-моему красиво. Вот что здесь неправильно? Где я тут нелогично рассуждаю?
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343343
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как потом запросы-то будешь делать? Скорость будет еще хуже, чем у 1С

-- Tygra's --
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343345
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--И все таки не понимаю - неужели это получается настолько криво и некрасиво?

Ну это у кого как :). И опять же, как задачу ставить. Ежели писать SAP то потребуется колоссальный труд. Но это ежели писать SAP.

Я же склонился к мысли, что вся объектность может уместиться в не очень большом и не очень сложном трансляторе, прикрученном к ..ммм... реляциооной СУБД. Прототип такого транслятора небольшая группа энтузазистов может написать не более чем за ...мммм... :) полгода. Я знаю как он должен работать. Только надо понимать, что полученные объекты будут несколько (но не очень сильно) отличаться от того, что мы привыкли видеть в традиционных языках. Но то, что, мы получим полноценную персистную объектную систему (с идентифицируемостью, с наследованием в т.ч. множественным, с полиморфизмом, с функциональностью и т.п заморочками), остающуюся полноценной реляционной системой, - это у меня никакого сомнения не вызывает.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343373
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК.
Тогда как правильно построить БД, в которой можно будет создавать пользовательские типы документов и справочников? Кто-то имел опыт? Есть какие то ссылки?
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343378
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте все-таки определимся с целью

Значит, хотите так

Код: plaintext
1.
2.
3.
4.
5.
6.
Пишу на C#. 
Вроде понятно объяснил... Ну на всякий случай пример: 
DocumentList DList = new DocumentList ( "НалоговаяНакладная" ); 
Document Doc = DList.GetDocument(.....); 
Table T = Doc.Fields( "Таблица" ); 
Document D = Doc.Fields( "Основание" ); 
Storage S = Doc.Fields( "Контрагент" ); 


А почему не так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Пишу на TSQL
Вроде понятно объяснил... Ну, на всякий случай пример: 

EXEC CreateDocumentList 'НалоговаяНакладная', @list_id output
EXEC GetDocument @list_id, @doc_id output
EXEC GetDocumentFields 'Таблица', @table_id output
EXEC GetDocumentFields 'Основание', @doc_id output
EXEC GetDocumentFields 'Контрагент', @storage_id output


Если с ответом затрудняетесь - то это просто флейм
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343396
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А причем здесь T-SQL или C#? Я просто рассказал как я это хотел бы видеть...

Мне интересно было вот что:
Как _грамотно_ спроектировать БД, в которой есть пользовательские типы документов, и как сделаны в них ссылки на другие документы (справочники итд).
"Как нибудь" я могу и сам придумать, мне было интересно кто такое уже реализовывал, и как. Здесь же вроде как профессионалы сидят.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343413
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что и требовалось доказать - вам "Объектная надстройка над реляционной БД" как козе баян

Теперь о
Как _грамотно_ спроектировать БД, в которой есть пользовательские типы документов, и как сделаны в них ссылки на другие документы (справочники итд).

В бд это делается с помощью внешних ключей (или я не правильно понял вопрос?)

P.S> извините если уж совсем не то объясняю - но как спросили так ответил!
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343421
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То funikovyuri

А можно...а можно...а можно я за него отвечу? :) Потому что в первом случае мы создаем тип "документ", а во втором пользуемя исключительно функциями и идентификаторами.. Это чем то напоминает сравнение программ на С++ и С. Соответсвенно Т-SQL и С# очень даже при чем.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343435
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 U-gene

Ну ладно тебе - это и ежу понятно - я спрашивал какой выигрыш _Mac_ хотел поиметь со своей прослойки - его ответ очень неоднозначно дает понять что он не в курсе. Все - далее 3х звенку в данном конкретном случае обсуждать далее смысла не имеет
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343451
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ok. Попробуем так:
Я хочу создавать пользовательские типы документов и проч в одном приложении, и реализовать интерфейс доступа для использования в других.
Что вы скажете по этому поводу?

P.S. Наверное я действительно криво объясняю - вы уж протите, ну не профессионал я :)
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343465
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 _Mac_

P.S. Наверное я действительно криво объясняю - вы уж протите, ну не профессионал я :)

Да я тоже - но вот с такими вопросами Папу Карлу например вы отвечать не заставите

Я хочу создавать пользовательские типы документов и проч в одном приложении, и реализовать интерфейс доступа для использования в других.

Обычно хотят 1) Создать структуру БД, удовлетворяющую требованиям.
2) Создать пользовательский интерфейс для доступа к этой БД

Вам чего?
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343487
Фотография Allvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется тут не коректно задан вопрос .....
Как я понял эта надстройка должна реализовыватся не на уровне БД....
На уровне БД все вроде просто. Получится что то типа: таблица типа докуметов, таблица полей типов документов, таблица документов определённого типа ...... (в соседнем форуме MSSQL пришли к выводу что нечего сильно отличающегося от этой модели не придумать ..... )
ИМХО основная проблема "объектной настройки" в реализации классов для работы с такой структурой БД.....
Или что то не так понимаю ??
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343494
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 funikovyuri:
Значит так:
Я хочу создать систему, в которой есть такие понятия как документ, справочник и таблица (как табличная часть документа в частности).
Структуру таблиц я уже примерно расписал. В общем идея в том что есть таблица описания документов (в ней есть описание для каждого поля) и имя таблицы в которой хранятся собственно сами данные.
Дальше, хотел предоставить интерфейс, чтобы можно было в отдельной программе обращаться к этим данным зная только названия типов (например "РасходнаяНакладная". То к чему я пришел - написал в самом первом письме.
Может это реализуют как то по-другому....Я ж не знаю :)
Вот. Пример работы - это приблизительно так как работать с документами в 1С на встроенном языке.
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343499
_Mac_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Allvin:
Именно то что я хотел сказать. Спасибо :))
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343523
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Allvin \r
\r
ИМХО основная проблема "объектной настройки" в реализации классов для работы с такой структурой БД..... \r
Или что то не так понимаю ??\r
\r
Cat2 очень хорошо сказал\r
/topic/62285#445564\r
\r
2_Mac_ \r
\r
В общем идея в том что есть таблица описания документов (в ней есть описание для каждого поля) и имя таблицы в которой хранятся собственно сами данные. \r
\r
Складывается впечатление что обсуждать что-то еще очень рано. Я бы посоветовал какую-нибудь книгу про проектирование БД (ну там нормализация и т.д.) - потому что у вас в голове каша. Посмотрите на такую реализацию\r
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
\r
document_types (document_type_id primary key,name)\r
documents (document_id primary key, document_type_id)\r
\r
сводный_мем_ордер (document_id PK/FK, ....)\r
получатели (получатели_id, document_id REFERENCES сводный_мем_ордер.document_id, account_id)\r
\r
Таблица получатели - это то что вы назвали  "таблично частью" \r
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343537
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот это почитайте - может хоть тогда желание пропадет\r
/topic/60533\r
\r
ИМХО основная проблема "объектной настройки" в реализации классов для работы с такой структурой БД..... \r
\r
Да нет - основная проблема отсутсвие цели. Т.е. есть стандартный путь -клиент/сервер - но вы считаете что он не подходит и хотите строить 3х уравневое приложение - но вот с мотивацией у вас проблемы
...
Рейтинг: 0 / 0
Объектная надстройка над реляционной БД
    #32343546
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постановщики, блин...
Уж хоть про справочники не упоминайте, поскольку он от документа отличается лишь соотношением частоты модификаций. А с точки зрения любой предметной области обычно многие документы могут выступать как справочники. И наоборот.
А в общем - переходите на 1С и Axapta. Или OODB (уж что Вам ближе).
А ваять в очередной раз OO трансляторы поверх MS SQL - думаете составить конкуренцию названным системам ? :-)

P.S. Самое смешное, что я знаю людей, которые пытались реализовать систему "а ля 1С, но технически га-араздо круче". Когда они стали приближаться по возможностям конфигурации к стандартной конфигурации 1С (реализовали соответственно все нужное в языке и конфигураторе), то выяснилось, что в общем-то не стоила овчинка выделки, все получилось ничем не лучше, а скорее наоборот - баги задавили... И ведь довольно много денег потрачено было (конечно по нашим меркам :-). В итоге бросили, т.к. конкурировать с 1С смысла не было абсолютно.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объектная надстройка над реляционной БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]