Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.06 c
15-1337084902
alexdn
2012-05-15 16:28
2013.03.22
Так что там с шаттлами?


6-1259931784
Kanaris
2009-12-04 16:03
2013.03.22
Как реализовать "ретранслятор" запросов через сокеты?


15-1330664086
CleriC
2012-03-02 08:54
2013.03.22
HotKey в среде Delphi (не могу назначить)


2-1347011404
alexdn
2012-09-07 13:50
2013.03.22
Текст на картинку (канву)


15-1351974603
Юрий
2012-11-04 00:30
2013.03.22
С днем рождения ! 4 ноября 2012 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский