|
|
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
Проектировщики, скажите как это делается по уму. Есть спроектированная БД. Далее необходимо создать модель классов для клиента. Как это делается, есть ли какие-то принципы и правила? Или просто таблица = класс ? Или объектно-ориентированная модель создается руками и не имеет отношения к БД? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 11:49 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
Или. Как правило структура базы отражает структуру наиболее детальных фактов. Классы же должны предоставлять уже какую-то полезную функциональность уровня прикладного разработчика. Речь ведь о каком-то приложении, а не инструменте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 18:20 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
Речь идет о клиентском приложении, использующее данную БД. Есть, допустим, таблица КЛИЕНТ в БД. Соответсвенно, придется создавать класс КЛИЕНТ в приложении. К тому же в CASE-средствах (в частности в PowerDesigner) есть возможность сгенерить модель классов из структуры БД. Я просто хотел узнать вообще так люди делают или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2007, 11:09 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
NewbieArchitectПроектировщики, скажите как это делается по уму. Scott Ambler's Articles and Other Writings Поищите по "relational" Еще есть книжка Enterprise Patterns Фаулера и сами паттерны Enterprise Patterns и на русском Яндекс.Маркет : Архитектура корпоративных программных приложений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2007, 12:55 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
А в кратце, ответ: и так и так. И из реляционной делают объектную и наоборот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2007, 12:56 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
NewbieArchitectПроектировщики, скажите как это делается по уму. Есть спроектированная БД. Далее необходимо создать модель классов для клиента. Как это делается, есть ли какие-то принципы и правила? Или просто таблица = класс ? Или объектно-ориентированная модель создается руками и не имеет отношения к БД? Спасибо. Класс моделирует структуру таблицы. Соответственно объект моделирует запись в таблице. Большинство GUI приложений имеют структуру классов однозначно соответствующую структуре реляционной БД. Для этих целей даже давно разработаны библиотеки компонентов доступа к данным. Приложения, которые самостоятельно изменяют данные должны ещё иметь набор классов, которые реализуют прикладные функции, но могут не иметь отражения в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2007, 19:11 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
NewbieArchitectЕсть, допустим, таблица КЛИЕНТ в БД. Соответсвенно, придется создавать класс КЛИЕНТ в приложении. Не придется - продолжайте работать с таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 10:04 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
мод NewbieArchitectЕсть, допустим, таблица КЛИЕНТ в БД. Соответсвенно, придется создавать класс КЛИЕНТ в приложении. Не придется - продолжайте работать с таблицами. ? Это как? Таблица это объект базы данных. За пределами базы данных в прикладных процессах нужно создавать временные копии записей базы данных, а для этого нужны соответствующие структуры данных ориентированные на решение конкретной задачи. Пока модель данных не касается вопросов размещения объектов времени выполнения мы обычно можем не различать классы объектов БД и приложения. В процессе моделирования модуля приложения и модуля БД различия в поведении объектов БД и приложения начнут проявляться. Например, объект приложения живёт только в пределах его процесса, соответственно этот объект должен поддерживать функции сохранения в БД и восстановления из неё. Объекту БД эти функции не требуются. Довольно часто такое базовое поведение уже реализовано в библиотеке доступа к данным, так что генерация классов приложения из сущностей БД является формальной процедурой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 15:33 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenab? Это как? Я так понимаю, что человеку намекнули, что не всегда необходимо создавать в клиенте на каждый справочник по классу. Собственно, еще большой вопрос, когда необходимо создавать классы один в один в соответствии со структурой БД. На ум приходит только академический интерес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 16:22 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов mcureenab? Это как? Я так понимаю, что человеку намекнули, что не всегда необходимо создавать в клиенте на каждый справочник по классу. Так речь то вроде не про справочники... Если все справочники структурно и функционально одинаковые, то создавать под каждый справочник отдельный класс есть смыс когда это происходит автоматически. Возможно, что в перспективе пути справочников могут разойтись, и тогда будет не так просто выяснять в коде для каких объектов нужно менять тип. Сергей ВаскецовСобственно, еще большой вопрос, когда необходимо создавать классы один в один в соответствии со структурой БД. На ум приходит только академический интерес. Почему?.. Oracle Type Translator (OTT) так и поступает. Для каждого типа БД он генерит эквивалентную конструкцию на языке C. Тут ситуация классическая, самые простые варианты - не генерить классы вообще или генерить 1:1. Все прочие ситуации выглядят определённо сложенее при том что покрывают только весьма частные решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 16:58 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenab? Это как? Истина всегда конкретна :) 1. На экране грид = recordset (курсор и т.д.) 2. На экране форма = join одной записи одной таблицы с несколькими записями нескольких других таблиц 3. Расчеты по БД - прямая работа с recordset -ами (курсорами) Какие еще объекты нужны ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 17:01 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
мод mcureenab? Это как? Истина всегда конкретна :) 1. На экране грид = recordset (курсор и т.д.) 2. На экране форма = join одной записи одной таблицы с несколькими записями нескольких других таблиц 3. Расчеты по БД - прямая работа с recordset -ами (курсорами) Какие еще объекты нужны ? Что то мне подсказывает, что во всех перечисленных случаях мы создаём класс приложения соответствующий сущности ER-модели. Этот класс наследует структуру сущности и определяет методы взаимодействия с СУБД и с графическеой подсистемой ОС. Даже если мы имеем дело с динамическим построением нового класса в Runtime, всё равно такой класс будет создан. Остаётся только решить, нужно ли его моделировать или можно сразу приступить к реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 17:21 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenabOracle Type Translator (OTT) так и поступает. Cуществует уйма тупых инструментов, которыми никто не пользуется. mcureenabТут ситуация классическая, самые простые варианты - не генерить классы вообще или генерить 1:1. Из них второй не имеет практического смысла, если говорить о приложениях сложнее записной книжки. Да и для записной книжки выгод нет, просто нет и явных проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 17:45 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenabЧто то мне подсказывает, что во всех перечисленных случаях мы создаём класс приложения соответствующий сущности ER-модели. В обсуждении этого утверждения очень важна терминология; очень легко прийти к неверному выводу из-за незаметного сопоставления понятий. Давайте вспомним, что у нас есть логическая модель и есть физическая модель. Давайте, чтобы различать их, объекты логической модели будем называть сущностями, а объекты физической - таблицами. Эти модели в общем случае не связаны один к одному. Сущность может быть представлена таблицей; может быть представлена некоторыми строками таблицы (скажем, записями с type_id = 2), может быть раскидана по нескольким таблицам. В некоторых проектах такого разделения не делается; фактически это всего лишь означает, что архитектор рисует сразу физическую модель, а логическая остается "ненарисованной", либо "нарисованной сугубо формально". Так вот: в принципе, можно было бы сказать, что во всех перечисленных сущностях создается класс, соответствующий сущности. Это было бы изрядно смелое утверждение, но в чем-то верное. Однако! Он соответствует именно сущности, а не таблице. И генерируя класс по таблице, ни к какому соответствию сущности мы не придем - исключая тривиальные приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 17:56 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
softwarer mcureenabOracle Type Translator (OTT) так и поступает. Cуществует уйма тупых инструментов, которыми никто не пользуется. mcureenabТут ситуация классическая, самые простые варианты - не генерить классы вообще или генерить 1:1. Из них второй не имеет практического смысла, если говорить о приложениях сложнее записной книжки. Да и для записной книжки выгод нет, просто нет и явных проблем. Два ничем не обоснованных утверждения. По крайней мере по п.2 для генерации кода я сам выбрал стратегию 1:1 и успешно её применил для решения практических задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 17:57 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenabДва ничем не обоснованных утверждения. Ошибаетесь. Первое из них обосновано простейшей статистикой - зайдите в гугль и посмотрите, сколько раз вообще упоминается в мире эта замечательная технология. Для сравнения: даже о другой мертвой технологии, родившейся примерно в то же время, "Oracle Objects For OLE" упоминаний на два порядка (!) больше. mcureenabПо крайней мере по п.2 для генерации кода я сам выбрал стратегию 1:1 и успешно её применил для решения практических задач. Из того, что Вы способны успешно дойти пешком из Москвы до Питера не следует, что этот вариант имеет практический смысл. Для наличия смысла нужно хоть какое-то преимущество над альтернативами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:04 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
softwarer mcureenabДва ничем не обоснованных утверждения. Ошибаетесь. Первое из них обосновано простейшей статистикой - зайдите в гугль и посмотрите, сколько раз вообще упоминается в мире эта замечательная технология. Для сравнения: даже о другой мертвой технологии, родившейся примерно в то же время, "Oracle Objects For OLE" упоминаний на два порядка (!) больше. Сравнение не корректно. Непосредственно на OCI вообще не много систем разрабатывается, потому и откликов значительно меньше. Сомнительно, что оракл тратит деньги на эти разработки из бюджета PR. mcureenabПо крайней мере по п.2 для генерации кода я сам выбрал стратегию 1:1 и успешно её применил для решения практических задач. Из того, что Вы способны успешно дойти пешком из Москвы до Питера не следует, что этот вариант имеет практический смысл. Для наличия смысла нужно хоть какое-то преимущество над альтернативами.[/quot] Преимущество как минимум в том, что оно сделано и работает и генератор кода совсем не замысловатый - указал имя таблицы, получил готовый код. Видимо, ближайшая альтернатива - перечислять только нужные поля таблицы, требует собственно получить список полей, исключить из него предположительно ненужные и только после этого сгенерить код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:24 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenabСравнение не корректно. Непосредственно на OCI вообще не много систем разрабатывается, потому и откликов значительно меньше. Во-первых, сравнение корректно, во-вторых, результаты вполне убедительно показывают мертвость того и другого. Кстати, могу подкинуть еще одно сравнение - поищите в том же Гугле "KOLnMCK". Это такая библиотека, которую разработал и поддерживает один фанат на любительской основе. И при этом упоминаний о ней в пятнадцать раз больше, нежели о "якобы живом и хорошем инструменте" от такого монстра как Oracle. Ну а если результаты чуть отрафинировать - выкинуть ссылки на oracle.com и на упоминания OTT в оракловой документации - так и вообще небось сотни ссылок не наберется. mcureenabСомнительно, что оракл тратит деньги на эти разработки из бюджета PR. На меня лично Oracle тоже не тратит денег из бюджета PR, но ссылок в гугле побольше mcureenabПреимущество как минимум в том, что оно сделано и работает Замечательное обоснование. Итого, любая работающая программа имеет преимущество уже в силу своего существования. Интересно только, над кем. Судя по контексту - над несуществующими; других альтернатив Вы не рассматриваете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:35 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
softwarer mcureenabПреимущество как минимум в том, что оно сделано и работает Замечательное обоснование. Итого, любая работающая программа имеет преимущество уже в силу своего существования. Интересно только, над кем. Судя по контексту - над несуществующими; других альтернатив Вы не рассматриваете. Да. В силу существования любая существующая программа лучше несуществующей просто потому что может приносить практическую пользу. Делать же несколько программ только для того чтобы сравнить их преимущетва не вижу смысла. Попробовал варианты, остановился на более подходящем, его и реализовал полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 19:11 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenab мод mcureenab? Это как? Истина всегда конкретна :) 1. На экране грид = recordset (курсор и т.д.) 2. На экране форма = join одной записи одной таблицы с несколькими записями нескольких других таблиц 3. Расчеты по БД - прямая работа с recordset -ами (курсорами) Какие еще объекты нужны ? Что то мне подсказывает, что во всех перечисленных случаях мы создаём класс приложения соответствующий сущности ER-модели Ну, даже если классом считать саму форму, на которой это все валяется, все равно это бред. У меня по порядку величины тысяча таблиц в модели, но ни одного объекта в терминах ООП на клиенте, который бы характеризовал сущности модели, нет. Просто потому, что их не надо для работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 10:45 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenabДа. В силу существования любая существующая программа лучше несуществующей Короче говоря, Вы закольцевали логику: взяли первую попавшуюся хрень, использовали ее, и поэтому она хороша, ее нужно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 10:49 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
mcureenabЧто то мне подсказывает, что во всех перечисленных случаях мы создаём класс приложения соответствующий сущности ER-модели. Нет. Мы уже перешли от сущностей к рел. таблицам специально для того, что бы применять рел. операции. Вся обработка, в.т.ч. и отображение в UI, выполняется в терминах таблиц (м.б. и виртуальных). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 14:17 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
мод mcureenabЧто то мне подсказывает, что во всех перечисленных случаях мы создаём класс приложения соответствующий сущности ER-модели. Нет. Мы уже перешли от сущностей к рел. таблицам специально для того, что бы применять рел. операции. Вся обработка, в.т.ч. и отображение в UI, выполняется в терминах таблиц (м.б. и виртуальных). Понятно. Только чел сейчас хочет построить модель, а не приложение. Т.е. он хочет поработать на уровне ER модели и модели классов. Не знаю зачем ему это надо. Возможно требуется сохранить семантику модели, которая неизбежно будет потеряна при переходе на уровень таблиц и компонентов доступа к данным. Тем не менее я не склонен отождествлять компоненты доступа к данным и таблицы даже при наличии взаимно однозначной трассировки. Компоненты доступа к данным работают с выборками, а не с таблицами, а выборка имеет гораздо больше полезных для приложения свойств, чем БД, например выборка может быть отфильтрована и упорядочена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 15:55 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов mcureenab мод mcureenab? Это как? Истина всегда конкретна :) 1. На экране грид = recordset (курсор и т.д.) 2. На экране форма = join одной записи одной таблицы с несколькими записями нескольких других таблиц 3. Расчеты по БД - прямая работа с recordset -ами (курсорами) Какие еще объекты нужны ? Что то мне подсказывает, что во всех перечисленных случаях мы создаём класс приложения соответствующий сущности ER-модели Ну, даже если классом считать саму форму, на которой это все валяется, все равно это бред. У меня по порядку величины тысяча таблиц в модели, но ни одного объекта в терминах ООП на клиенте, который бы характеризовал сущности модели, нет. Просто потому, что их не надо для работы. И что? Если Вы для разработки приложений используете процедурный подход, то классы и объекты не выделяются. Короче, пишите конкретно, о каких приложениях и средствах разработки идёт речь и как они соотносятся с объектным моделированием. И не забываем про то, что на уровне оборудования все данные и код есть просто массивы битов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 16:06 |
|
||
|
отображение ER-модели в ООМ
|
|||
|---|---|---|---|
|
#18+
softwarer mcureenabДа. В силу существования любая существующая программа лучше несуществующей Короче говоря, Вы закольцевали логику: взяли первую попавшуюся хрень, использовали ее, и поэтому она хороша, ее нужно использовать. Прошу не передёргивать. Хрень, была выбрана из многих других хрененей, найденая хрень меня вполне устраивает, из чего я делаю вывод что её можно использовать и её использование имеет смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 16:11 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34725619&tid=1544305]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
218ms |
get topic data: |
16ms |
get forum data: |
5ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 617ms |

| 0 / 0 |
