Главная страница
    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.077 c
15-1340224203
Юрий
2012-06-21 00:30
2013.03.22
С днем рождения ! 21 июня 2012 четверг


15-1336765355
Rouse_
2012-05-11 23:42
2013.03.22
Схемы защиты ПО


6-1256849792
Демо
2009-10-29 23:56
2013.03.22
WSARecv или ReadFile?


2-1346166751
avil
2012-08-28 19:12
2013.03.22
tcombobox со своими правилами


15-1331641742
Kerk
2012-03-13 16:29
2013.03.22
Про профессию





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский