|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Здесь на тему сабжа уже много дискуссий велось, но я все таки рискну :) В общем хочу реализовать примерно такую модель: Есть некая система. Типы данных в ней - стандартные (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 использовались для всех типов справочников, документов, таблиц. Т.е. чтобы не надо было делать наследника от этих классов для документа, скажем, расходная накладная... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2003, 18:14 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Передо мной это посмотрело 70 человек. Никто не ответил. Наверное всем уже надоело прикручивать надувные шины к асфальтовому катку. И скорости все равно нет, и асфальт неровный получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2003, 22:51 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Привет!!! недавно ради интереса сделал в google поиск по ключевым словам persistence layer и натолкнулся на ссылку как раз по теме и есть реализация на c# и даже можно было скачать какую-то версию для ознакомления. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 04:26 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
2 Cat2: То что я видел здесь раньше отличается от того что хочу сделать я. Мне интересно, что неправильно в моей идее. Если отбросить проблему скорости. Что некрасивого в такой модели доступа к данным? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 10:57 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
А чем отличается, если не секрет? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 11:03 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
--Наверное всем уже надоело прикручивать надувные шины к асфальтовому катку. Не-а, не надоело. Просто вопрос здесь так задан.... "а давайте сделаем, что бы выглядело так..." причем будет ли это хорошо? и для чего это? - не ясно. Опять же предлагаются типы "документ, справочник, таблица", а чем таблица отличается от справочника, и почему это не может быть документом - не понятно. --И скорости все равно нет, и асфальт неровный получается ИМХО, скорость зависит исключительно от "мощности мотора", а "ровность асфальта" от "круглости" катков (....рел. модель данных фореве!;). Когда то мощности не хватало даже для маленького каточка :). Реляционные СУБД - сложные системы , требующие значительных вычислительных ресурсов. ОО-парадигма тоже на халяву не реализуется. А поскольку ОО- и Р- ...мммм... ортогональны друг-другу то мотор потребуется ....мммм.....не ОО+Р, а ОО*Р мощности. Однако такая система возможна. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 12:00 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
2U-gene: И все таки не понимаю - неужели это получается настолько криво и некрасиво? По-моему было бы неплохо работать с объектами вместо таблиц - в данной конкретной задаче... Меня честно говоря больше интересовал вопрос реализации, а не имеет ли это смысл. Думал может кто подскажет как это реализовать правильно... Или тогда второй вариант: Как можно реализовать систему у которой полем в таблице может быть документ, справочник, таблица, итд. Просто хочется написать какой-то универсальный интерфейс, т.к. в той модели что я разработал - мы не знаем заранее какие типы документов/справочников/таблиц у нас есть, есть только таблицы описывающие поля... Может кто подскажет где можно найти описание хранения данных такого рода? Я хочу чтобы это было аналогично 1С - вот думаю как это реализовать грамотно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 12:27 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
авторИ все таки не понимаю - неужели это получается настолько криво и некрасиво? Да, вот как раз твой ответ: авторЯ хочу чтобы это было аналогично 1С - вот думаю как это реализовать грамотно 1С хороший пример. Есть еще правильные примеры - например SAP/R3. Если есть в запасе несколько тысяч человеко-лет, то вперед. :) авторПо-моему было бы неплохо работать с объектами вместо таблиц - в данной конкретной задаче... Меня честно говоря больше интересовал вопрос реализации, а не имеет ли это смысл. Думал может кто подскажет как это реализовать правильно... Или тогда второй вариант: Дык смысл должен быть - иначе как с этим работать? авторКак можно реализовать систему у которой полем в таблице может быть документ, справочник, таблица, итд. Просто хочется написать какой-то универсальный интерфейс, т.к. в той модели что я разработал - мы не знаем заранее какие типы документов/справочников/таблиц у нас есть, есть только таблицы описывающие поля... А чем отличается ссылка на другую таблицу со списком объектов? Ну есть общие данные у объекта, есть отличающиеся - первые лежат в одной таблице, вторые - в другой или нескольких. Нет проблем сделать для каждого типа объекта список свойств - это одна таблица - а в другой таблице хранить значения. Тока смысл? т.к. в той модели что я разработал - мы не знаем заранее какие типы документов/справочников/таблиц у нас есть, есть только таблицы описывающие поля... А что за такая система, где неизвестно, чего есть? А как с этим работать? -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 12:37 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
А что за такая система, где неизвестно, чего есть? А как с этим работать? Как бы объяснить... В общем - скажем в одной программке (а-ля конфигуратор в 1С, я создаю тип документа (буду от него отталкиваться). Описываю поля, одно поле - дата, другое - справочник, вставляю табличную часть. У меня в таблице описаний типов документов появляется описание поля для каждого этого документа и имя таблицы в которой это будет все хранится. И создаю таблицу, в первом поле дата, в другом ID элемента справочника, в третьем имя таблицы. И по-моему было бы удобно сделать универсальный класс для работы со всеми типами документов. Через Document.Fields["НазваниеПоля"].Value получать либо значение конкретного поля, либо ссылку на класс документ, справочник, таблица. У нас есть конструктор типов документов и справочников, и есть библиотека универсальных классов для работы с ними. Удобно должно быть.. По-моему красиво. Вот что здесь неправильно? Где я тут нелогично рассуждаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:00 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Как потом запросы-то будешь делать? Скорость будет еще хуже, чем у 1С -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:18 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
--И все таки не понимаю - неужели это получается настолько криво и некрасиво? Ну это у кого как :). И опять же, как задачу ставить. Ежели писать SAP то потребуется колоссальный труд. Но это ежели писать SAP. Я же склонился к мысли, что вся объектность может уместиться в не очень большом и не очень сложном трансляторе, прикрученном к ..ммм... реляциооной СУБД. Прототип такого транслятора небольшая группа энтузазистов может написать не более чем за ...мммм... :) полгода. Я знаю как он должен работать. Только надо понимать, что полученные объекты будут несколько (но не очень сильно) отличаться от того, что мы привыкли видеть в традиционных языках. Но то, что, мы получим полноценную персистную объектную систему (с идентифицируемостью, с наследованием в т.ч. множественным, с полиморфизмом, с функциональностью и т.п заморочками), остающуюся полноценной реляционной системой, - это у меня никакого сомнения не вызывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:19 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
ОК. Тогда как правильно построить БД, в которой можно будет создавать пользовательские типы документов и справочников? Кто-то имел опыт? Есть какие то ссылки? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:34 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Давайте все-таки определимся с целью Значит, хотите так Код: plaintext 1. 2. 3. 4. 5. 6.
А почему не так Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Если с ответом затрудняетесь - то это просто флейм ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:40 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
А причем здесь T-SQL или C#? Я просто рассказал как я это хотел бы видеть... Мне интересно было вот что: Как _грамотно_ спроектировать БД, в которой есть пользовательские типы документов, и как сделаны в них ссылки на другие документы (справочники итд). "Как нибудь" я могу и сам придумать, мне было интересно кто такое уже реализовывал, и как. Здесь же вроде как профессионалы сидят. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:47 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Что и требовалось доказать - вам "Объектная надстройка над реляционной БД" как козе баян Теперь о Как _грамотно_ спроектировать БД, в которой есть пользовательские типы документов, и как сделаны в них ссылки на другие документы (справочники итд). В бд это делается с помощью внешних ключей (или я не правильно понял вопрос?) P.S> извините если уж совсем не то объясняю - но как спросили так ответил! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:54 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
То funikovyuri А можно...а можно...а можно я за него отвечу? :) Потому что в первом случае мы создаем тип "документ", а во втором пользуемя исключительно функциями и идентификаторами.. Это чем то напоминает сравнение программ на С++ и С. Соответсвенно Т-SQL и С# очень даже при чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:56 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
2 U-gene Ну ладно тебе - это и ежу понятно - я спрашивал какой выигрыш _Mac_ хотел поиметь со своей прослойки - его ответ очень неоднозначно дает понять что он не в курсе. Все - далее 3х звенку в данном конкретном случае обсуждать далее смысла не имеет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:04 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Ok. Попробуем так: Я хочу создавать пользовательские типы документов и проч в одном приложении, и реализовать интерфейс доступа для использования в других. Что вы скажете по этому поводу? P.S. Наверное я действительно криво объясняю - вы уж протите, ну не профессионал я :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:11 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
2 _Mac_ P.S. Наверное я действительно криво объясняю - вы уж протите, ну не профессионал я :) Да я тоже - но вот с такими вопросами Папу Карлу например вы отвечать не заставите Я хочу создавать пользовательские типы документов и проч в одном приложении, и реализовать интерфейс доступа для использования в других. Обычно хотят 1) Создать структуру БД, удовлетворяющую требованиям. 2) Создать пользовательский интерфейс для доступа к этой БД Вам чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:16 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Мне кажется тут не коректно задан вопрос ..... Как я понял эта надстройка должна реализовыватся не на уровне БД.... На уровне БД все вроде просто. Получится что то типа: таблица типа докуметов, таблица полей типов документов, таблица документов определённого типа ...... (в соседнем форуме MSSQL пришли к выводу что нечего сильно отличающегося от этой модели не придумать ..... ) ИМХО основная проблема "объектной настройки" в реализации классов для работы с такой структурой БД..... Или что то не так понимаю ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:23 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
2 funikovyuri: Значит так: Я хочу создать систему, в которой есть такие понятия как документ, справочник и таблица (как табличная часть документа в частности). Структуру таблиц я уже примерно расписал. В общем идея в том что есть таблица описания документов (в ней есть описание для каждого поля) и имя таблицы в которой хранятся собственно сами данные. Дальше, хотел предоставить интерфейс, чтобы можно было в отдельной программе обращаться к этим данным зная только названия типов (например "РасходнаяНакладная". То к чему я пришел - написал в самом первом письме. Может это реализуют как то по-другому....Я ж не знаю :) Вот. Пример работы - это приблизительно так как работать с документами в 1С на встроенном языке. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:25 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
2 Allvin: Именно то что я хотел сказать. Спасибо :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:26 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:37 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
ну вот это почитайте - может хоть тогда желание пропадет\r /topic/60533\r \r ИМХО основная проблема "объектной настройки" в реализации классов для работы с такой структурой БД..... \r \r Да нет - основная проблема отсутсвие цели. Т.е. есть стандартный путь -клиент/сервер - но вы считаете что он не подходит и хотите строить 3х уравневое приложение - но вот с мотивацией у вас проблемы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:41 |
|
Объектная надстройка над реляционной БД
|
|||
---|---|---|---|
#18+
Постановщики, блин... Уж хоть про справочники не упоминайте, поскольку он от документа отличается лишь соотношением частоты модификаций. А с точки зрения любой предметной области обычно многие документы могут выступать как справочники. И наоборот. А в общем - переходите на 1С и Axapta. Или OODB (уж что Вам ближе). А ваять в очередной раз OO трансляторы поверх MS SQL - думаете составить конкуренцию названным системам ? :-) P.S. Самое смешное, что я знаю людей, которые пытались реализовать систему "а ля 1С, но технически га-араздо круче". Когда они стали приближаться по возможностям конфигурации к стандартной конфигурации 1С (реализовали соответственно все нужное в языке и конфигураторе), то выяснилось, что в общем-то не стоила овчинка выделки, все получилось ничем не лучше, а скорее наоборот - баги задавили... И ведь довольно много денег потрачено было (конечно по нашим меркам :-). В итоге бросили, т.к. конкурировать с 1С смысла не было абсолютно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 14:46 |
|
|
start [/forum/topic.php?fid=32&fpage=175&tid=1546725]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 231ms |
total: | 406ms |
0 / 0 |