|
|
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Имеется задача написать картографическую программу, которая бы могла привязывать к объектам на карте различную информацию. Т.е. класическая задча - имеем разные классы объектов, колчиество классов заранее неизвестно. надо написать прогарамму, чтобы можно было добавлять новые классы без изменения кода программы. Можно хранить данные в структуре типа EAV. А можно хранить в виде плоских таблиц, а вот уже в метажнных описать как эти плоские таблицы обрабатывать. Мне кажется, что этот подход будет лучше EAV. Делал ли кто-нибудь что-то подобное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2006, 15:20 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
"Объекты на карте", какими бы разными они ни выглядели, имхо довольно похожи. Таким образом, желание делать разные таблицы "чтобы не засовывать разнообразнейшую информацию в прокрустово ложе узкой структуры" имхо не особо уместно. Если так, остается вопрос быстродействия. Если введенной таким образом информации будет много, и весьма вероятно, узким местом системы станут отчеты над этой информацией (не запросы типа "выведи информацию по объекту ID=25", а что-то более масштабное - к примеру "дай среднюю глубину всех луж в Московской области"), плоские таблицы и какой-то интеллект их создания могут дать очень большой выигрыш. Если информация носит характер "то, что выпадает в хинте" - я бы использовал EAV-like решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2006, 17:09 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Объекты на карте это действительно СОВСЕМ разные объекты. Например, это может быть скважина или река. Скважина обладает глубиной, азумутом, датой начала и окончания бурения. К скважине могут быть прицеплены дочерние объекты, например, химсостав проб на разной глубине. Река имеет ширину, глубину, исток итд.. Речь идет не о графических объектах, а о дополнительной информации связанной с ними. Данные в большей совей части буду не набиваться, а импортироваться из уже существующих БД поэтому табличное представлеие более естественное. Какой выигрыш дает EAV по сравнению с ROT я признаюсь не сильно понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2006, 18:19 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanovОбъекты на карте это действительно СОВСЕМ разные объекты. Например, это может быть скважина или река. Скважина обладает глубиной, азумутом, датой начала и окончания бурения. Это как раз то, что я называю очень похожие объекты. Собственно, их всего три - точка (иконка), линия и область. К каждому из них прицеплен набор весьма произвольных комментариев; если речь не идет о дальнейшей интеллектуальной обработке этих данных, о бизнес-логике над ними (например, проверка обязательных полей для каждого типа объекта), то даже не нужно возиться с типами: всем данным дается varchar(много) и задача решена. В этом случае EAV - самое оно. Может быть другой случай. Может быть, что значительная часть Вашей задачи - в обработке этих данных, например в автоматическом анализе того самого химсостава на разных глубинах согласно вводимым оператором формулам. В этом случае автосоздание таблиц становится более привлекательным вариантом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2006, 18:35 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Обработка конечно будет.. Будет и ввод и поиск, и отчеты итд.. Также будет, например, объединение данных из разных источников. Также будет отношение многое ко многому между объектами геометрическими и информационными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2006, 20:35 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
softwarer +1 У нас всего 3 типа класса (точка, текст, полигон) id x_min y_min x_max y_max typ_obj blob по id объекта по EAV таблица атрибутов и значений атрибутов. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 10:30 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanovОбъекты на карте это действительно СОВСЕМ разные объекты. Привязка к карте - это отдельный вопрос, не нужно связывать его со свойствами привязываемых объектов. Видимо "Скважина обладает глубиной, азумутом, датой начала и окончания бурения." вне зависимости от нанесения на карту. Пр нанесении дополнительно скважине сопоставляются картографические данные: геометрический объект, координаты, слой и др. Поэтому сама по себе привязка к карте не требует изменения уже имеющихся структур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 10:38 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
ModelRПривязка к карте - это отдельный вопрос, не нужно связывать его со свойствами привязываемых объектов да, конечно так и есть.. Т.е. на самом деоле имеется просто большое количество классов и экземляров класса. Я просто думаю, что те преимущества которые дает EAV (гибкость) обеспечат и отдельные таблицы. Ну придется в код поддержки метаданных добавить создание и модификацию таблиц. Зато будем иметь следующие плюсы Часть информации из метаданных будет браться из описания таблиц. Например, тип данных, длинна varchar итд Ссылочная целостность Скорость исполнения Обозримость данных. В случае чего можно убдет написаить простейший запрос, или просто прсмотреть всю таблицу если она небольшая. не будет проблемы с хранением различных типов данных в одной колонке или нескольких таблицах. Возможность писать БЫСТРЫЕ традиционные запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 11:23 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanov видел такую БД "по старинке" на каждый атрибут - таблица. Более 200 таблиц. После переписки под EAV 3 таблицы. Географические объекты и их атрибуты схожи с атрибутами товаров большой номенклатуры. Где как не здесь делать EAV. Поиск. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 11:29 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Чем так плохо иметь много таблиц? Вот совсем не понимаю этой проблмы? Ну будет у админа програмка которая позволит ему просматривать список классов, создавать удалять итд.. Кадый класс таблица. Чтобы не путались под ногами - можно им дать префикс какой-нибудь.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 11:34 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanovЧем так плохо иметь много таблиц? Вот совсем не понимаю этой проблмы? Ну будет у админа програмка которая позволит ему просматривать список классов, создавать удалять итд.. Кадый класс таблица. Чтобы не путались под ногами - можно им дать префикс какой-нибудь.. разговор был о: - атрибуты - таблиц А атрибутов (EAV) а не о vromanovКадый класс таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 11:51 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Petro123 разговор был о: - атрибуты - таблиц А атрибутов (EAV) Это я понял.. :) Не понял чем это лучше кроме кол-ва таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 11:55 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanovЯ просто думаю, что те преимущества которые дает EAV (гибкость) обеспечат и отдельные таблицы. Ну придется в код поддержки метаданных добавить создание и модификацию таблиц. Зато будем иметь следующие плюсы Все правильно и еще больше. Скажем, к такой базе без проблем подключится любой стандартный генератор отчетов, тот же Discoverer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:09 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanov ModelRПривязка к карте - это отдельный вопрос, не нужно связывать его со свойствами привязываемых объектов да, конечно так и есть.. Т.е. на самом деоле имеется просто большое количество классов и экземляров класса. Я просто думаю, что те преимущества которые дает EAV (гибкость) обеспечат и отдельные таблицы. Не все. В EAV просто выдать все объекты, которые обладают заданным значение все равно какого свойства. Например, все, что-хоть как-то связано с данной скважиной. Нужно ли это в Вашей задаче - отдельный вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:15 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanov Petro123 разговор был о: - атрибуты - таблиц А атрибутов (EAV) Это я понял.. :) Не понял чем это лучше кроме кол-ва таблиц. т.е. Вы предлагаете на каждый атрибут скважины - отдельную таблицу? Вы хоть решение своё приведите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:15 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
.......с учётом того, что на географическую область может быть более миллиона векторных объектов. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:18 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
ModelRВ EAV просто выдать все объекты, которые обладают заданным значение все равно какого свойства. Постановка задачи напоминает известную русскую народную сказку Имхо, задача "ищи там - не знаю где" тесно перекликается с известной поговоркой про автоматизацию бардака. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:20 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
ModelRНе все. В EAV просто выдать все объекты, которые обладают заданным значение все равно какого свойства. Это врядли потребуется ModelRНапример, все, что-хоть как-то связано с данной скважиной. Нужно ли это в Вашей задаче - отдельный вопрос. Связи это отдельный вопрос... Думаю, будет достаочно просто это сделать в бизнес уровне ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:21 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Petro123 т.е. Вы предлагаете на каждый атрибут скважины - отдельную таблицу? Вы хоть решение своё приведите. Я предлагаю на каждый класс обектов свою таблицу. Т.е. на все скважины одна таблица, на все реки другая таблица итд. ПЛЮС метаданные похожие на те, которые используются в EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:22 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanov Petro123 т.е. Вы предлагаете на каждый атрибут скважины - отдельную таблицу? Вы хоть решение своё приведите. Я предлагаю на каждый класс обектов свою таблицу. Т.е. на все скважины одна таблица, на все реки другая таблица итд. ПЛЮС метаданные похожие на те, которые используются в EAV. смотри не ошибись в модели. Дорого будет стоить. - сложно сказать сколько у тебя разных типов. - перечитай ModelR он дело говорит - есть ГИС системы и критерии там другие (быстрая выборка по ModelR или координатам) - разве проще у тебя будет запрос (найти/нарисовать все объекты попавшие в экран (т.е. x_min, .......)) - в ГИС большинство делается классами на клиентах, который в БД "сидят" в БЛОБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:30 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Petro123 смотри не ошибись в модели. Дорого будет стоить. - сложно сказать сколько у тебя разных типов. Это я и сам не знаю. И главное, они будут добавляться в просессе эксплуатации Petro123 - перечитай ModelR он дело говорит Про EAV я уже достаточно почитал. Petro123 - есть ГИС системы и критерии там другие (быстрая выборка по ModelR или координатам) У меня не совсем GIS, это скорее довесок. Т.е. сами графические объекты с координатами сидят в своих таблицах и я их не трогаю. Будет связь моих объектов с гисовскими через отдельную таблицу с двумя FK. Один на гисовскую таблицу, другой составной псевдо-ключ "Имя таблицы"+ID. Вот тут кстати, "некрасивое" место. Petro123 - разве проще у тебя будет запрос (найти/нарисовать все объекты попавшие в экран (т.е. x_min, .......)) Такими запросами будет заниматься другое приложение. Petro123 - в ГИС большинство делается классами на клиентах, который в БД "сидят" в БЛОБ. Это я знаю.. Имел удольствие писать парсинг этих блобов для Geomedia ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:40 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanov"Имя таблицы"+ID вот этого Очень не люблю IMHO PS. Если у тебя это только часть системы, то вообще сложно говорить о чём то. У меня основная задача БД - выдать по географическим координатам, а у тебя это всё где-то отдельно . Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 12:57 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
Petro123 PS. Если у тебя это только часть системы, то вообще сложно говорить о чём то. У меня основная задача БД - выдать по географическим координатам, а у тебя это всё где-то отдельно Просто еще нет даже определенности с каим из ГИС то будет работать. Георграфическая привязка это важно, но главное. Например есть еще привязка к административному делению итд. Да и информация может быть связанна, например, с несколькими географическими объектами. Или наоборот.. К одному географическому объекту могут быть привязаны несколько информационных объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 13:12 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanovУ меня не совсем GIS, это скорее довесок. Т.е. сами графические объекты с координатами сидят в своих таблицах и я их не трогаю. Будет связь моих объектов с гисовскими через отдельную таблицу с двумя FK. Один на гисовскую таблицу, другой составной псевдо-ключ "Имя таблицы"+ID. Вот тут кстати, "некрасивое" место.В управленческих системах таких мест вагон. Тем более, эта сторона связи видимо полностью под контролем Вашего приложения. Но можно сделать единый каталог всех "ГИСоспособных" объектов, и "Имя таблицы" не будет частью ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 13:16 |
|
||
|
ORM снова или тенцер наоброт
|
|||
|---|---|---|---|
|
#18+
vromanov Petro123 PS. Если у тебя это только часть системы, то вообще сложно говорить о чём то. У меня основная задача БД - выдать по географическим координатам, а у тебя это всё где-то отдельно Просто еще нет даже определенности с каим из ГИС то будет работать. Георграфическая привязка это важно, но главное. Например есть еще привязка к административному делению итд. Да и информация может быть связанна, например, с несколькими географическими объектами. Или наоборот.. К одному географическому объекту могут быть привязаны несколько информационных объектов. но перечень ВЕРОЯТНЫХ запросов то должен быть. Если их нет, то ВСЁ (все классы клиента) запихать в БЛОБ и делов то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 13:17 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33799309&tid=1545175]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
409ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 733ms |

| 0 / 0 |
