powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оперативный файл и справочники. Автоматизация запросов.
25 сообщений из 154, страница 4 из 7
Оперативный файл и справочники. Автоматизация запросов.
    #35585636
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher
>>> Пользователь сможет, свободно скрывать, добавлять, менять местами поля, в том числе, разумеется, и те, которые, которые выбраны разработчиком, как поля по умолчанию. Эти манипуляции с полями происходят на уровне GUI, а из таблиц "тянется" всё.

Зачем тянуть все? Порочный принцип. Если пользователю нужно быстро выбрать человека по ФИО, а в базе хранятся еще и фотки, то Вы фотки тоже будете тянуть и не показывать?


Когда я писал ВСЕ, я имел ввиду: все, доступные для пользовательского выбора. GUI я вижу, как таблицу с возможностью сортировки, группировки, поиска и фильтрации. Фотография в такой таблице, находится не обязана. Можно нажать кнопку в GUI и увидеть фото. Но такой подход тоже не однозначен. Представьте таблицу, под которой находится форма с подробностями для каждой записи, вот там и может быть фотография. Пользователь скроллирует записи, а внизу меняются фотографии. При таком подходе фотографию нужно "тянуть" всегда.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35585658
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaСейчас, какждое физическое поле представляется каким-то образом в системе метаданных. Когда я думал над этой системой, я не учел то, что указатели на описания полей могут быть использованы в выражениях.

Нам не нужно описывать выражения вычисляемых полей в виде ссылок на поля. Достаточно сохранить сам текст 'MAN_ADDR', 'CITY.NAME || STREET.NAME || MAN.APART_NUM' и 'MAN_ADDR', и в нужный момент впихнуть его в SQL-выражение. А что там за текст - SQL разберется. В крайнем случае ошибку выкинет, отладите.

Что это за система метаданных? Какие-то скрипты с особым синтаксисом, программный код с какими-то объектами, служебные таблицы? Почему тривиальное условие стало камнем преткновения?

Ведь задача, в сущности, тривиальна. Грубо говоря, для метаданных в программном коде:

objSQLGen = TSQLGenerator.Create();

objSQLGen.TableName = 'MAN';
objSQLGen.CalcFields.Add('MAN_ADDR', 'CITY.NAME || STREET.NAME || MAN.APART_NUM');

sqlText := objSQLGen.Generate();

Для метаданных в виде таблиц - добавить для таблицы "выборки" связанную таблицу "Вычисляемые поля" с полями "Выражение" и "Алиас".

Или о чем мы вообще говорим?
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35585705
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaПредставьте таблицу, под которой находится форма с подробностями для каждой записи, вот там и может быть фотография. Пользователь скроллирует записи, а внизу меняются фотографии. При таком подходе фотографию нужно "тянуть" всегда.

Думаю, мы плавно подходим к мысли о необходимости как минимум двух видов форм: для просмотра всей (или почти всей) информации в таблице, и для быстрого выбора из таблицы как из справочника по двум-трем полям. Глубина открытия потрясает :-)

Вообще, я еще раз советую Вам: возьмите какую-нибудь большую программу, интерфейс которой Вам нравится. Проанализируйте типы форм, которые там встречаются. И составьте список фич, которые нужны для полного счастья. А потом уже думайте над автоматизацией рутины. Потому что просто автоматический просмотрщик таблиц, как он у Вас наклевывается, по одной форме на таблицу, будет дубов, неудобен, и вряд ли кому-то нужен; а по сравнению с классическим подходом - еще и страшно труднорасширяем.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35585762
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Cane Cat Fisher
В чем принципиальная разница между Вашим и моим примерами? В том, что у Вас описание поля и описание выражения никак не связаны. Выражение, для Вас - это лишь некий набор символов. Давайте сделаем так будто, при написании Вашего примера, Вы сделали описку, написав в одном месте в качестве имени таблицы MAN, а в другом - MEN

Код: plaintext
1.
2.
3.
4.
5.
6.
objSQLGen = TSQLGenerator.Create();

objSQLGen.TableName = 'MAN';
objSQLGen.CalcFields.Add('MAN_ADDR', 'CITY.NAME || STREET.NAME || MEN.APART_NUM');

sqlText := objSQLGen.Generate();


Такая ошибка вылезет только в рантайм, и хорошо, если вылезет, так как вполне может быть, что таблица MEN существует!

Теперь, посмотрите у меня.
Символичесое имя (CITY)задано лишь один раз, а дальше лишь программные ссылки на переменную:
Код: plaintext
1.
2.
cityColumn = new Column("CITY", Type.VARCHAR);
...
cityAddress = cityColumn.plus(streetColumn);
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35585917
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так... Я вижу, что постепенно втягиваюсь в проект, который реально мне не под силу. Т.е. теоретически, видимо, я смогу сделать, то, что мне требуется, но программа получится сложной и некрасивой, метаданные - уродливыми. И через какое-то время я сам не смогу с ней разобраться. Это то, что случится реально. О чем, вобщем-то, многие предупреждали ( Bely и др.). Помимо этого, Cane Cat Fisher справедливо писал о расширении власти декларативного ядра за счет сужения функций кода, отвечающего за бизнес логику. Да и во мне было какое-то чувство страха перед этим.
Но проблема существует!
Я вот подумал, может быть вместо ядра нужен простой набор утилит, помогающих выполнять так сказать черную работу ? Такие утилиты особо не ограничат свободу, так как использование их не будет необходимым.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35586072
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaТакая ошибка вылезет только в рантайм, и хорошо, если вылезет, так как вполне может быть, что таблица MEN существует!

Когда все пишут SQL-запросы вручную, то находятся именно в этой же ситуации. И ничего, живут.

А в метаданных можно с тем же успехом описАться:

Код: plaintext
1.
...
m A nAddress = m E nColumn.plus(manColumn);

kordaможет быть вместо ядра нужен простой набор утилит, помогающих выполнять так сказать черную работу?

Для начала сформулируйте, что такое "черная работа" на разных этапах разработки и сопровождения, и сколько процентов времени она отнимает? А какая работа является "белой"?
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35586306
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher kordaТакая ошибка вылезет только в рантайм, и хорошо, если вылезет, так как вполне может быть, что таблица MEN существует!

Когда все пишут SQL-запросы вручную, то находятся именно в этой же ситуации. И ничего, живут.

А в метаданных можно с тем же успехом описАться:

Код: plaintext
1.
...
m A nAddress = m E nColumn.plus(manColumn);


Разница принципиальная, описка, в приведенном Вами примере - это описка в имени переменной, следовательно выявится уже на этапе компиляции.

Cane Cat Fisher
Когда все пишут SQL-запросы вручную, то находятся именно в этой же ситуации. И ничего, живут.


Плохо живут... Невозможно отладить SQL без того, чтобы присоединиться к БД. Ну, конечно, этому есть свои причины. SQL - не язык программирования. Я слышал о нескольких проектах (увы, не помню названий), цель которых сделать языковую оболочку над SQL, приравняв тем самым написание запросов и программирование бизнес-логики. Необходимо отметить, что проекты эти пока в зачаточном состоянии.

Cane Cat Fisher
Для начала сформулируйте, что такое "черная работа" на разных этапах разработки и сопровождения, и сколько процентов времени она отнимает? А какая работа является "белой"?

Может быть это не очень точное определение, но черная работа - это та работа, которую можно автоматизировать.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35586424
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korda
Разница принципиальная, описка, в приведенном Вами примере - это описка в имени переменной, следовательно выявится уже на этапе компиляции.

Если вернуться к Вашему предположению, что таблица MEN существует, то и переменная m E nColumn может существовать. И компиляция пройдет успешно.

kordaНевозможно отладить SQL без того, чтобы присоединиться к БД.

Точно так же можно поплакаться, что программный код невозможно отладить без пробной компиляции.

Я, например, не вижу здесь проблемы. Если мне нужно использовать сравнительно сложный SQL-запрос, я сначала набираю его в текстовом файле (FAR, знаете ли, приятная штука), запускаю на исполнение через SQL-консоль много раз, и отлаживаю до полного счастья, отлавливая синтаксис, а заодно посмотрев план. Изменил - перезапустил - смотрю результат - доли секунды. И только потом подкладываю этот файл в папку sqlfiles, откуда от попадает в ресурсы программы. А потом ресурсную строку использую где надо.

kordaМожет быть это не очень точное определение, но черная работа - это та работа, которую можно автоматизировать.

Хм. В данном случае работу автоматизировать несомненно можно, но усилия на это многократно превысят саму работу за несколько месяцев, плюс есть подозрение, что автоматизация никак не покроет все разновидности этой работы, зато заметно усложнит дальнейшую работу за счет непонятного взаимодействия недоавтоматизированной работы с самой ее автоматизацией. Вот.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35589143
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher
Я, например, не вижу здесь проблемы. Если мне нужно использовать сравнительно сложный SQL-запрос, я сначала набираю его в текстовом файле (FAR, знаете ли, приятная штука), запускаю на исполнение через SQL-консоль много раз, и отлаживаю до полного счастья, отлавливая синтаксис, а заодно посмотрев план. Изменил - перезапустил - смотрю результат - доли секунды. И только потом подкладываю этот файл в папку sqlfiles, откуда от попадает в ресурсы программы. А потом ресурсную строку использую где надо.

А я вижу здесь проблему... Описанная методика (набирать запросы в текстовом редакторе) ничем не отличается от того, как работали четверть века назад. Никакой проверки синтаксиса, существования объектов и прочего... Неужели с тех лет ничего не изменилось? Я не в курсе. FAR мне тоже нравится. Но неужели ничего не изменилось с тех лет в плане проектирования запросов?

Вне связи с вышесказанным, я тут "нарыл" один проект, который в каком-то смысле близок к моей цели: Squiggle SQL Builder for Java
Конечно, доверия к нему - никакого, слишком малоизвестный.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35589218
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaОписанная методика (набирать запросы в текстовом редакторе) ничем не отличается от того, как работали четверть века назад. Никакой проверки синтаксиса, существования объектов и прочего... Неужели с тех лет ничего не изменилось? Я не в курсе. FAR мне тоже нравится. Но неужели ничего не изменилось с тех лет в плане проектирования запросов?Уже столько лет прошло с изобретения компьютера, а програмисты все пишут и пишут программы... странно, почему еще никто не заменил програмистов

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

PS: а для отладки и написания запросов есть более удобные тулзы, нежели простой NOTEPAD.
Есть и графические конструкторы запросов, но они СИЛЬНО УБОГИЕ.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35589791
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обнаружил родственную тему на этом же форуме:
Как сделать конструктор селектов
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35590343
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кажется, приближаюсь к цели!

Что поддерживается на сегодняшний день:

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

Извиняюсь, за неудобочитаемый пример, со временем постараюсь это исправить.

Принцип следующий:
Конструируем JoinBuilder , затем конфигурируем его, в соответствии с условиями задачи и запускаем построение запроса, передав построителю имя для вновь созданного VIEW . См. примеры.

Код: plaintext
1.
2.
3.
4.
5.
JoinBuilder builder0 = new JoinBuilder(Tables.WORKPLACE2.name());
builder0.addColumn(COL_ID, COL_ID);
builder0.addColumn(Workplace2.TYPE.name(), V_Workplace2.W2_TYPE.name());
builder0.addJoin(Workplace2.ZAVAL_ID.name(), Tables.ZAVAL.name());
builder0.addColumn(Zaval.SIZE.name(), V_Workplace2.W2_SIZE.name());
String sql0 = builder0.build(Tables.WORKPLACE2_VIEW_JOIN.name());

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE VIEW WORKPLACE2_VIEW_JOIN AS SELECT 
T0.ID ID
,T0.TYPE W2_TYPE
,T1.SIZE W2_SIZE
 FROM WORKPLACE2 T0
 LEFT JOIN ZAVAL T1 ON T1.ID=T0.ZAVAL_ID

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
JoinBuilder builder1 = new JoinBuilder(Tables.PERSON_VIEW.name());
builder1.addColumn(COL_ID, COL_ID);
builder1.addColumn(Person.NAME.name(), V_Person.PR_NAME.name());
builder1.addColumn(Person.AGE.name(), V_Person.PR_AGE.name());
builder1.addJoin(Person.WORKPLACE1_ID.name(), Tables.WORKPLACE1_VIEW.name());
builder1.addColumn(COL_ID, V_Person.PR_1_ID.name());
builder1.addColumn(Workplace1.TYPE.name(), V_Person.PR_1_TYPE.name());
builder1.addJoin(Person.WORKPLACE2_ID.name(), Tables.WORKPLACE2_VIEW_JOIN.name());
builder1.addColumn(V_Workplace2.W2_TYPE.name()+"||"+V_Workplace2.W2_TYPE.name(), V_Person.PR_2_TYPE.name());
builder1.addColumn(V_Workplace2.W2_SIZE.name(), V_Person.PR_SIZE.name());
builder1.addJoin(Person.WORKPLACE2_TWO_ID.name(), Tables.WORKPLACE2_VIEW_JOIN.name());
builder1.addColumn(V_Workplace2.W2_TYPE.name(), V_Person.PR_2_TWO_TYPE.name());
builder1.addJoin(Person.OTHER_PERSON_ID.name(), Tables.PERSON_VIEW.name());
builder1.addColumn(Person.NAME.name(), V_Person.PR_OTHER_NAME.name());
String sql1 = builder1.build(Tables.PERSON_VIEW_JOIN.name());

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE VIEW PERSON_VIEW_JOIN AS SELECT 
T0.ID ID
,T0.NAME PR_NAME
,T0.AGE PR_AGE
,T1.ID PR_1_ID
,T1.TYPE PR_1_TYPE
,T2.W2_TYPE||W2_TYPE PR_2_TYPE
,T2.W2_SIZE PR_SIZE
,T3.W2_TYPE PR_2_TWO_TYPE
,T4.NAME PR_OTHER_NAME
 FROM PERSON_VIEW T0
 LEFT JOIN WORKPLACE1_VIEW T1 ON T1.ID=T0.WORKPLACE1_ID
 LEFT JOIN WORKPLACE2_VIEW_JOIN T2 ON T2.ID=T0.WORKPLACE2_ID
 LEFT JOIN WORKPLACE2_VIEW_JOIN T3 ON T3.ID=T0.WORKPLACE2_TWO_ID
 LEFT JOIN PERSON_VIEW T4 ON T4.ID=T0.OTHER_PERSON_ID
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35590535
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делал похожую задачу, правда с одним уровнем. Но думаю уровни нарастить не проблема.

как можно сделать в вашем случае.

1. Все метаданные берутся из системных таблиц. Там хранятся первичные и вторичные ключи, наименование полей, таблиц, индексы(если надо будет проверить на производительность) и куча всего.
Единственная проблема это наименование столбцов на Русском языке. Можно было использовать поле description, которое указывается для полей. А можно завести таблицу в которой для поля конкретной таблицы есть имя. Я пошел по второму пути, т.к. у меня 2 языка.

Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE TEST.FEILDNAME ( 
    TAB_NAME VARCHAR ( 30 )  NOT NULL , 
    FIELD_NAME VARCHAR ( 30 )  NOT NULL , 
    RU_NAME VARCHAR ( 100 )  NOT NULL , 
    KZ_NAME VARCHAR ( 100 )  NOT NULL  , 
    CONSTRAINT FIELD_NAME_PK PRIMARY KEY ( TAB_NAME, FIELD_NAME)  ) ;

2. пользователь указывает таблицу которую он хочет посмотреть.
Мы выполняем такой запрос:
Код: plaintext
1.
2.
3.
4.
select a.TABLE_NAME,a.COLUMN_NAME,c.FKTABLE_NAME,c.FKCOLUMN_NAME, b.RU_NAME 
from sysibm.COLUMNS a
left join test.FEILDNAME b on a.TABLE_NAME=b.TAB_NAME and a.COLUMN_NAME=b.FIELD_NAME
left join sysibm.SQLFOREIGNKEYS c on a.TABLE_NAME=c.PKTABLE_NAME and a.COLUMN_NAME=c.PKCOLUMN_NAME
where TABLE_NAME ='TEST'

По этим данным я думаю не будет стоит труда составить запрос с join-нами.
При чем функция будет одна, просто вызывать ее можно рекурсивно, для FKTABLE_NAME.

на счет алиасов, таблицы нумеруются T1,T2 ... TN
поля же F1,F2 ... FN. + когда мы добавляем поле в запрос мы тут же вставляем его наименование в метаданные результата см. ниже.


данные будут представлены в виде XML. он состот из 2 частей:
1. это метаданные.
2. это сами данные.

ну что то типа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<root>
  <meta>
    <field name="f1">ля-ля-ля</field>
    <field name="f2">на-на-на</field> 
  </meta>
  <data>
    <row>
      <fi>value fileld of f1</f1>
      <f2>value fileld of f2</f2>
    </row>
  </data>
</root>
Думаю идея понятна.

p.s. запросы для DB2 но думаю любой БД можно найти аналоги.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35590544
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да еще забыл сказать по уровни, уровни это глубина запроса, т.е. количество рекурсии.
Это для того чтобы можно было указывать на сколько подробно пользователь хочет получить данные. + от циклического зависания, на иерархических таблицах.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35590670
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaОписанная методика (набирать запросы в текстовом редакторе) ничем не отличается от того, как работали четверть века назад. Никакой проверки синтаксиса, существования объектов и прочего...

Как это никакой проверки синтаксиса? Запустите SQL-запрос, и получите полный диагноз по синтаксису и существованию объектов. Такое ощущение, что для соединения с БД Вам в другой конец города ехать. Честное слово, я перестаю понимать проблему, которую Вы решаете.

kordaJoinBuilder builder0 = new JoinBuilder(Tables.WORKPLACE2.name());

А Вас не смущает, что для "автоматизации запроса" приходится набирать больше символов, нежели в самом запросе? Причем, IMHO, куда менее удобочитаемых и черезполгодасопровождаемых.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35590856
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherА Вас не смущает, что для "автоматизации запроса" приходится набирать больше символов, нежели в самом запросе? Причем, IMHO, куда менее удобочитаемых и черезполгодасопровождаемых.+1 !!!

Я об этом писал ранее

авторЧто касается инструмента, который будет создавать SQL запросы - время потраченное на составление схемы данных для такого инструмента будет сопоставимо со временем потраченным на написание самих SQL запросов.
Оно вам надо - делать то же самое, но через задний проход?
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35590952
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher
Как это никакой проверки синтаксиса? Запустите SQL-запрос, и получите полный диагноз по синтаксису и существованию объектов. Такое ощущение, что для соединения с БД Вам в другой конец города ехать.


Ну, именно так и писали много лет назад. Набирали текст программы в текстовом редакторе, потом запускали компиляцию, находили номера стро с ошибками в листинге компилятора, затем снова шли в текстовый редактор и исправляли ошибки.
А подсветка синтаксиса?
А отлавливание синтаксических ошибок по мере набора?
А подсказки во время набора?
А удобная работа по сравнению версий?
А проверка орфографии в комментариях?
Я сам поначалу, принципиально, отказывался от всяческих средств разработки и пользовался простейшим текстовым редактором. Потом понял, что мне будет удобнее пользоваться специальными инструментами. Хотя, конечно, это дело весьма субъективное, - одному нравится одно, другому - другое, ведь в каждом подходе есть что-то свое.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591001
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher
А Вас не смущает, что для "автоматизации запроса" приходится набирать больше символов, нежели в самом запросе? Причем, IMHO, куда менее удобочитаемых и черезполгодасопровождаемых.

Смущает, конечно... Пытаюсь объективно оценить приемущества и недостатки.

Недостатки:
- много набирать;
- SQL - стандарт, а билдер - моя личная поделка, знакомая лишь мне одному;
- выполняет генерацию запросов только одного типа;
- текст запросов генерируется, а не содержится в файле ресурсов, что не способствует пониманию системы третьими лицами.

Достоинства:
- Нет проблем с синтаксисом, - всегда генерируется синтаксически правильный запрос;
- Возможность рефакторинга (если мне нужно переименовать таблицу или поле, то я делаю это лишь в одном месте);
- Нет проблем со случайным(по ошибке) пересечением имен полей и таблиц, уникальность поддерживается средствами языка.

Что перевешивает? Пока не знаю...
Может быть есть ещё какие-то достоинства и недостатки, которые я упустил?

P.S. У меня нет цели что-либо утвердить подобным решением и у меня нет увереннсти, что оно лучше стандартного подхода, я лишь взвешиваю возможность применения данного подхода в определенных случаях.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591011
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olzhas
1. Все метаданные берутся из системных таблиц.
Идя с системными таблицами хороша, но в этом подходе меня смущает то, что нужно знать имена и структуру этих таблиц, что является специфичным для каждой БД. Кроме этого, для чтения из системных таблиц необходимо наличие соединения с БД, что не всегда удобно.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591035
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korda- Возможность рефакторинга (если мне нужно переименовать таблицу или поле, то я делаю это лишь в одном месте);В работающей системе переименовывать таблицу вобще не стоит. Даже если она названа с орфографическими ошибками.
Потому что кроме вашей системы данными могут пользоваться ддругие системы, код хранимых процедур в БД.

А на стадии проектирования - все переименования идут на этапе проектирования структуры БД, а не в момент написания кода.

Кроме этого - простая смена имени таблицы легко решается с помощью Search Replace по метаданным или по текстам запросов. Да - это никто не любит делать, но это отнимает не так много времени как все говорят.

Так что выгода от этого - почти неуловимая.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591047
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaolzhas
1. Все метаданные берутся из системных таблиц.
Идя с системными таблицами хороша, но в этом подходе меня смущает то, что нужно знать имена и структуру этих таблиц, что является специфичным для каждой БД. Кроме этого, для чтения из системных таблиц необходимо наличие соединения с БД, что не всегда удобно.Волков бояться - в лес не ходить.

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

После этого - можно достругивать данные вручную.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591059
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olzhas
Единственная проблема это наименование столбцов на Русском языке. Можно было использовать поле description, которое указывается для полей. А можно завести таблицу в которой для поля конкретной таблицы есть имя. Я пошел по второму пути, т.к. у меня 2 языка.


Поле description, к сожалению, поддерживается далеко не всеми БД. И да, Вы правы, оно мало помогает, когда количество языков более одного.
Ваш второй подход поддерживает любое количетсво языков, но не кажется ли Вам, что тексты, - часть пользовательского интерфейса, а не базы данных? Например, чтобы обеспечить моему переводчику возможность исправлять орфографию, я должен предоставлять ему соединение с БД? Я храню все тексты в файлах ресурсов. Кроме текстов, есть ещё иконки, звуки и прочее, что тоже является объектом локализации. Например, при входе в русскоязычную, программу проигрывается слово Привет, а в англоязычную поется - Hello. Читал где-то, что вид почтового ящика российского типа не приемлем в США и наоборот, так как их внешний вид совершенно различен. Таких примеров может быть множество. Только вчера видел english-версию одной программы, где на иконке кнопки сортировки были русские буквы "А" и "Я", как эта иконка "поможет" человеку, не знающему русский, понятно.
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591095
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belykorda- Возможность рефакторинга (если мне нужно переименовать таблицу или поле, то я делаю это лишь в одном месте);В работающей системе переименовывать таблицу вобще не стоит. Даже если она названа с орфографическими ошибками.
Потому что кроме вашей системы данными могут пользоваться ддругие системы, код хранимых процедур в БД.
А на стадии проектирования - все переименования идут на этапе проектирования структуры БД, а не в момент написания кода.

Я согласен. Имел ввиду именно - на стадии проектирования.

Bely
Кроме этого - простая смена имени таблицы легко решается с помощью Search Replace по метаданным или по текстам запросов. Да - это никто не любит делать, но это отнимает не так много времени как все говорят.


Search/Replace довльно опасен, нет?...
MY_KILLER_CUSTOMER_TABLE, MY_KILLER_CUSTOMER_COLUMN
MY_KILLER_CUSTOMER_COLUMN переименовать в MY_CUSTOMER_COLUMN
- здесь легко ошибиться и переименовть также и таблицу
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591098
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kordaИдя с системными таблицами хороша, но в этом подходе меня смущает то, что нужно знать имена и структуру этих таблиц, что является специфичным для каждой БД. Кроме этого, для чтения из системных таблиц необходимо наличие соединения с БД, что не всегда удобно.
Хранить это в другом виде ещё более накладно. Где гарантия того что ваше хранилище метаданных будет соответствовать действительности.
А соединение, как получать данные без соединения?
...
Рейтинг: 0 / 0
Оперативный файл и справочники. Автоматизация запросов.
    #35591122
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belykordaolzhas
1. Все метаданные берутся из системных таблиц.
Идя с системными таблицами хороша, но в этом подходе меня смущает то, что нужно знать имена и структуру этих таблиц, что является специфичным для каждой БД. Кроме этого, для чтения из системных таблиц необходимо наличие соединения с БД, что не всегда удобно.
Можно метаданные брать не постоянно из системных таблиц, а закачать их один раз и далее их дорабатывать.

Все равно метаданные поступают в БД из программы, так лучше, пусть уж там[в программе] и остаются.
...
Рейтинг: 0 / 0
25 сообщений из 154, страница 4 из 7
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оперативный файл и справочники. Автоматизация запросов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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