powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как скопировать поля из одного Query в другой ?
80 сообщений из 80, показаны все 4 страниц
Как скопировать поля из одного Query в другой ?
    #39829972
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет от самоучки любителя выносящего мозг десятилетиями )))))
И так друзья, кому не в лом, ответьте рекомендациями.
Много повидал подходов и реализаций. Где то свои пихнул )))
С годами менялось представление о тех или иных вещах....
Так вот, я все это к чему- прошу помощи!

Исходные данные:
1. Очень очень очень ленивый программист самоучка.
2. СУБД Postgre
3. Подобие софта работающего с СУБД пункта 2.
4. Не хочу классов в прямом понимании ))))))))))) как отдельных сущностей - только Query
5. Классы хочу, но лишь как базовые, для предоставления общих свойств и методов и возможно где то реалзизации интерфейсов, для дочерних (зебегая вперед, все вьюшки - фреймы и редакторы формы наследуемые, но это только для моей лени, что свойства и метода по сто раз одни и те же не мутить) -реализовано.
Забегая вперед, я да же MVVM реализовал на c#(wpf) но вот не лежит душа и все тут, порыпался порыпался, добился результатов и все... комп неделю не включал домашний )))) вернулся к Delphi.

И так в чем суть то в обще вопросов, а она в логике архитектуры, вот чего мне всегда реально не хватало, так это подобного опыта с нуля.
Что я решил.
1. DataModule , на него кидаю кучки Query (надоели мне все сложные запросы и всяческие FieldByName в последствии), ну допустим справочников. Это чисто плоские..точнее сами запросы плоские, типа Select поля from таблица.
-За чем? - Другие Query, без сложных запросов (если того не требуют, а просто связь отобразить) выполнят не сложный запрос к другим таблицам, а прилукапятся.
И тут первый вопрос, что быстрее, если таблица уже вскрыта в DataModule и сделается лукап нового Query по полю или запрос c присоединением Join, с точки зрения как нагрузки сети , так и (пусть это глупо прозвучит) отображения результата в виде грида клиенту?

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

3. Форма редактор, наследница там чего то, где есть ряд свойств и методов ,которые могу передать от вьюшки. Кинул DataSource на форму редактор (без Query), форма редактор на показ инициируется и копирует в Query (виртуальную, созданную в run-time - поле класса, и ее физической datasource (этой формы) присваиваю DataSet в виде этой Query)
-За чем? - Ленив, хочу сказать POST и все и это работает (надоели мне все сложные запросы и всяческие ParamByName в последствии), но только если есть либо точная копия с полями либо скопировать в рантайм )))
Вопрос. Как скопировать поля из одной Query в другую без гемороя, включая Lookup?
всякие там
...
query2.CopyFields(query1)
...
или
...
with query2.FieldDefs.Count-1
....
работает если лукапов нет

нагородил следующий огород, только не смейтесь, не украшал, пробовал разные варики, какой то заработал, кидаую ))))
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
procedure TModelEdt.AssignQuery(AQuerySource: TUniQuery; ADataSourceDest: TUniDataSource);
var i: Integer; fld: TField;
begin
  self.QueryEdit := TUniQuery.Create(nil);
  self.QueryEdit.Connection := AQuerySource.Connection;
  self.QueryEdit.SQL.Text := AQuerySource.SQL.Text;
  self.QueryEdit.AddWhere('id=' + AQuerySource.FieldByName('id').AsString);
  for i := 0 to AQuerySource.Fields.Count - 1 do
  begin
    case AQuerySource.Fields[i].DataType of
      ftString:
        fld := TStringField.Create(Self);
      ftInteger:
        fld := TIntegerField.Create(Self);
    end;
    fld.Size := AQuerySource.Fields[i].Size;
    if AQuerySource.Fields[i].FieldKind = fkLookup then
    begin
      fld.FieldKind := fkLookup;
      fld.LookupResultField := AQuerySource.Fields[i].LookupResultField;
      fld.KeyFields := AQuerySource.Fields[i].KeyFields;
      fld.Lookup := true;
      fld.LookupKeyFields := AQuerySource.Fields[i].LookupKeyFields;
      fld.LookupDataSet := AQuerySource.Fields[i].LookupDataSet;
    end;
    fld.FieldName := AQuerySource.Fields[i].FieldName;
    fld.DisplayLabel := AQuerySource.Fields[i].DisplayLabel;
    fld.name := AQuerySource.Fields[i].name + 'Edt';
    fld.DataSet := self.QueryEdit;
  end;
  self.QueryEdit.FieldDefs.UpDate;
  ADataSourceDest.DataSet:= self.QueryEdit;




Может есть какой простой способ ?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39829976
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

ну и тут я только TStringField и TIntegerField обработал, так их понятно больше, вот это и ломает )))
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39829982
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

Нихера не понял и глаза сломал. Зато отфарматировал
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
procedure TModelEdt.AssignQuery(AQuerySource: TUniQuery; ADataSourceDest: TUniDataSource);
var i: Integer; fld: TField;
begin
  self.QueryEdit := TUniQuery.Create(nil);
  self.QueryEdit.Connection := AQuerySource.Connection;
  self.QueryEdit.SQL.Text := AQuerySource.SQL.Text;
  self.QueryEdit.AddWhere('id=' + AQuerySource.FieldByName('id').AsString);
  for i := 0 to AQuerySource.Fields.Count - 1 do begin
    case AQuerySource.Fields[i].DataType of
      ftString:   fld := TStringField.Create(Self);
      ftInteger: fld := TIntegerField.Create(Self);
    end;
   fld.Size := AQuerySource.Fields[i].Size;
   if AQuerySource.Fields[i].FieldKind = fkLookup then begin
     fld.FieldKind := fkLookup;
     fld.LookupResultField := AQuerySource.Fields[i].LookupResultField;
     fld.KeyFields := AQuerySource.Fields[i].KeyFields;
     fld.Lookup := true;
     fld.LookupKeyFields := AQuerySource.Fields[i].LookupKeyFields;
     fld.LookupDataSet := AQuerySource.Fields[i].LookupDataSet;
    end;
    fld.FieldName := AQuerySource.Fields[i].FieldName;
    fld.DisplayLabel := AQuerySource.Fields[i].DisplayLabel;
    fld.name := AQuerySource.Fields[i].name + 'Edt';
    fld.DataSet := self.QueryEdit;
  end;
  self.QueryEdit.FieldDefs.UpDate;
  ADataSourceDest.DataSet:= self.QueryEdit;


...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39829984
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kill_zdm,

1. локальный лукап vs северный - всё зависит от...
можно делать и так, и так
в многопользовательской среде наверное лучше серверный, чтобы не обновлять локальные справочники постоянно

3. по сути нужен клон исходного НД (без данных, либо только для редактируемой записи) - там должен быть метод на подобии Clone
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830043
edruzenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,


kill_zdm что быстрее, если таблица уже вскрыта в DataModule и сделается лукап нового Query по полю или запрос c присоединением Join, с точки зрения как нагрузки сети , так и (пусть это глупо прозвучит) отображения результата в виде грида клиенту?
разумеется join быстрее на порядки.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830186
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edruzenko,

Вы абсолютно в этом уверены? Извините, что спрашиваю, лично не проверял, мне нужно мнение - кто реально исследовал. Вот смотрите, допустим мне необходимо получить данные из связанных таблиц в кол-ве 10+ , т.е. 10+ Join, тут и запрос громоздкий ну это ладно и к СУБД напряг + нагрузка на сеть, а если уже вскрыты данные из этих таблиц, которые будут лукапиться и они в ОЗУ живут, разве это не быстрее произойдет ?
Я просто рассуждаю, не уверен абсолютно ))
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830188
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator,

спасибо большое, виноват, исправлюсь
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830191
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinoteskill_zdm,

1. локальный лукап vs северный - всё зависит от...
можно делать и так, и так
в многопользовательской среде наверное лучше серверный, чтобы не обновлять локальные справочники постоянно

3. по сути нужен клон исходного НД (без данных, либо только для редактируемой записи) - там должен быть метод на подобии Clone

1. Конечно серверный менее геморойный я понимаю, с другой стороны при тех же равных, нагрузка возрастает сильно при многопользовтаельской , когда один и тот же справочник к примеру дергается по 100++++ раз , только что бы отобразить связанное с ним имя к примеру по ключу. Как показала практика, справочники в целом меняются не часто, часть из них в обще единожды с начальным заполнением, тут как мне видится необходимо только грамотную валидацию на существующие проверять - ну и волшебную кнопку - обновить данные добавить )))
3 - должен быть но не нашел ((((
повторюсь , я все облазил, кучу всего перепробовал, все копируется кроме лукап полей ((( сдался и начал писать свой огород, может кто реально сталкивался и знает как тот метод зовется )))
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830240
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

тащить данные с сервера на клиент (хотя бы только справочники) заранее, не разбираясь нужны они там или нет - это какая-то, действительно, специфическая концепция. Верю, что в каких-то сценариях можно сильно выиграть в быстродействии. Но гемора поиметь можно ещё больше. Особенно с валидностью данных. Вам, что жалко трафика в локальной сети?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830256
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIkill_zdm,

тащить данные с сервера на клиент (хотя бы только справочники) заранее, не разбираясь нужны они там или нет - это какая-то, действительно, специфическая концепция. Верю, что в каких-то сценариях можно сильно выиграть в быстродействии. Но гемора поиметь можно ещё больше. Особенно с валидностью данных. Вам, что жалко трафика в локальной сети? Справочники, они на то и справочники, что меняются достаточно редко (например список биологических полов). Поэтому нормальный подход это загрузить их всех в момент загрузки приложения (или при первом обращении) а затем не гонять по сети одни и те же строковые данные и не переусложнять запросы лишними join-ами. Но это конечно требует некоторой дисциплины. Гораздо проще накопипастить кучу однотипных квериков, тем более на тестовой БД данных мало и пользователь один поэтому не имеет значение сколько нам данных перекачивается. А то, что у 100 пользователей приложение едва ворочается, так это проблемы индейце шерифа не волнуют.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830284
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roschinspb,

справочник справочнику рознь. Есть редко изменяемые, есть часто, есть никогда. Надо построить систему, которая отслеживала бы изменения. Мне непонятно зачем это нужно. Есть сотни таблиц, из них справочников 30-50. Для этих таблиц строить отдельную схему работы? В общем, я за универсальность подхода.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830296
Hammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830357
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

3. Не копируется.. ну или копируется но это все на уровне оперативы, т.е. без запроса - отслежено в DbMonitor. Да, юнидаки, не смог найти я этот метод (((((((((((

вроде вот оно Query1.CopyFields(TDataSet) --- все коприуется кроме лукапов :(
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830359
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmHammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

3. Не копируется.. ну или копируется но это все на уровне оперативы, т.е. без запроса - отслежено в DbMonitor. Да, юнидаки, не смог найти я этот метод (((((((((((

вроде вот оно Query1.CopyFields(TDataSet) --- все коприуется кроме лукапов :(


не очень понял, простите, сам вопрос на счет копирования, я думал Вы про переброску данных. В общем - не копируется, уже по другому отвечу. К примеру Query2 имеет 3 поля физически и один лукап -выполнив метод Query1.CopyFields(Query2) по факту только физические скопирует. Count полей после метода отличается ну и при обращении к лукап полю по имени - облом, нет такого.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830360
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в Query
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830361
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmHammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в Query
ну разве, что подготовленным PrepareSQL, но это .. ну в общем не под каждый же чих мне вьюху творить.. Заморачивался этим, потом отказался, только ну где ну уж очень сложные запросы и то там чаще выруливать лучше получалось хранимыми функциями выдающими набор
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830370
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ох, сколько я повидал всяких формо, query, мосто построителей в своей жизни.

Как правило, начинается это с того, что кучу времени тратится на то, чтобы создать супергибкую и интеллектуальную систему.
Потом на ее основе делается проект.
Потом начинаются делаться всякие заточки и заплатки, поскольку гибкости системы не хватает на какие нибудь особые случаи и нюансы.
Потом подтягиваются другие разработчики.
...
...
В конечном итоге, проект как бы есть, система вроде тоже. Но все доработки делаются без ее использования, а по старинке, поскольку оказывается, что так быстрее и надежнее.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830605
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manatee...
В конечном итоге, проект как бы есть, система вроде тоже. Но все доработки делаются без ее использования, а по старинке, поскольку оказывается, что так быстрее и надежнее. Именно так. Потом когда разбираешься в старом коде, понимаешь, что единственная функция самопального мегафрейворка это тормозить и глючить. Есть и другая крайность, все лепят как считают нужным, не признавая вообще ни каких правил и соглашений, ради очередной "круглой" кнопки затягивается какая-нибудь библиотека компонентов колхозного кружка любителей информатики...
справочник справочнику рознь
Грузить справочники на клиента без разбора = зло
Да. Делать что либо без разбору вообще зло. И любой универсальный подход будет проигрывать по скорости специально оптимизированному. С другой стороны оптимизация под каждый случай сильно увеличивает трудоемкость и сложность разработки. Тут важно найти золотую середину, а не серебряную пулю.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39831423
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

Вопрос в том, что ты таким образом собрался писать? Если домашний наколенный софт, в который ничей нос не пустишь, то ОК. Нормальный подход. А если это будет живой проект, в котором хотелки будут время от времени меняться, то подход с кучей Query потребует кучи тестов, потому что не будет простого способа узнать в коде, где какая таблица используется и в каком еще Query надо поменять SQL при изменении структуры данных. И если при таком подходе проект разрастётся - любое подобное изменение будет стоить седых волос :-)
Я за ORM.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39831870
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaА если это будет живой проект, в котором хотелки будут время от времени меняться, то подход с кучей Query потребует кучи тестов, потому что не будет простого способа узнать в коде, где какая таблица используется и в каком еще Query надо поменять SQL при изменении структуры данных.
По-моему, ты кардинально переоценил подход автора. В запросе SELECT * FROM TABLE при изменении структуры менять ничего не требуется :) А относительно адекватных проектов - я бы назвал озвученную аргументацию странной и нелепой. Но, думаю, топик не стоит того, чтобы обсуждать это здесь.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837350
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edruzenkokill_zdm,


kill_zdm что быстрее, если таблица уже вскрыта в DataModule и сделается лукап нового Query по полю или запрос c присоединением Join, с точки зрения как нагрузки сети , так и (пусть это глупо прозвучит) отображения результата в виде грида клиенту?
разумеется join быстрее на порядки.

Дошли руки , проверил.
Схема, повторюсь следующая.
1. В DataModule, Query подгружают необходимые мне справочники для лукапа (плоские запросы к таблицам, которые будут использоваться исключительно для лукапа. При старте системы - живут в оперативе)
2. На вьюшках - фреймы , уже свои Query, которые запрашивают так же плоские данные от сущности, лукапя необходимые для визуальной составляющей поля из смежных таблиц , получая данные из тех самых Query из DataModule уже загруженных.

Результаты:
Заполнил тестовую таблицу 10к записями с ключевкой к трем таблицам
Выполнил Join к трем таблицам наблюдая в DbMonitor UniDac
-0,46 до 0,52
То же самое с лукапами
0,15 до 0,16
Скорость и дельта значительно ниже
Далее понизил на маршрутизаторе себе скорость до 512 кб/с для эксперимента и наглядности (база данных на хосте)
Join вырос катастрофически, а дельта еще более катастрофично, разброс составлять стал порой до минуты.
С лукапами, результат стал еще более впечатлительным - уже не разы , а десятки раз быстрее
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837353
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
максимальные проблемы, ну пока, которые получить могу этого вижу следующее. Допустим Иванова, сменила фамилию на Петрова, ну да.. .я буду видеть (если не говорить о синхронизации и т.д.) пока Иванова в прилукапленом поле. Но это ни как не влияет на целостность данных и лишь не совсем верное отображение текущего состояния. Если удалят ту самую Иванову, то я не увижу и тех записей, где она участвовала, по сколько редактирование сущности с привязаны полем перезапрашивается и если произошло удаление, то и записи связной не увижу.

Может, что пока и упускаю, выслушаю с удовольтсвием.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837359
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я благодарен всем комментаторам, но пока ни кто не убедил.
Дал коллеге попробовать, так сказать для наглядности.. К слову все фреймы вьюшки наследуются от обобщающей, где вся эта движуха происходит, сокращение трудоемкости да же он оценил, впервые увидев и сначала ни чего не понимая.. просто сказал ему - отнаследуйся от класса и реализуй интерфейс .. все.. 90% работы ушло . Всякие кошмарные FieldByName на каждый чих ушли в прошлое.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837391
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmмаксимальные проблемы, ну пока, которые получить могу этого вижу следующее. Допустим Иванова, сменила фамилию на Петрова, ну да.. .я буду видеть (если не говорить о синхронизации и т.д.) пока Иванова в прилукапленом поле. Но это ни как не влияет на целостность данных и лишь не совсем верное отображение текущего состояния. Если удалят ту самую Иванову, то я не увижу и тех записей, где она участвовала, по сколько редактирование сущности с привязаны полем перезапрашивается и если произошло удаление, то и записи связной не увижу.

Может, что пока и упускаю, выслушаю с удовольтсвием.

Ты многое упрощаешь.

Идентифицировать надо именно сущность, а не её аттрибуты.
Допустим, Иванова/Петрова в 5-й раз вышла замуж за Сидорова, развелась и взяла девичью фамилию Попандопуло, а потом и пол сменила.

Привязаться к паспорту? Он меняется много раз. К свидетельству ПФР? Кто даст гарантии его постоянства?
Веди свой ключ. А остальные бумажки/пластик считай привязанными аттрибутами. Тут тебе будет и история и актуальная информация на заданный период.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837428
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorkill_zdmмаксимальные проблемы, ну пока, которые получить могу этого вижу следующее. Допустим Иванова, сменила фамилию на Петрова, ну да.. .я буду видеть (если не говорить о синхронизации и т.д.) пока Иванова в прилукапленом поле. Но это ни как не влияет на целостность данных и лишь не совсем верное отображение текущего состояния. Если удалят ту самую Иванову, то я не увижу и тех записей, где она участвовала, по сколько редактирование сущности с привязаны полем перезапрашивается и если произошло удаление, то и записи связной не увижу.

Может, что пока и упускаю, выслушаю с удовольтсвием.

Ты многое упрощаешь.

Идентифицировать надо именно сущность, а не её аттрибуты.
Допустим, Иванова/Петрова в 5-й раз вышла замуж за Сидорова, развелась и взяла девичью фамилию Попандопуло, а потом и пол сменила.

Привязаться к паспорту? Он меняется много раз. К свидетельству ПФР? Кто даст гарантии его постоянства?
Веди свой ключ. А остальные бумажки/пластик считай привязанными аттрибутами. Тут тебе будет и история и актуальная информация на заданный период.

привязка идет по ID юзера!!!
Живет ее Фамилия исключительно в рамках запуска программы, если она 10 раз сменит да же фамилию в течении ОДНОГО дня, это не критично, я лишь буду видеть ее старую фамилию, пока не перезапущу прогу, которая в свою очередь при запуске не перезапросит данные.
к примеру
Users
id=125
Name= Иванова
Pasport_Serias = 4202
.....


Интерисующая_меня_таблица
Интерисующее_меня_поле = 'что -то'
User_id =125

мне пофиг на ее изменения паспорта, фамилии и т.д. я привязан к ее ID и мне без разницы, будет ли это запрос Join или лукапы, актуальность проявится только при отображении грида к примеру.
Повторюсь, уже при редактировании самой сущности - этой ивановой, уже происходит перезапрос данных актуальных и редаткрируя сущность , уже недактируются запрошенные, свежие данные. Пусть о ее фамилии и живут старые, пока не перезапущена прога и видны старые лукап поля.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837432
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что мне это дает

1. Фрейм вьюшка
я лишь добавляю связки, к примеру справочник стран

TframeCountry = class(TModel, IModel)

реализую интерфейс в ней
//передам модели форму редактор, которая в свою очередь назначит все движения фрему ToPPanel где кнопки, удалить, редактировать //и т.д.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function TframeCountry.GetFormEdit: TFormClass;
begin
  Result := TfrmCountryEdt;
end;
//тут либо просто отображение либо могу что то иное замутить по ситуации
procedure TframeCountry.initEntity;
begin
  ShowSelf; 
end;



2. Модель

тут куча всего, в основном инициализируется форма вызванная , например, из меню как
Код: pascal
1.
2.
3.
4.
procedure TfrmMain.mnCountryClick(Sender: TObject);
begin
   Model.createForm(TfrmCountry, True);
end;



это схавает модель, которая проверит все фреймы на форме, относящиеся к TModel и вскроет их данные, а так же перехватит фомру редактор и назначит действие
3. пока кривенько но что то типа - на присланной форме ищется модель и инициализируется в пункте 4
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with AForm do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if (Components[i] is TModel) then
      begin
        f := (Components[i] as TModel);
        t := (f.FindComponent('FrameTopPanel1') as TFrameTopPanel);
        f.init(Self, AFormStyle, '', false, t);
      end;
    end;


4. ищю вьюшку (ну у меня девэкспресс , но можно и на любом гриде отловить его источник)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
 for i := 0 to ComponentCount - 1 do
      begin
//или вьюшка       
 if (Components[i] is TcxGridDBTableView) then
        begin
          View := (Components[i] as TcxGridDBTableView);
          break;
        end
//или дерево
        else if (Components[i] is TcxDBTreeList) then
        begin
          ViewTree := (Components[i] as TcxDBTreeList);
          break;
        end;
      end;
.....
//отловил назначил 
if View <> nil then
      begin
        Query := (View.DataController.DataSource.DataSet as TUniQuery);
        DataSource := (View.DataController.DataSource as TUniDataSource);
      end
      else
      begin
        ViewTree.DataController.DataSource := DataSource;
      end;
//панель действий ()
 ATopPanel.btnDel.OnClick := DeleteRecord;
    ATopPanel.btnRefresh.OnClick := RefreshRecord;
    ATopPanel.btnEdit.OnClick := EditRecord;
    ATopPanel.btnAdd.OnClick := AddRecord;
    // ATopPanel.btnSel.OnClick := OnSelectClick;
    if View <> nil then
    begin
      if AFromForm = true then
        View.OnDblClick := OnSelectClick
      else
        View.OnDblClick := OnDblClick;
    end



дофига кода там уже может чо и упустил.. ну в общем общая идея
Создал фрейм, сказал ему что он наследник и при вызове он проинициализируется, сколько бы на форме таких фреймов не было, а они в свою очередь лукапятся все к тому самому датамодулю. Для разраба в конечном итоге - только соблюсти последовательность..точнее да же - просто правило - относледоваться от модели и интерфейса, то же самое с формой редактором.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837434
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в QueryОшибаешься.
Это уже однажды скомпилированный запрос, со статистикой, готовым планом исполнения, хинтами и индексами и прочими внусностями.
А в кверике - просто запрос среди других запросов, как правило, новьё для СУБД
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837436
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

никаких проверок пока нет, просто пробую, по этому на возможные исключения пока - пофиг, да и собственно, этот механизм не заставляет весь код так работать, это сработает только в случае особого вызова создания формы , можно оставляя текущее - писать и иначе , классически.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837440
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorkill_zdm2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в QueryОшибаешься.
Это уже однажды скомпилированный запрос, со статистикой, готовым планом исполнения, хинтами и индексами и прочими внусностями.
А в кверике - просто запрос среди других запросов, как правило, новьё для СУБД
Да, согласен, погорячился.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837442
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmGatorпропущено...
Ошибаешься.
Это уже однажды скомпилированный запрос, со статистикой, готовым планом исполнения, хинтами и индексами и прочими внусностями.
А в кверике - просто запрос среди других запросов, как правило, новьё для СУБД
Да, согласен, погорячился.

Но и плодить вьюшки то же желание особо нет. На мой взгляд они хороши для различных отчетов и т.д., это все то же остается в силе, как и различные триггеры и ХП, я просто заморчоился именно отображением и минимизацией нагрузки ну и плюс мне очень понравилось как лукапы можно юзать в форме радакторе ограничаваясь не сложными INSERT а одним лишь POST
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837446
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

А не надо плодить. Они хороши для редко меняемых справочников и т.п.
Никто не требует иметь справочник ВСЕХ фамилий/имен в базе.
Это лишь частичные аттрибуты.
Вот что есть у неизменное у сущности Человек?
Есть лишь дата рождения, место рождения, мама/папа (тоже Человеки мб неизвестные ) всё остальное - от лукавого.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837448
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorВот что есть у неизменное у сущности Человек?
Генокод.

GatorЕсть лишь дата рождения, место рождения, мама/папа (тоже Человеки мб неизвестные )
Всё это вполне может измениться.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837449
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorВот что есть у неизменное у сущности Человек?
Есть лишь дата рождения, место рождения, мама/папа (тоже Человеки мб неизвестные ) всё остальное - от лукавого.Неизменное разве что имя. Остальное может быть неизвестно и не навсегда. Да и имя может поменяться, н-р было неправильно записано на слух. Особенно иностранное.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837453
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВсё это вполне может измениться.Типа машина времени и кибер производство? :)
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837455
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorТипа машина времени и кибер производство? :)
Типа эти данные берутся из документов со всеми вытекающими.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837473
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Я о том, что документы, имена могут меняться в отличие от генокода.
Но что такое генокод и как из него ключ сделать?
Вот я и говорю, что нужен свой уникальный ID, который и вести всё время существования сущности
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837479
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmedruzenko,

Вы абсолютно в этом уверены? Извините, что спрашиваю, лично не проверял, мне нужно мнение - кто реально исследовал. Вот смотрите, допустим мне необходимо получить данные из связанных таблиц в кол-ве 10+ , т.е. 10+ Join, тут и запрос громоздкий ну это ладно и к СУБД напряг + нагрузка на сеть, а если уже вскрыты данные из этих таблиц, которые будут лукапиться и они в ОЗУ живут, разве это не быстрее произойдет ?
Я просто рассуждаю, не уверен абсолютно ))

ну как вариант можно держать локальную базу, в которой справочники будут реплицированы целиком, а рабочие таблицы - в части интересной с точки зрения текущего процесса. Так и джойнить можно. И сеть лишними данными теоретически не напряжется. И серверу дышать полегче.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837489
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakovну как вариант можно держать локальную базу, в которой справочники будут реплицированы целиком, а рабочие таблицы - в части интересной с точки зрения текущего процесса. Так и джойнить можно. И сеть лишними данными теоретически не напряжется. И серверу дышать полегче.
Например я так и делаю.
Всякие справочники, НСИ, актуальные формы/бланки храню в отдельной базе.
Серверу легче не становится, но базу сопровождать легче. И ясна ответственность за целостность -
в центре или в локациях собаки порылись
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837502
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator, мне показалось что центральная идея первого поста - отказаться от SQL как средства соединения данных рабочих и справочных, а соединять на клиенте, причем за счет пробегания по выгруженным предварительно из базы наборам данных. С тем чтобы минимизировать нагрузку на сеть и сервер. Это может быть эффективно и безопасно, или не очень, в зависимости от конкретной ситуации, от регламента бизнес процессов, объема и количества справочников, их волатильности, критичности работы по немного устаревшим версиям.

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

Но может я и недостаточно вник в идею автора, и в чем ее новизна.
И к чему там фреймы и интерфейсы? может и не понял. тогда сорри.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837527
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorВот я и говорю, что нужен свой уникальный ID
Согласен. Я ещё не встречал хорошего естественного ключа.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837568
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerGatorВот я и говорю, что нужен свой уникальный ID
Согласен. Я ещё не встречал хорошего естественного ключа.Встречаются, но они всё равно по своей сути примерно соответствуют искусственным
и время от времени возникает (нездоровое) желание их "потрогать" (в т.ч. изменить).
Так что проще не париться и на этапе проектирования втыкать везде искусственные,
с годами это начинаешь делать уже автоматом, увы.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837575
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЯ ещё не встречал хорошего естественного ключав основном по жизни чаще юзал суррогаты а вот для лоры не стал, задействовал как есть appeui/deveui
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837576
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамс годами это начинаешь делать уже автоматомда уж, прям некоторое насилие над собой пришлось применить
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837596
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите меня тёмного, но что (кто?) такое лора? Палмер?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837598
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837602
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамПростите меня тёмного, но что (кто?) такое лора? Палмер?
Разве ты не знаешь, что vavan - сотрудник компании Semtech, которая разработала для IBM Research технологию Энергоэффективных Сетей Дальнего Радиуса Действия — LPWAN (Low-Power Wide-Area Network)???
...
Часто лорой называют или одну из трех вещей, или все сразу:

1. Низкий уровень: LoRa - технология и метод модуляции. Т.е. физический уровень.
2. Повыше: LoRaWAN - протокол для сетей /с особыми характеристиками - емкость (до 1М устройств в одной сети), радиус действия ( до 10-15км на открытой местности), низкое энергопотребление/.
3. Совсем высоко LPWAN (см. выше).
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837604
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помните - Вернон Виндж все время мусолит тему локальных сетей, построенных на основе массы автономных модулей, со слабыми сигналами? Вот тут то же самое, только лучше, но не модули пока летать не умеют.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837625
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамс> Так что проще не париться и на этапе проектирования втыкать везде искусственные,
с годами это начинаешь делать уже автоматом, увы.
Вот и я о том же. Всё в мире изменчиво и связи приходится строить через линковочные таблицы
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837634
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerGatorВот я и говорю, что нужен свой уникальный ID
Согласен. Я ещё не встречал хорошего естественного ключа.

ИНН
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837637
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGunssoftwarerпропущено...

Согласен. Я ещё не встречал хорошего естественного ключа.

ИНН
Во-первых, ИНН никаких не было до 94го. И у многих ФЛ его нет до сих пор. Например, я ИНН получил по слезной просьбе бухгалтера всего года два назад.

Во-вторых, ИНН могут и отменить, давно собираются - вместо СНИЛС, ИНН, № паспорта и т.п.

В третьих, какой смысл выдумывать, когда суррогатный ключ решает все проблемы, причем - единообразно?


Уже давным-давно обсудили, в разных местах: http://www.ibase.ru/natural-keys-versus-atrificial-keys-by-tentser/

"Естественные" колючи имеют единственное оправдание - человек почему-то не хочет разобраться с SQL. Ну или, как тут 21926604 - явную лажу делает, "лукапы"...
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837638
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns> ИНН

У собак? Или у железок?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837729
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё, где я и где вышеназванные, но суть в том что deveui/appeui там естественные уникальные 64-битные айдишники/ключи и суррогатные не нужны. и это разумеется не единственный случай, но порой удобнее таки с суррогатными
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837730
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёявную лажу делает, "лукапы"а лукапы да, люблю и юзаю где уместно
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837732
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorИли у железок?у железок-то вполне бывает, а у собачек все впереди и может раньше чем думается. недавно был в грузии, так там в тбилиси практически не встречались нечипированные собаки на улицах
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837738
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGunsИНН
Слышал о случае, когда ИНН оказался совпадающим, и его пришлось менять
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837749
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGunsИНН
О, да. У кучи людей его нет, зато уже давным-давно есть прецедент, как двум людям выдали одинаковый ИНН. Просто замечательный ключ, образец того, почему естественные ключи - в топку.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837912
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanGatorИли у железок?у железок-то вполне бывает, а у собачек все впереди и может раньше чем думается. недавно был в грузии, так там в тбилиси практически не встречались нечипированные собаки на улицахНе бывает ИНН. Представь, собакин или железо платят налог...
А вот у людей подобная инфа встречается сплошь и рядом.

Номера чипов в разных странах - разные форматы, структура. И сами чипы могут переставляться, портиться...
Клеймо (тату) - на всю жизнь, но с возрастом может не читаться на собаке

Или вот ситуация:
У 1-го владельца три собаки.
Или собака в совладении у трёх владельцев.
Там такая паутина связей может быть, никакие естественные ключи не спасут.

С грузами вообще жесть. Владения, назначения, условия...
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837921
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorНомера чипов в разных странах - разные форматы, структуракогда речь о принципиально разных стандартах то разумеется кто во что горазд, я же привел лишь один пример международного стандарта где у-во естественным образом идентифицируется глобально уникальным номером
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837927
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan> у-во естественным образом идентифицируется глобально уникальным номером

А это каким-то образом гарантируется
(я не в курсе, интересуюсь)? Или как MAC?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837932
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, производители чипов присваивают непересекающиеся айдишники
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837934
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan, нуу... У холодильников MAC может быть... А у пылесосов со стиралками?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837938
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator, "если бы они были покрыты шерстью, то в ней бы точно водились блохи" (С)
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39838064
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan, "достаточно передебажить и перефронтланивать" (me)
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39838136
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerкак двум людям выдали одинаковый ИНН
Мне в прошлом выдали два разных ИНН :)
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39838589
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan> производители чипов присваивают непересекающиеся айдишники

Производителей, наверняка, много больше одного, и я
бы на эту непересекаемость (и тем более уникальность)
не полагался. В любом случае, это до первого "залёта".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39838631
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, мне сложно представить нормального производителя к-й позволит себе использовать чужие айдишники т.к. с ним просто не станут работать, так что "залет" пожалуй возможен лишь для их у-в в мусорную корзину. как и если в своем адресном пространстве дублеров умудрятся создать, работать сможет лишь одно


да, чуть было не забыл. порой можно не вводить суррогатные ключи даже если нет подходящего естественного, потому как сама среда хранения может предоставлять естественным образом уникальные ключи, как например rowid в оракле. у них конечно есть определенные минусы но для некоторых применений вполне могут оказаться подходящими
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39838634
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievМне в прошлом выдали два разных ИНН :)
Угу. Я в своё время писал для бюро кредитных историй алгоритм, который решал "правда ли, что Вася Пупкин, пришедший за кредитом в банк А, и Пупа Васькин, пришедший за кредитом в банк Б, один и тот же человек или разные". Там мнооооого весёлого было, особенно с учётом последствий неверного решения :)
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839113
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan> мне сложно представить нормального производителя
vavan> к-й позволит себе использовать чужие айдишники

Я не в теме, но почти уверен, что это может быть и ненамеренно.

vavan> как и если в своем адресном пространстве дублеров
vavan> умудрятся создать, работать сможет лишь одно

Ну MAC-и ведь дублировали. И тоже не "назло соседу".


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

Не, нельзя. Этьо anti-best-practice.

C некоторой натяжкой можно сказать, что СК можно не вводить
там, где он... гм... "не требуется" - тупо всякие логи/архивы плоско
складируются без ссылок, например, но и там ИМХО лучше ввести
для перестраховки, чтобы не пришлось довводить в будущем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839148
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустампочти уверен, что это может быть и ненамереннонечаянно использовать чужой идентификатор организации? ну не знаю, на практике не сталкивался но как с этим поступать если вдруг произойдет написал выше
Гаджимурадов РустамMAC-и ведь дублировали. И тоже не "назло соседу"ну здесь не маки. и если кто накосячит то просто сам за это поплатится по сути, в конкретной лора-сети таких у-в не будет
Гаджимурадов РустамНе, нельзя. Этьо anti-best-practice
кому может и нельзя, а кто и сам себе best practice определяет
Гаджимурадов РустамC некоторой натяжкой можно сказать, что СК можно не вводить
там, где он... гм... "не требуется" - тупо всякие логи/архивы плоско
складируются без ссылок, например, но и там ИМХО лучше ввести
для перестраховки, чтобы не пришлось довводить в будущемместами и без натяжки ибо место лишнее СК занимает будучи не нужным, а многолетнее использование без него (например для хранения не только скажем логов но и десятков миллиардов записей первичных тарификационных данных) показывает что это вполне подходящее решение и поводов для доводки в сторону введения СК нет и не предвидится
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839162
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan> в конкретной лора-сети таких у-в не будет

Если они вдруг попадутся одновременно? Так это вовсе необязательно.

> кому может и нельзя, а кто и сам себе best practice определяет

Кому и кобыла невеста, да. Всякие "уникальные ключи" есть
много где, по такой логике можно было бы вообще СК не юзать.
В таких клинических случаях лучше уж тогда на date-time UK
повесить (не обусловленный задачей, конечно).

> ибо место лишнее СК занимает будучи не нужным

Блин, я даже хотел выше написать, что "на спичках не экономят",
но не стал, потому что очевидно.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839172
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanкому может и нельзя, а кто и сам себе best practice определяет
Помнится, один такой самостоятельный товарищ написал - я, мол, выбрал такой путь, что меня ждёт? Я ему ответил: "Представь себе, что по экватору Земли через каждые пять метров лежат грабли. Так вот, тебя ожидает кругосветное путешествие".
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839173
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Слышал о случае, когда ИНН оказался совпадающим, и его пришлось менять
softwarerзато уже давным-давно есть прецедент, как двум людям выдали одинаковый ИНН.
ИНН не может быть использован для идентификации.
1. Есть ошибки - это рассмотрели.
2. Есть не у всех - тоже рассмотрели
3. Есть филиалы с ведением собственной бухгалтерии, собственными расчетными счетами, правом заключения договоров, но имеющие единый ИНН с головной конторой.
4. Муниципалы. Похоже на пункт 3, но там на одном ИНН могут сидеть не филиалы, а полноценные организации.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839217
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам> Всякие "уникальные ключи" есть
> много, по такой логике моно было бы вообще СК не юзать.
> В таких клинических случаях лучше уж тогда на date-time UK
> повесить (не обусловленный задачей, конечно).

Это относится к сказанному про rowid, конечно же, а не про ЕК.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839234
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЭто относится к сказанному про rowid, конечно же, а не про ЕК.
Ну, про rowid можно сказать очень просто - он годится как ключ для временных данных, не представляющих сколько-нибудь заметной ценности, и только для них.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839313
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer> и только для них.

Именно. Да и для них не очень годится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839378
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... Для внешних данных типа ОКАТО вполне сгодятся их ключи. Мы ж не правим там ничего.
Но вот в разных странах, в разных системах всё по разному. Приходится придумывать свою "ключницу", отличную от https://ru.wikipedia.org/wiki/Общероссийские_классификаторы_технико-экономической_и_социальной_информации
Например, чтобы понять, что "Английский канал" и "Ла-Манш" это одно и то же.
Впрочем, есть SOLAS, IMO и тёмный лес
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839424
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorНу... Для внешних данных типа ОКАТО вполне сгодятся их ключи.
Угу. До тех пор, пока от Центробанка вдруг не приезжает "Ой, мы ошиблись, БИК этого банка не такой-то, а сякой-то" (реальный случай).
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839497
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerGatorНу... Для внешних данных типа ОКАТО вполне сгодятся их ключи.
Угу. До тех пор, пока от Центробанка вдруг не приезжает "Ой, мы ошиблись, БИК этого банка не такой-то, а сякой-то" (реальный случай).Ну... центробанки не указ Diners Club'у.

Но вот другой пример. Наконец-то у нас тута телефонные номера можно передавать между операторам связи (а ля X.75)
Вот тел.номер (20 символов - X.121). Вот издеваться над ним можно как хочешь в своей сетке. Хоть укорачивать, хоть с восьмёрки начинать, хоть с кода региона... В своём пространстве. И на нём строить свои внутренние ключи. Но вдруг при передаче другому оператору эти ключи идут лесом. У другого оператора свои страны и свои номера.
Пример:
8916xxxxxxx
+7916xxxxxxx
+4759xxxxxx
+479xxxxxxx
0211 4082 4082
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839811
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЕсли они вдруг попадутся одновременно?не могут быть зарегистрированы в сети с одинаковыми айдишниками, я контролирую

Гаджимурадов РустамВсякие "уникальные ключи" есть
много гденаверняка, я и говорю что вот лишь единственный пример привел, только здесь не в кавычках, а по стандарту, если кому это о чем-то говорит конечно
Гаджимурадов Рустам"на спичках не экономят"да на чем только не экономят, вы просто видимо не в курсе
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39839816
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустами для них не очень годитсяrowid много для чего может сгодиться и отнюдь не только для временных, ну да я писал уже про первичные тарификационные и логи например
...
Рейтинг: 0 / 0
80 сообщений из 80, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как скопировать поля из одного Query в другой ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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