Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Какой таблице принадлежит запись со значением ключа?   Найти похожие ветки 

 
Drowsy ©   (2012-08-02 22:32) [0]

В базе данных (Firebird 2.0) есть таблицы, с ключевыми полями Code, у которых один общий генератор. Как получить название таблицы, которой принадлежит запись с определённым значением ключа?


 
Ega23 ©   (2012-08-02 22:36) [1]


> В базе данных (Firebird 2.0) есть таблицы, с ключевыми полями
> Code, у которых один общий генератор. Как получить название
> таблицы, которой принадлежит запись с определённым значением
> ключа?

Никак, задача нерешаемая.


 
Dennis I. Komarov ©   (2012-08-02 22:56) [2]

Ключ уникален в пределах одной таблицы

> Никак, задача нерешаемая.
Ну почему? Перебрать все на предмет присутствия искомого :)
Да, через анус, но страдать должен тот кто придумал подобную архитектуру...


 
Ega23 ©   (2012-08-03 06:35) [3]


> Ключ уникален в пределах одной таблицы


Да, только у него несколько таблиц. Что мне мешает взять Next_Val и во все эти таблицы вставить по записи? Что мне мешает вставить по десятку записей во все эти таблицы, вообще не обращаясь к генератору? Что мне мешает рестартануть генератор с какого-то значения?
В сформулированном виде задача однозначно не решается.


 
Кщд   (2012-08-03 08:03) [4]

>Dennis I. Komarov ©   (02.08.12 22:56) [2]
> Да, через анус, но страдать должен тот кто придумал подобную
> архитектуру...

сквозной идентификатор - это разве дурная архитектура?)


 
Anatoly Podgoretsky ©   (2012-08-03 08:35) [5]

> Кщд  (03.08.2012 08:03:04)  [4]

Дурость в поиске


 
Ega23 ©   (2012-08-03 10:13) [6]


> сквозной идентификатор - это разве дурная архитектура?)

Нет, не дурная. Дело не в ней.


 
AV ©   (2012-08-03 10:17) [7]

а-ля так?

select * from (
select
"ТАБЛА1" А, select 1 from ТАБЛА1 where ID_ТАБЛА1 = p_KEY Б
union
select
"ТАБЛА2" А, select 1 from ТАБЛА2 where ID_ТАБЛА2 = p_KEY Б
...
) CCC
where ССС.Б is not null


 
Ega23 ©   (2012-08-03 10:44) [8]


> а-ля так?


см. Ega23 ©   (03.08.12 06:35) [3]


 
AV ©   (2012-08-03 10:58) [9]

а если [3], то их будет отлично от нуля.
но тем не менее исходная задача

> Как получить название таблицы, которой принадлежит запись
> с определённым значением ключа?

решена же?


 
Dennis I. Komarov ©   (2012-08-03 11:06) [10]


> Да, только у него несколько таблиц...

Зыж не тебе, а автору...


 
Drowsy ©   (2012-08-04 01:57) [11]

архитектуры ещё нет. пока пытаюсь придумать. в - общем, в связи с вышеуказанным, ничего другого не придумывается, как создать ещё пару таблиц
1) Список таблиц (TabCode, название таблицы)
2) связующая таблица (код с генератором MainCode, TabCode);
3) во все таблицы "поиска" добавить поле (MainCode)
В триггерах таблиц "поиска" изменять связующую таблицу и поле MainCode в самих таблицах поиска.

и делать выбор по MainCode.


 
turbouser ©   (2012-08-04 02:35) [12]


> Drowsy ©   (04.08.12 01:57) [11]

Ужас какой. Что за задача?


 
Drowsy ©   (2012-08-04 05:36) [13]

общая задача такая : рассчитывать и компоновать в графике разное оборудование. таблицы - описания разных типов оборудования (количество полей и их типы в таблицах очень разные). для компоновки в графике, эти таблицы хранят картинки оборудования. для хранения координат графической компоновки, создаётся таблица (Х, Y, Z + (и тут вопрос о внешней ссылке на одну из записей одной из таблиц, откуда это оборудование вытянуто))


 
Drowsy ©   (2012-08-04 07:47) [14]

Если изобразить архитектуру [11] и в качестве внешней ссылки в таблице компоновки использовать MainCode, то все необходимые запросы поиска вроде можно будет реализовать.


 
Inovet ©   (2012-08-04 08:17) [15]

> [7] AV ©   (03.08.12 10:17)
> where ССС.Б is not null

ты хотел написать "where ССЗБ is not null"?


 
sniknik ©   (2012-08-04 12:09) [16]

> и тут вопрос о внешней ссылке на одну из записей одной из таблиц, откуда это оборудование вытянуто
лучше бы у тебя тут вопрос о прочтении теории по базам возник...

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


 
Drowsy ©   (2012-08-04 12:50) [17]


> sniknik ©   (04.08.12 12:09) [16]

Наверное, я не очень понял, но мне кажется, что здесь
Drowsy ©   (04.08.12 01:57) [11] именно так и сделано ("связующай"это и есть "таблица для общих обработок"). Можно, конечно, перетащить из всех таблиц в неё общее для всех таблиц поле "картинка" (других общих просто нет), но это не упростит общую архитектуру.


 
sniknik ©   (2012-08-04 12:58) [18]

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

должно быть, ИМХО, - по ключу читаешь из общей таблицы тип, и по нему точно знаешь где лежат "персонализированные данные". обращаешься (или джойниш) уже к конкретной таблицу... работаешь с одной, т.к. там только отличия, общей обработки не получится. а ты почему то пытаешься сканировать все.


 
Drowsy ©   (2012-08-04 13:07) [19]

сканировать всё придётся, чтобы определить, какое оборудование выбрано и размещено в графике -> таблица "Компоновка" (3 координаты и ссылка на уникальное поле "общей таблицы" MainCode.


 
sniknik ©   (2012-08-04 15:53) [20]

> сканировать всё придётся
+ 1 к
> Дурость в поиске
и
> ты хотел написать "where ССЗБ is not null"?

базы данных, sql, для того и нужны чтобы хранить данные в структурированном виде, предоставлять инфу по простым запросам (известно что где лежит, по какому полю проверка, что с чем объединить можно, как обрабатывать). архитектура базы должна быть направлена на это. если у тебя база это просто кучка разнородных таблиц которые нужно сканировать чтобы хоть что-то выбрать ... ССЗБ, другого не скажешь.

p.s. зря "встрял", все было сказано до меня.


 
Drowsy ©   (2012-08-04 16:46) [21]


> sniknik ©   (04.08.12 15:53) [20]

"сканированием" при данной архитектуре будет один запрос к 3-м таблицам. более простого решения я не нахожу и никто не предложил.


 
sniknik ©   (2012-08-04 16:58) [22]

> и никто не предложил.
???
я предлагал запрос к одной таблице.


 
Drowsy ©   (2012-08-04 17:01) [23]


> sniknik ©   (04.08.12 16:58) [22]

да?! ладно, значит я дурак.


 
Anatoly Podgoretsky ©   (2012-08-04 18:24) [24]

Ты хочешь подтверждения?


 
Drowsy ©   (2012-08-04 18:34) [25]

да


 
sniknik ©   (2012-08-04 20:44) [26]

к какой форме нормализации приведена твоя "база данных"?


 
Drowsy ©   (2012-08-04 22:33) [27]


> sniknik ©   (04.08.12 20:44) [26]

Спасибо за полезный вопрос, Николай! Моя задумалась серьёзно..


 
turbouser ©   (2012-08-04 22:51) [28]


> Drowsy ©   (04.08.12 22:33) [27]

RTFM, RTFB


 
Dennis I. Komarov ©   (2012-08-05 21:16) [29]


> к какой форме нормализации приведена твоя "база данных"?

хорошо пошутил - вовремя... :)))



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.06 c
15-1338409802
Юрий
2012-05-31 00:30
2013.03.22
С днем рождения ! 31 мая 2012 четверг


15-1335007367
Phoenix7
2012-04-21 15:22
2013.03.22
delphi & web


15-1347443626
KSergey
2012-09-12 13:53
2013.03.22
Сроки рассмотрения вариантов перевода для MSDN


2-1336839148
тщгыук
2012-05-12 20:12
2013.03.22
а ля Self внутри with do


15-1341592927
alexdn
2012-07-06 20:42
2013.03.22
Вот такая реклама