Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизКакой таблице принадлежит запись со значением ключа? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.077 c