Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
ВнизAизический номер записи в таблице через SQL запрос Найти похожие ветки
← →
pavelsinicinV (2002-11-03 20:29) [0]Нужно узнать физический номер записи в таблице через SQL запрос, аналогично функции RECNO() для Table.
← →
Ihor Osov'yak (2002-11-03 20:35) [1]Большинство НОРМАЛЬНЫХ движков баз даных не имеют такого понятия как физический номер записи (во всяком случае документированого).
И в теории реляционных баз такого понятия нет. Ибо на практике это почтьи никогда не нужно. А если и нужно, то в 90 процентах случаев это есть следствие не совсем правильного проетирования структуры базы данных.
← →
pavelsinicinV (2002-11-03 20:53) [2]я вообще то в курсе, но заморочка в другом.... что как бы это я не знал имеется две таблицы которые между собой связаны по одному полю через физический номер записи в другой таблице.
Как быть ?
← →
Anatoly Podgoretsky (2002-11-03 21:05) [3]В могилу
← →
MsGuns (2002-11-03 21:10) [4]Две таблицы НЕ МОГУТ БЫТЬ СВЯЗАНЫ ЧЕРЕЗ ФИЗИЧЕСКИЙ НОМЕР. Т.к. невозможно придумать вообще такую связь и главное, зачем она нужна. Если нужна связь мужду таблицами "Один-ко-многим", то для этого используют УНИКАЛЬНЫЕ КЛЮЧИ (идентификаторы), которые ОДНОЗНАЧНО идентифицирую СВОЮ запись среди всех в НД.
Типичный пример (кадровая структура):
Таблица 1. Главная. Список сотрудников
1. IDN integer Уникальный номер чела (Primary Key)
2. FIO VARCHAR Фамилия
3. Name VARCHAR Имя
....
Таблица 2. Подчиненная. Состав семьи сотрудника
1. IDNF integer Уникальный номер члена семьи (Primary Key)
2. IDN integer Уникальный номер чела (Primary Key)
(используется для связки с Главной "Много к одному"
3. FFIO VARCHAR Фамилия
....
Часто поля-идентификаторы делают AUTOINC для того, чтобы НЕ ЗАБОТИТЬСЯ О УНИКАЛЬНОСТИ создаваемого автоматически ключа. Хотя в некоторых БД (Paradox, например) автоинкременты создаются не всегда уникальными, что приводит к сбоям.
Недостаток автоинкремента - невозможность узнать его значение при вставке до того, как запись будет постирована в БД (Иногда это бывает весьма жедательно, хотя и не необходимо).
← →
pavelsinicinV (2002-11-03 21:15) [5]А де подсказка ? или совет ?
← →
pavelsinicinV (2002-11-03 21:19) [6]Наверно я не совсем точно выразился .......
Я хотел сказать что содержимое поля "А" -содержит физический номер записи в другой таблице "В".
И я хотел бы через SQL если это возможно определить у таблицы "В" номер записи.
← →
MsGuns (2002-11-03 21:27) [7]>pavelsinicinV (03.11.02 21:19)
>Наверно я не совсем точно выразился .......
>Я хотел сказать что содержимое поля "А" -содержит физический номер записи в другой таблице "В".
>И я хотел бы через SQL если это возможно определить у таблицы "В" номер записи.
В dbf, конечно, есть такое понятие как "Номер записи". Но если этот номер указывается в качествее ссылки в другой таблице, то возникает вопрос:
Если я удалил из первой таблицы 1-ю по порядку запись, то у всех остальных она по идее изменится на 1 минус. Так что, во второй таблице делать сквозной декремент ссылок ? Товарищ, ты или что-то не договариваешь или это просто ну СОВЕРШЕННО УНИКАЛЬНАЯ БД, где связи между таблицами протянуты черех их физические номера.
Хотя если такая таблица не редактируется (типа трансферной с какой-то пакетной инфой), то это, возможно, и имеет какой-то смысл..
← →
Ihor Osov'yak (2002-11-03 21:37) [8]Советы
Вариант 1. Снять штаны и спеть разлуку. (В оригинале звучит так:
Знімай штани, співай розлуку)
Вариант 2 (в продолжение варианта 1).
- Сделать копию базы (на всяк случай и чтобы потом помнить дурь свою)
- Во вторую табличку ввести доп. поле, которое будет ключом . Если его нельзя сделать ключом - придется забыть про ссылочную целосность, но об этом потом. Если его нельзя сделать ключом, то сделайте по нему хотя бы уникальный индекс.
- С помощью какой-то матери, Господа Бога, кувадлы, шаманских заклинаний, примитивной програмулины, ручками собственными или всего отдела бухгалтерии или автоватизации занисите в это поле значения той штоковины, что Вы понимаете под физическим номером записи в Вашем случае.
- после выполнения пред пункта напрочь забудте про такое понятие, как физический номер.
- создайте связь (внешний ключ) между первой и второй табличкой, используя вновь созданое поле - конечно, если вновь созданое поле вам удалось задействовать в качестве праймери ки. Если этого в силу каких-то не очень убедидельных доводов все-же не сделано - наложите уникальный индекс. Это во всяком случае подымет быстродействие запросов, где эти таблички обьединяются по вновь созданому полю. Конечно это не будет гарантироать ссылочной целосности.
- впредь такой глупости не делать самому и бить другим по рукам, в случае попытки это делать
- надеть штаны и закончить петь разлуку. Или просто сменить мотив.
← →
MsGuns (2002-11-03 23:09) [9]>Ihor Osov"yak © (03.11.02 21:37)
Ну зачем же сразу по жопе-то ? Может, огурец все сделал верно (или кто-то до него), просто объяснить толком не мо ? Ну не верю я, что кто-то в здравом уме мог до ТАКОГО додуматься. Может просто pavelsinicinV понимает под ФИЗИЧЕСКИМИ номерами записей их уникальные индексы (ключи, идентификаторы,- обзови их хоть шахтерской лопатой) ?
← →
Ihor Osov'yak (2002-11-03 23:28) [10]2 MsGuns © (03.11.02 23:09)
Да потому, что иногда полезно.... Да и без злости я особой, так, любя (для начала). Ну, а в плане соображоловки, слегка не туда повернутой - фантазия кулибиных границ не имеет .. Не раз приходилось в этом убеждатся и иногда даже разгребать. Вообще то, этот случай, как бы сказать, уникальный ... Ну разве что, см. MsGuns © (03.11.02 21:27), последнее приложение..
И на последок, про шахтерскую лопату - если это так, то взбучка тем более необходима. Чтобы вредь осознал, что собеседник воспринимает то, что ему говорят, а не то, что в говорящего на уме...
← →
MsGuns (2002-11-03 23:33) [11]>Ihor Osov"yak © (03.11.02 23:28)
>Чтобы вредь осознал
:))))))))))
← →
Ihor Osov'yak (2002-11-04 01:43) [12]2 MsGuns © (03.11.02 23:33)
Вообще-то должно быть впредь, но так даже более подходит.
2 pavelsinicinV - сорри за наезды, смею надеятся, что Вы сделаете конструктивные выводы.
← →
Бланк (2002-11-04 09:00) [13]А насчет номера... Блин я такие вещи видел в двух программах (одна слава богу приказала долго жить): у ГАИшников и мое рабочее ПО, разработанное ВЫДАЮЩЕЙСЯ компанией "КомпьютерИнтерСервис", г.Киев, мать их !..
← →
Anatoly Podgoretsky (2002-11-04 09:09) [14]Такое иногда бывает в фокспро, там есть такая возможность устроить себе быструю смерь. Право такой индекс (связь) имеет на существование, но только на ограниченное время для временных таблиц
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c